version=1.0.1 vdate=18.01.2015 fname=xlsxexporter_101.cls ns=%NAMESPACE% fpath=/vba/access ====== [VBA][Access] XlsxExporter 1.0.1 ====== //Exporter MS Access nach Excel. Die Einfache Version.// ==Version %%version%% %%vdate%%== >//Die Klasse hat versteckte Attribute. Damit diese aktiv übernommen werden reicht es nicht aus, den Code in ein neues Modul zu kopieren. Man muss das Modul aus der Datei nach VBA importieren.// >{{popup>:vba:vba_importfile.png|Bild zum Import}} {{%%fname%%|Download %%fname%% (V-%%version%%)}} Eine kleine Klasse um schnell Daten aus Access nach Excel zu exportieren. Sie bietet die Möglichkeit, dann gleich noch einige Excel-Formatierungen durchzuführen. Die neue, ausgebaute und komplexere Version findest du hier: [[vba:access:xlsxexporter]] ===== Referenzen ===== **Im VBA musss eine Referenz auf '%%MicrosoftExcel XY ObjectLibrary%%' gesetzt sein** ===== Definitionen ===== >Genauere Doumentaion folgt Wird das Objekt terminiert, wird automatisch die Methode quit() ausgeführt. Die Änderungen werden dabei gespeichert und die internen Objekte (Excel-Instance,Workbook etc.) geschlossen und abgebaut. ==== Enumerator ==== === xeParams === Diekombinierbaren Parameter für den Export Die Parameter können kompiniert werden. zB. xeReplaceExistFile+xeHasFieldNames Public Enum xeParams xeNone = 0 'Kein Parameter xeReplaceExistFile = 2 ^ 0 'Falls die Exportdatei bereits exisitert, kann diese ersetzt werden xeHasFieldNames = 2 ^ 1 'Feldnamen werden in die erste Zeile geschrieben End Enum ==== Methoden ==== === export() === object.export(source, filepath [,spreadsheettype [,params]]) Public Sub export( _ ByRef iSource As Variant, _ ByVal iFilePath As String, _ Optional ByVal iSpreadSheetType As AcSpreadSheetType = acSpreadsheetTypeExcel12Xml, _ Optional ByVal iParams As xeParams = xeReplaceExistFile + xeHasFieldNames _ ) * **iSource** Quelle. Tabellenname oder View-Name oder SQL-String * **iFilePath** Export-Pfad. Pfad zur Datei dieerstellt werdn soll. * **iSpreadSheetType** Excel-Format. Typ des Spreadsheets. Standart: Excel-12 XML * **iParams** Parameters. verscheidene Parameter. Siehe [[#xeparams|Enumerator xeParams]] Mit export()exportiert man eine Quelle in ein Excel-Sheet === instance() === Set object = XlsExporter.instance(source, filepath [,spreadsheettype [,params]]) Set object = XlsExporter(source, filepath [,spreadsheettype [,params]]) Eine neue Instanz der Klasse wird angelegt und der Export wird durchgeführt. Die Parameter entsprechen denen der [[#export|Methode export()]] Die Methode instance() hat das versteckte Attribut ''Attribute instance.VB_UserMemId = 0''. Dadurch lässt sie sich direkt aus der Klasse ausführen. === quit() === object.quit [save Yes/No] Speicher das offene Workbook und schliesst die Datei und die Excelinstanz ==== Properties ==== === range === range = object.range([Cell1 [,Cell2]]) range = object.sheet.range([Cell1 [,Cell2]]) Mit dem range-Property greifft man direkt auf das Worksheet mit den exporetierten Daten zu. Der Aufruf ist analog zu Excel. Mit dem Range kann man direkt Formatierungen etc. analog zu Excel-VBA im Excelsheet durchführen. Es ist identisch wie das .sheet.range. Aber da man den Range am meisten braucht, habe ich ihn extra hinzugefügt === sheet === sheet = object.sheet Das sheet-Property gibt eine Referenz auf das Worksheet. Damit lassen sich ganz normale Worksheetbefehle absetzen ---- ===== Beispiele ===== Erste Zeile und erste Spalte Fett setzen. Dim exp As new XlsxExporter exp.export "my_table", "c:\temp\__tt.xlsx" exp.range("1:1").Font.Bold = True exp.range("A:A").Font.Bold = True exp.quit Set exp=Nothing Analog aber ohne feste Variablenzuordnung Da das Objekt nur temporär geöffnet ist (ist keiner Variable zugewiesen), wird am Ende des With das Objekt zerstört und somit quit() ausgeführt. Das muss also nicht expliziet gemacht werden With XlsxExporter("my_table", "c:\temp\__tt.xlsx") .range("1:1").Font.Bold = True .range("A:A").Font.Bold = True End With Wenn man nur die Titelzeile formatieren will, gehts natrülich noch kürzer XlsxExporter("my_table", "c:\temp\__tt.xlsx").range("1:1").Font.Bold = True ---- ===== Code =====