AW: Schwere Excel-Fehlermeldung erzeugen
28.05.2008 09:23:41
Timo
Nun gut... Vielleicht kannst du mir dann ja bei dem Code weiterhelfen, ich habe ihn nämlich schon mehrfach gecheckt und weiß beim besten Willen nicht, an welcher Stelle er aus welchem Grund abbricht. Sicher ist irgendwo ein Fehler drin, die Frage ist nur, wo...
Folgendes wird gemacht: Aus der einen Excel-Datei werden alle Spaltenköpfe zeilenweise in eine Textdatei geschrieben.
Da ich am Ende die korrekte Textdatei vorliegen habe, gehe ich davon aus, daß das Skript sporadisch beim Schließen der Arbeitsmappen oder beenden von Excel abbricht.
Option Explicit
'Variablenbelegung
Dim XL, NewWorkbook,OldWorkbook, FSO, DL, Nr, DateiName, i, inhalt, textfile
'Mit dieser Funktion mache ich die Konstanten (xlText, etc. ) von Excel bekannt, ist in VBScript erforderlich
ImportObject "Excel.Application"
'Diese Konstanten-Datei wird bei mir nicht gebraucht, deswegen auskommentiert (')
' ImportObject "Scripting.FileSystemObject"
'Hier ist die Funktion zum Einbinden der Konstanten hinterlegt
Function ImportObject(sClass)
Dim TLA, TLI, CEnum, enConstant, Object
Set Object = CreateObject(sClass)
Set TLA = CreateObject("TLI.TLIApplication")
Set TLI = TLA.InterfaceInfoFromObject(Object).Parent
For each CENum in TLI.Constants
If Left(CEnum.Name, 1) "_" Then
For Each enConstant In CEnum.Members
If Left(enConstant.Name, 1) "_" Then _
ExecuteGlobal "Const " & enConstant.name & " = " & enConstant.value
Next
End If
Next
Set ImportObject = Object
End
Function
'Ende der Funktion
'Diese Zeile braucht man eigentlich nicht... Hier kann man Übergabeparameter eintragen.
' Set DL = WScript.Arguments
'Diese Zeile brauche ich eigentlich auch nicht... Erstellt e
' Set FSO = CreateObject("Scripting.FileSystemObject")
'Jetzt gehts los: Wir erzeugen uns ein Excel-Objekt.
Set XL = CreateObject("Excel.Application")
'Hier sage ich, daß Excel bei der Ausführung nicht sichtbar sein soll.
XL.Visible = false
'ScreenUpdating aus... Das kann u. U. schneller sein.
XL.ScreenUpdating = false
'Jetzt öffne ich die Testdatendatei
Set OldWorkbook = XL.Workbooks.Open("C:\Temp\Primärdaten.xls")
'Dann füge ich ein neues Workbook dazu
Set NewWorkbook = XL.Workbooks.Add
'Zähler setzen
i = 1
'inhalt initialisieren
inhalt = "X"
'Schleifenbegin
Do
'Umkopieren der Parameternamen in das neue Workbook. Ich gehe davon aus, daß die Parameternamen _
in der ersten Zeile stehen
NewWorkbook.Worksheets(1).Cells(i, 1).Value = OldWorkbook.Worksheets(1).Cells(1, i).Value
'Zähler erhöhen
i = i + 1
'Jetzt solange laufen, bis nichts mehr in der Zelle steht
Loop While (OldWorkbook.Worksheets(1).Cells(1, i).Value "")
'Warnungen von Excel ausschalten
XL.Application.DisplayAlerts = False
'Das neue Workbook als Textdatei speichern... Die lese ich dann nachher zeilenweise ein.
NewWorkbook.SaveAs "C:\TEMP\Primärdaten.txt", xlText
'Alles Schließen und beenden
NewWorkbook.Close False
'Neu hinzugekommen:
'AltesWorkbook auch schliessen.
OldWorkbook.Close False
XL.Application.DisplayAlerts = True
XL.Quit