Hallo zusammen,
Ich habe ein Problem. Ich versuche via VBScript Daten von meiner DB zu holen und in Excel-Files zu schreiben.
De Prozess lauft im Hintergrund ab und ich sollte 5 Excel-Files erhalten. Sobald ein File fertig ist, wird es auf dem Desktop gespeichert und das nächste wird bearbeitet.
Das funktioniert alles wunder. Nur das Problem ist, sobald ein File fertig ist und ich es öffne, lädt es auch das File welches gerade abgefüllt wird.
Nun erhalte ich eine Error-Meldung, sobald ich im bearbeitenden File in ein leeres Feld klicke.
Wie kann ich das beheben?
Hoffe habe es irgendwie verständlich formuliert.
Ich habe ein Problem. Ich versuche via VBScript Daten von meiner DB zu holen und in Excel-Files zu schreiben.
De Prozess lauft im Hintergrund ab und ich sollte 5 Excel-Files erhalten. Sobald ein File fertig ist, wird es auf dem Desktop gespeichert und das nächste wird bearbeitet.
Das funktioniert alles wunder. Nur das Problem ist, sobald ein File fertig ist und ich es öffne, lädt es auch das File welches gerade abgefüllt wird.
Nun erhalte ich eine Error-Meldung, sobald ich im bearbeitenden File in ein leeres Feld klicke.
Wie kann ich das beheben?
Hoffe habe es irgendwie verständlich formuliert.
Quellcode
- Option Explicit
- DIM Cn, sql, rs, item, objExcel, objWorkbook, objWorksheet, count, FileName, check
- DIM i, x, z, y, b, n, q, a
- Dim arrItem(300)
- Dim arrDB
- Dim arrCondition
- Dim arrContens
- Dim arrTitle
- Dim arrText
- arrCondition = Array("Mitgliedtyp","Mitgliedtyp","BusinessRelation","FachzeitschriftAbo","FachzeitschriftMAGeschenk","ZeitschriftAboKontakt","FachzeitschriftGratisAbo","ZeitschriftAboGratis")
- arrDB = Array("Companies","Companies","Companies","Companies","Contacts","Contacts","Companies","Contacts")
- arrContens = Array(1,2,8,1,1,1,1,1)
- arrTitle = Array("Aktivmitglieder","Passivmitglieder","Partner","Fachzeitschriften_(zahlbar)","Fachzeitschriften_Mitarbeiter","Fachzeitschrift_(zahlbar)","Fachzeitschrift_Gratis","Fachzeitschrift_Gratis")
- arrText = Array("Mitglieder","Firma_Fachzeitschriften","Kontakt_Fachzeitschriften","Firma_Fachzeitschriften_Gratisabo","Kontakt_Fachzeitschriften_Gratisabo")
- i = 0
- x = 0
- Z = 1
- y = 0
- b = 2
- n = 0
- a = 1
- q = true
- check = true
- SET Cn = CreateObject("ADODB.Connection")
- Set objExcel = CreateObject("Excel.Application")
- objExcel.Visible = false
- Cn.ConnectionString = "Provider = SQLOLEDB; Data Source = DB; User ID = User; Password = PW; Initial Catalog = Tabelle;"
- Cn.Open 'Verbindung herstellen Combit DB
- Aktivmitglieder()
- IF Cn.State = 1 THEN
- Cn.Close
- objExcel.DisplayAlerts = false
- objExcel.Quit
- SET Cn = Nothing
- set objExcel = Nothing
- set objWorkbook = Nothing
- Set objWorksheet = Nothing
- MsgBox("Closed")
- ELSE
- MsgBox("Failed")
- END IF
- Sub Aktivmitglieder()
- While check = true
- if(q = true) then
- Set objWorkbook = objExcel.Workbooks.Add()
- q = false
- END if
- If(n >= 7) then
- check = false
- End If
- Set objWorksheet = objWorkbook.Worksheets(a)
- objWorksheet.Name = arrTitle(i)
- objExcel.Cells.EntireColumn.AutoFit
- Filename = "C:\Users\Administrator\Desktop\" & arrText(x) & ".xlsx"
- sql = "SELECT COUNT(*) FROM dbo." & arrDB(i) & " Where " & arrCondition(i) & "=" & arrContens(i)
- SET rs = Cn.Execute(sql)
- count = rs(0)
- IF (count = 0) OR (IsNull(count)) THEN
- MsgBox("No Items Found")
- ELSE
- sql = "SELECT COLUMN_NAME FROM information_schema.COLUMNS WHERE table_name = '" & arrDB(i) & "'"
- SET rs = Cn.Execute(sql)
- Do UNTIL rs.EOF
- for each item IN rs.Fields
- if (item = "") OR (IsNull(item)) then
- arrItem(y) = "Empty"
- ELSE
- arrItem(y) = item
- END IF
- objWorksheet.Cells(1,z).Font.FontStyle = "Bold"
- objWorksheet.Cells(1,z)= arrItem(y)
- z = z + 1
- y = y + 1
- Next
- rs.MoveNext
- Loop
- y = 0
- Z = 1
- sql = "SELECT * FROM dbo." & arrDB(i) & " Where " & arrCondition(i) & "=" & arrContens(i)
- SET rs = Cn.Execute(sql)
- DO UNTIL rs.EOF
- For Each item IN rs.Fields
- IF (item = "") OR (IsNull(item)) THEN
- arrItem(y) = ""
- ELSE
- arrItem(y) = item
- END IF
- objWorksheet.Cells(b,z)= arrItem(y)
- y = y + 1
- z = z + 1
- NEXT
- b = b + 1
- y = 0
- z = 1
- rs.MoveNext
- LOOP
- i = i + 1
- b = 2
- n = n + 1
- a = a + 1
- If(n = 3) or (n = 4) or (n = 6) or (n = 7) or (n = 8) then
- q = true
- x = x + 1
- a = 1
- objWorkbook.SaveAs FileName
- END IF
- END If
- Wend
- END SUB
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Ovoxo“ ()