User Tools

Site Tools


vba:access:classes:xlsxeporter

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
Last revision Both sides next revision
vba:access:classes:xlsxeporter [06.02.2015 09:58:31]
yaslaw
vba:access:classes:xlsxeporter [21.09.2017 10:49:58]
yaslaw [Enumerator xeParams]
Line 4: Line 4:
     fname=xlsxexporter.cls     fname=xlsxexporter.cls
     ns=%NAMESPACE%     ns=%NAMESPACE%
-    fpath=/​vba/​access+    fpath=/​vba/​access/
 </​const>​ </​const>​
 ====== [VBA][Access] XlsxExporter 2.x ====== ====== [VBA][Access] XlsxExporter 2.x ======
 +//Exporter MS Access nach Excel. Die komplexe Version.//
 +
 ==Version %%version%% %%vdate%%== ==Version %%version%% %%vdate%%==
-<​WRAP ​right round download 50%>+<WRAP round download 50%>
 ><fc #​808080>//​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.//</​fc>​ ><fc #​808080>//​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.//</​fc>​
 >​{{popup>:​vba:​vba_importfile.png|Bild zum Import}} >​{{popup>:​vba:​vba_importfile.png|Bild zum Import}}
- +{{:​vba:​access:​xlsxexporter.cls|Download %%fname%% (V-%%version%%)}}
-{{%%fname%%|Download %%fname%% (V-%%version%%)}}+
 </​WRAP>​ </​WRAP>​
  
 Eine <​del>​kleine</​del>​ Klasse um schnell Daten aus Access nach Excel zu exportieren. Sie bietet die Möglichkeit,​ dann gleich noch einige Excel-Formatierungen durchzuführen Eine <​del>​kleine</​del>​ Klasse um schnell Daten aus Access nach Excel zu exportieren. Sie bietet die Möglichkeit,​ dann gleich noch einige Excel-Formatierungen durchzuführen
  
-Meine erste Version [[vba:​access:​xlsxeporter_101]] ist zwar nicht schlecht, bietet mir aber zu wenig.+Meine erste Version [[vba:​access:classes:​xlsxeporter_101]] ist zwar nicht schlecht, bietet mir aber zu wenig.
  
 Darum hier die neue, bessere & komplexere Version 2.x Darum hier die neue, bessere & komplexere Version 2.x
  
 Um zu verstehen worum es geht und was die Klasse macht, empfehle ich zuerst einmal die [[#​Beispiele]] anzuschauen. Um zu verstehen worum es geht und was die Klasse macht, empfehle ich zuerst einmal die [[#​Beispiele]] anzuschauen.
- 
-<WRAP clear></​WRAP>​ 
  
 ===== Referenzen ===== ===== Referenzen =====
 **<fc #​ff0000>​Im VBA musss eine Referenz auf '​%%MicrosoftExcel XY ObjectLibrary%%'​ gesetzt sein</​fc>​** **<fc #​ff0000>​Im VBA musss eine Referenz auf '​%%MicrosoftExcel XY ObjectLibrary%%'​ gesetzt sein</​fc>​**
 +
 +===== Grober ablauf =====
 +In der folgenden Reihenfolge sollten die versch. Schritte aufgerufen werden. //Kursiv// geschrieben Punkte sind optional.
 +> Bei einer anderen Reihenfolge kann es zu unerwarteten Resultaten führen.
 +
 +  - Objekt erstellen/​initialisieren
 +      - Instanzieren mit [[#​initialize]] oder [[#​instance]]
 +      - //Paramters setzen, falls man das nicht bereits beim Instanzieren gemacht hat [[#​Enumerator xeParams]]//​
 +  - //Formate definieren://​
 +      - //​Standardformat anpassen [[#​defaultFormat]]// ​
 +      - //​Standardformat auf alle vorfinierten Formate anpassen [[#​requeryDefaultFormats]]//​
 +      - //​Dateitypenformate anpassen [[#​format]]//​
 +      - //Weitere Formate definieren [[#​format]]//​
 +  - Exportiere die Daten [[#export]]
 +  - //​Formatierungen anwenden;//
 +      - //​Standartformat über das ganze Sheet [[#​doFormatDefault]]//​
 +      - //Spalten nach Datentyp [[#​doFormatColumnsByType]]//​
 +      - //Speziele andere Formate [[#​doFormat]]//​
 +  - //Spezielle Anpassungen an Ranges [[#​range]]//​
 +  - Objekt abbauen ([[#quit]] oder zerstören des Objektes)
  
 ===== Definitionen ===== ===== Definitionen =====
Line 43: Line 62:
 == Datei-Handler == == Datei-Handler ==
   ***xeReplaceExistFile** Falls die Exportdatei bereits exisitert, kann diese ersetzt werden   ***xeReplaceExistFile** Falls die Exportdatei bereits exisitert, kann diese ersetzt werden
-== Heder-Settings ==+== Header-Settings ==
   ***xeCaptionAsHeader** Es wird versucht die Titel-Eigenschaft des Tabellenfeldes auszulesen   ***xeCaptionAsHeader** Es wird versucht die Titel-Eigenschaft des Tabellenfeldes auszulesen
   ***xeReadableHeader** Der Technische Name wird möglichst in ein lesbaeren Namen Konvertiert   ***xeReadableHeader** Der Technische Name wird möglichst in ein lesbaeren Namen Konvertiert
Line 126: Line 145:
  
 === quit() === === quit() ===
-Wendet bei aktivem paramRunDefaultFormating und vorhandenem Header die HeaderformatierunganSpeichert ​und schliesst die Datei.+Wendet bei aktivem ​''​paramRunDefaultFormating'' ​und vorhandenem Header die Headerformatierung anspeichert ​und schliesst die Datei.
 >Diese Funktion wird bei ''​Class_Terminate()''​ automatisch aufgerufen. >Diese Funktion wird bei ''​Class_Terminate()''​ automatisch aufgerufen.
 <code vb>'/​** <code vb>'/​**
Line 138: Line 157:
  
 === doFormat() === === doFormat() ===
-Führt eine Formatierung anhand einer Formatvorlage durch+Führt eine Formatierung anhand einer Formatvorlage durch
 +  * Die Quelle ist entweder ein ''​format''​ oder eine Formatdefinition analog zum Property ''​format''​ 
 +  * Die Definition des Target entspricht dem Property ''​range''​. 
 +  * Es können mehrere Targets mitKomma getrennt mitgegeben werden
 <code vb>'/​** <code vb>'/​**
 ' * Formatiert Ranges ' * Formatiert Ranges
Line 151: Line 173:
     ParamArray iTargets() As Variant _     ParamArray iTargets() As Variant _
 )</​code>​ )</​code>​
 +
 +<code vb>
 +exp.doFormat "​mein_formatname",​ "​1:​1"​
 +exp.doFormat .format("​mein_formatname"​),​ .range("​1:​1"​)
 +exp.doFormat "​mein_formatname",​ "​1:​1",​ "​A3",​ .myRange
 +</​code>​
  
 === doFormatDefault() === === doFormatDefault() ===
Line 179: Line 207:
 Public Sub autoFit()</​code>​ Public Sub autoFit()</​code>​
  
-===== Grober ablauf ​===== +=== requeryDefaultFormats() ​=== 
-In der folgenden Reihenfolge sollten ​die verschSchritte aufgerufen ​werden. //Kursiv// geschrieben Punkte sind optional+Wenn man Anpassungen an dem ''​defaultFormat''​ vornimmt, kann man mit dieser Methode das neue Standardformat auf die restlichen Typenformate anwenden. 
-Bei einer anderen ​Reihenfolge kann es zu unerwarteten Resultaten führen.+<code vb>'/​** 
 +' * Berechnet die Standardformate neu, basierend auf dem defaultFormat 
 +' */ 
 +Public Sub requeryDefaultFormats()</​code>​ 
 + 
 +==== Interessante Properties ​==== 
 + 
 +=== format === 
 +Das Format-Property gibt ein Excel.Range zurück. Diesen kann man dann nach belieben Formatieren und dient für die Methode ''​doFormat()''​ als Vorlage. 
 +\\ Formate können über einen Namen oder einen %%DAO.DataTypeEnum%% definiert werden.  
 +  * Die Typenformate werden in der Methode ''​doFormatColumnsByType()''​ anhand des Feldtypes ​der Datenbank auf die Spalten angewendet. 
 +  * Es können auch freie Formate mit eigenen Namen verwaltet ​werden 
 +  * In der Internen Methode ''​setDefaultFormats()''​ sind einige Formate vordefiniert. 
 +<code vb>'​/** 
 +' * Ein Excel.Range,​der als FOrmatvorlage dient 
 +' * @param ​ Variant ​    Name oder dao.DataTypeEnum um das Format zu definieren 
 +' * @param ​ Variant ​    ​Format/Range oder FormatName der als Formatvorlage dient 
 +' * @param ​ Boolean ​    ​Bestehende Formateinstellungen verwerfen 
 +' */ 
 +Public Property Get format( _ 
 +        ByVal iNameOrType As Variant, _ 
 +        Optional ByRef iPattern As Variant = C_DEFAULT_FORMAT_NAME,​ _ 
 +        Optional ByVal iOverwrite As Boolean = False _ 
 +) As Excel.range<​/code> 
 + 
 +Beispiel 
 +<code vb>'​Ausführlecher Weg ein benanntes Format zu erstellen & definieren 
 +Dim frmt As Excel.Range 
 +Set frmt = exp.format("​Mein format"​) 
 +frmt.font.bold = true 
 +frmt.font.italic = true 
 + 
 +'​Vereinfachte Anwendung 
 +exp.format("​Mein format"​).font.bold = true 
 +exp.format("​Mein format"​).font.italic = true</​code> 
 + 
 +=== defaultFormat === 
 +Direktzugriff auf die Formatvorlage für das Standardformat über das ganze Sheet. 
 +>Diese Formatierungen sollte vor allen anderen ​Formatierungen angepasst werden, da sie die Grundlage für alle weiteren Formatierungen ist 
 +
 +>Nach Anpassungen dieses Formats unbedingt die Methode ''​requeryDefaultFormats()''​ aufrufen 
 +<code vb>'/​** 
 +' * Direktzugirff auf das Standardformat 
 +' */ 
 +Public Property Get defaultFormat() As Excel.range</​code>​ 
 + 
 +<code vb>​exp.defaultFormat.font.size=10 
 +exp.requeryDefaultFormats</​code>​ 
 + 
 +=== headerFormat === 
 +Direkter Zugriff auf das Format des Headers 
 +<code vb>'/​** 
 +' * Direktzugirff auf die Headerformatierung 
 +' */ 
 +Public Property Get headerFormat() As Excel.range</​code>​ 
 + 
 +<code vb>​exp.headerFormat.font.bold = true</​code>​ 
 + 
 +=== range === 
 +Gibt einen Excel.Range des %%DataSheets%% zurück.  
 +<code vb>'/​** 
 +' * gibt ein Range des DataSheets zurück 
 +' * @param ​ Variant ​    ​Spaltennummer/​Spaltenname/​Range/​Cell2 & Cell2/​Excel-Range-String ("​A1",​ "​A1:​C3"​ etc) 
 +' * @param ​ Variant ​    ​Spaltennummer/​Spaltenname/​Range/​Cell2 & Cell2/​Excel-Range-String ("​A1",​ "​A1:​C3"​ etc) 
 +' * @return Range 
 +' */ 
 +Public Property Get range( _ 
 +    ByRef iRangeDef1 As Variant, _ 
 +    Optional ByRef iRangeDef2 As Variant = Null _ 
 +) As Excel.range</​code>​
  
-  - Objekt erstellen +<code vb>Dim rng As Excel.Range 
-  - //Paramters setzen, falls man das nicht bereits in 1) gemacht hat// +Set rng = exp.range(1) '​Spalte 1 
-  - //​Standardformat anpassen// +Set rng = exp.range("​Mein Feldname"​) '​Spalte die dem Feld [Mein Feldname] der Quelle entspricht 
-  - //​Standardformat auf alle vorfinierten Formate anpassen// +Set rng = exp.range("​A3"​) '​Zelle A3 
-  - //​Dateitypenformate anpassen// +Set rng = exp.range("​1:​1"​) '​Erste Zeile 
-  - //Weitere Formate definieren//​ +Set rng = exp.range("​A3:​B4"​) '​Zellen A3 bis B4 
-  - Exportiere die Daten +Set rng = exp.range(myRange) '​Enspricht dem Range myRange 
-  ​- ​//​Formatierungen anwenden//​ +Set rng = exp.range("​A3",​ "​B4"​) '​Zellen A3 bis B4 
-  - Objekt abbauen+Set rng = exp.Range(myRange,​ "​Z:​Z"​) '​Alles von myRange bis zur SpalteZ</code>
  
 ---- ----
Line 291: Line 388:
 ---- ----
 ===== Code ===== ===== Code =====
 +<WRAP round download 90%>
 +><fc #​808080>//​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.//</​fc>​
 +>​{{popup>:​vba:​vba_importfile.png|Bild zum Import}}
 +
 {{%%fname%%|Download %%fname%% (V-%%version%%)}} {{%%fname%%|Download %%fname%% (V-%%version%%)}}
 +</​WRAP>​
 <source '​%%fpath%%/​%%fname%%'​ vb> <source '​%%fpath%%/​%%fname%%'​ vb>
  
  
vba/access/classes/xlsxeporter.txt · Last modified: 07.03.2019 16:12:20 by yaslaw