Im nächsten Schritt legen Sie fest, welche Daten Sie überhaupt abfragen möchten. Dazu gehört vor allem die Festlegung, aus welcher Datenquelle die Daten importiert werden sollen. Sie geben also den Pfad und den Namen der Datei an, die als Basis der Daten dienen.
Um das zu erledigen, fügen Sie über die Add-Methode eine neue Tabelle des Typs „QueryTable“ ein. Dabei legen Sie den Datentyp, die Datenquelle sowie den Zielort der Daten innerhalb von Excel fest. Dazu übergeben Sie der „Add“-Methode zwei Argumente.
Über den Parameter „Connection“ definieren Sie, wo sich die Datenquelle befindet und welches Format sie besitzt. Der Parameter „Destination“ legt fest, wohin VBA die importierten Daten schreiben soll.
Das folgende Unterprogramm stellt dar, wie Sie das in VBA erledigen:
In die Variable „strPfad“ wird der Pfad der Datei eingetragen, die Sie öffnen möchten. Das Makro geht davon aus, dass sich diese Datei im gleichen Verzeichnis wie die Arbeitsmappe befindet, in der das Makro ausgeführt wird. Die Datei soll MESSUNGEN.TXT heißen. Wenn Sie einen anderen Speicherort für die Datei vorziehen, legen Sie den Pfad in der entsprechenden Zeile des Programms wie folgt fest:
strPfad = "c:\Dateien\Messungen.txt"
Aus diesem Pfad generiert das VBA-Unterprogramm die Variable „Importpfad“, die neben dem Importpfad auch noch die Information über das Datenformat („TEXT“ für eine ASCII-Datei) integriert.
Der nachfolgende „Set“-Befehl ist das zentrale Kommando in dem Unterprogramm. Er weist der Variablen „qtAbfrage“ einen Wert zu, indem über die „Add“-Methode eine neue QueryTable angelegt wird.
Über den Parameter „Connection“ legen Sie den Speicherort der Daten fest, die Sie importieren möchten. Hier wird die zuvor definierte Variable „Importpfad“ verwendet.
Als Zielort definiert die „Add“-Methode die aktive Tabelle. Hier wird der Bereich ab Zelle A1 festgelegt. Von dieser Zelle ausgehend, startet Excel den Import der externen Daten.
In unserem Beispiel sollen eine neue Word-Sitzung gestartet und ein bestimmtes Dokument geöffnet werden. Danach kann das Dokument bearbeitet werden. Der Aufruf von Word erfolgt über Kommandos aus der zuvor eingebundenen VBA-Bibliothek.
Für das Erzeugen einer Word-Sitzung aus einer Excel-Anwendung heraus setzen Sie das Kommando „Create- Objekt“ ein. Durch das Übergeben des Parameters „Word.Application“ starten Sie aus Excel heraus eine neue Word-Sitzung. Hier ist der komplette Programmcode:
Sub StarteWord()
Dim objWordApp As Object
Dim strPfad As String
strPfad = "C:\Dokument.docx"
Set objWordApp = _ CreateObject("Word.application")
With objWordApp
.Application.Visible = True
.Application.Documents.Open (strPfad)
'Hier Ihre Kommandos
End With
Set objWordApp = Nothing
End Sub
Das Programm öffnet eine Word-Sitzung und lädt das Dokument „C:\Dokument.docx“. Sie erhalten eine Fehlermeldung, wenn das Dokument an dieser Position nicht existiert. Ab der Position „Hier Ihre Kommandos“ fügen Sie die Befehle ein, mit denen das Word- Dokument verändert wird. Beachten Sie bitte das Kommando am Ende des Unterprogramms:
Set objWordApp = Nothing
Hiermit wird die Verbindung von Excel zu Word über die Objektvariable „objWordApp“ geschlossen. Das ist wichtig, um ein sauberes Programmende zu erreichen.
VBA stellt speziell für den Zugriff auf Word und Word-Objekte eine Bibliothek zur Verfügung, die Sie in Excel einsetzen können.
Durch das Anbinden der Office-Bibliothek können Sie Objekte, Konstanten und Parameter in Ihrem VBA-Quelltext einfacher und direkter ansprechen. Es ist auch möglich, Word-Dokumente ohne das Anbinden der Bibliothek zu steuern, das ist aber wesentlich unkomfortabler.
Folgendermaßen binden Sie die Bibliothek ein:
Der Dokumentinspektor bietet eine Vielzahl an Funktionen an, um Arbeitsmappen zu säubern.
Wenn es aber darum geht, sämtlichen Quellcode aus einer Arbeitsmappe zu entfernen, dann klappt das nur, wenn Sie die Excel-Mappe mit der Endung „.xlsx“ speichern oder wenn Sie das folgende Makro einsetzen:
Sub AlleQuellecodesEntfernen()
Dim CodeObj As Object
If Val(Application.Version) >= 8 Then
With ActiveWorkbook.VBProject
On Error Resume Next
For Each CodeObj In .VBComponents
Select Case CodeObj.Type
Case 1, 2, 3
.VBComponents.Remove CodeObj
Case Else
With CodeObj.CodeModule
If .CountOfLines > 0 Then
.DeleteLines 1, .CountOfLines
End If
End With
End Select
Next
End With
End If
End Sub
Das Makro löscht zuerst alle enthaltenen Prozeduren, Module, Formulare und am Ende sich selbst.