Hi,
ich hab vor einiger Zeit mal eine Klasse für den Zugriff auf Excel geschrieben. Ist mit Sicherheit noch nicht das Non-Plus-Ultra, aber sie funktioniert. Ich will sie irgendwann, wenn mal Zeit ist, neu machen.
Packe die Codezeilen in den Declaration - Teil einer Script-Bibliothek.
Class cExcel
objExcel As Variant
objSheet As Variant
' Konstruktor
Sub New
Set objExcel = Nothing
Set objExcel = CreateObject("Excel.Application")
End Sub
' Destruktor-Prozedur
Sub Delete
Set objExcel = Nothing
End Sub
' Bringt Excel als Vollbild in den Vordergrund
Sub ActivateExcel
objExcel.Visible = True 'Excel sichtbar machen
objExcel.Windows(1).WindowState = -4137
objExcel.Windows(1).Activate
End Sub
' Erstellt eine neue Arbeitsmappe
Sub NewWorkbook
Call objExcel.Workbooks.Add
Set objSheet = objExcel.Workbooks(1).Worksheets(1)
End Sub
' Schreibt einen Wert in die angegebene Zelle
Sub SetCellValue(sZiel As Variant, sValue As Variant)
objSheet.Range(sZiel).Value = sValue
End Sub
' Formatiert einen Bereich als Text
Sub FormatRangeText(sZiel As Variant)
objSheet.Columns(sZiel).Select
objExcel.Selection.NumberFormat ="@"
objSheet.Range("A1").Select
End Sub
'Formatiert ein Arbeitsblatt mit den Attributen vertikale Textausrichtung oben und
'optimale Spaltenbreite
Sub FormatRangeAlignment
objSheet.Cells.Select 'Gesamtes Arbeitsblatt markieren
objExcel.Selection.VerticalAlignment = -4160 'Vertikale Ausrichtung nach oben
objExcel.Selection.Columns.AutoFit 'Optimale Spaltenformel
objExcel.Selection.Rows.AutoFit 'Optimale Spaltenhöhe
objSheet.Range("A1").Select
End Sub
End Class
Beispiel:
...
Dim oExcel As cExcel
Set oExcel = New cExcel 'Erstellen eines OLE-Objects
Call oExcel.NewWorkbook 'Erstellt neue Arbeitsmappe
Call oExcel.SetCellValue("A1", doc.Feldname(0)) 'Feldinhalt in Zelle A1
Call oExcel.ActivateExcel 'Excel in den Vordergrund
Delete oExcel
...
Axel