vba (visual basic for application) - luis.uni-hannover.de · regionales rechenzentrum für...

33
Regionales Rechenzentrum für Niedersachsen VBA (Visual Basic for Application) Austausch von Daten

Upload: doxuyen

Post on 29-Aug-2019

215 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: VBA (Visual Basic for Application) - luis.uni-hannover.de · Regionales Rechenzentrum für Niedersachsen VBA (Visual Basic for Application) Austausch von Daten

Regionales Rechenzentrum für Niedersachsen

VBA (Visual Basic for Application)

Austausch von Daten

Page 2: VBA (Visual Basic for Application) - luis.uni-hannover.de · Regionales Rechenzentrum für Niedersachsen VBA (Visual Basic for Application) Austausch von Daten

OpenOffice | | Folie 2Access 2007 – VBA | 06.03.08 | Seite 2

Regionales Rechenzentrum für Niedersachsen

File - Dialogbox

... ist in der Office 2000-Version erstmalig implementiert. ... hat folgende Typen:

msoFileDialogFilePicker, um Dateien auszuwählen. msoFileDialogFolgerPicker, um Verzeichnisse auszuwählen. msoFileDialogOpen, um Dateien auszuwählen und zu öffnen. Dieser Typ wird

nicht von Access 2007 unterstützt. msoFileDialogSaveAs, um Dateien auszuwählen und zu speichern. Dieser Typ

wird nicht von Access 2007 unterstützt. ... benötigen einen Verweis auf die Microsoft Office xx Library. Dialogboxen können auch mit Hilfe der Windows API erstellt werden.

Page 3: VBA (Visual Basic for Application) - luis.uni-hannover.de · Regionales Rechenzentrum für Niedersachsen VBA (Visual Basic for Application) Austausch von Daten

OpenOffice | | Folie 3Access 2007 – VBA | 06.03.08 | Seite 3

Regionales Rechenzentrum für Niedersachsen

Objektvariable deklarieren

Dim fd As Office.FileDialogSet fd = Application.FileDialog(msoFileDialogFilePicker)

Die Objektvariable hat den Datentyp Office.FileDialog. Die Objektvariable bekommt ein Verweis auf eine Dialogbox zur Auswahl

von Dateien übergeben.

Page 4: VBA (Visual Basic for Application) - luis.uni-hannover.de · Regionales Rechenzentrum für Niedersachsen VBA (Visual Basic for Application) Austausch von Daten

OpenOffice | | Folie 4Access 2007 – VBA | 06.03.08 | Seite 4

Regionales Rechenzentrum für Niedersachsen

Aussehen der Dialogbox

Dim fd As Office.FileDialogSet fd = Application.FileDialog(msoFileDialogFilePicker)With fd

.Title = "Datei für die Anlage auswählen"

.ButtonName = "Auswählen"End With

Bezeichnung in der Titelleiste der Dialogbox.

Beschriftung des OK-Buttons.

Page 5: VBA (Visual Basic for Application) - luis.uni-hannover.de · Regionales Rechenzentrum für Niedersachsen VBA (Visual Basic for Application) Austausch von Daten

OpenOffice | | Folie 5Access 2007 – VBA | 06.03.08 | Seite 5

Regionales Rechenzentrum für Niedersachsen

Dateiauswahl beeinflussen

Dim fd As Office.FileDialogSet fd = Application.FileDialog(msoFileDialogFilePicker)With fd

.AllowMultiSelect = False

.InitialFileName = "C:\"

.InitialView = msoFileDialogViewListEnd With

Mehrfachauswahl von Dateien?

Wie werden die Dateien und Ordner in dem

Dialogfenster angezeigt?

Page 6: VBA (Visual Basic for Application) - luis.uni-hannover.de · Regionales Rechenzentrum für Niedersachsen VBA (Visual Basic for Application) Austausch von Daten

OpenOffice | | Folie 6Access 2007 – VBA | 06.03.08 | Seite 6

Regionales Rechenzentrum für Niedersachsen

Einstellungen für .InitialView

msoFileDialogViewSmallIcon zeigt den Dateinamen und ein kleines Icon an.

msoFileDialogViewList zeigt die Dateien als Liste an. msoFileDialogDetails zeigt die Dateinamen, Größe etc. an. msoFileDialogThumbnail zeigt die Dateien als Vorschaubilder an. Weitere Möglichkeiten werden in einer Liste zur Auswahl angezeigt.

Page 7: VBA (Visual Basic for Application) - luis.uni-hannover.de · Regionales Rechenzentrum für Niedersachsen VBA (Visual Basic for Application) Austausch von Daten

OpenOffice | | Folie 7Access 2007 – VBA | 06.03.08 | Seite 7

Regionales Rechenzentrum für Niedersachsen

.InitialFileName

... legt das Standardverzeichnis für das Dialogfenster fest. ... nutzt als Standardeinstellung einen Dateinamen. In dem Dateinamen

können folgende Platzhalter genutzt werden: "C:\chart?.txt". Das Fragezeichen ersetzt ein beliebiges Zeichen. "C:\cha*.txt". Das Sternchen ersetzt ein beliebige Anzahl von Zeichen.

Page 8: VBA (Visual Basic for Application) - luis.uni-hannover.de · Regionales Rechenzentrum für Niedersachsen VBA (Visual Basic for Application) Austausch von Daten

OpenOffice | | Folie 8Access 2007 – VBA | 06.03.08 | Seite 8

Regionales Rechenzentrum für Niedersachsen

Dateien filtern

Dim fd As Office.FileDialogSet fd = Application.FileDialog(msoFileDialogFilePicker)With fd .Filters.Clear .Filters.Add "PDF-Dokumente", "*.pdf; *.PDF", 1 .Filters.Add "JPEG-Bild", "*.jpg, *.jpeg", 2 .Filters.Add "Alle Dateien", "*.*", 3 .FilterIndex = 1End With

Das Kombinationsfeld Dateityp am unteren Rand des

Dialogfenster wird geleert.

Welche Dateitypen werden in dem Kombinationsfeld

angezeigt? Der Liste Dateityp werden die verschiedenen

Elemente hinzugefügt.Standardauswahl im Kombinationsfeld.

Page 9: VBA (Visual Basic for Application) - luis.uni-hannover.de · Regionales Rechenzentrum für Niedersachsen VBA (Visual Basic for Application) Austausch von Daten

OpenOffice | | Folie 9Access 2007 – VBA | 06.03.08 | Seite 9

Regionales Rechenzentrum für Niedersachsen

Dialogbox anzeigen

Dim fd As Office.FileDialogSet fd = Application.FileDialog(msoFileDialogFilePicker)With fd If .Show = True Then For Each element In .SelectedItems chooseDatei = element Exit Function Next End IfEnd With

Mit Hilfe der Methode Show wird das Dialogfenster angezeigt.

Wenn der OK-Button gedrückt ist, wird true zurückgeliefert..

Die Auflistung enthält alle, in dem

Dialogfenster markierten Dateien.

Page 10: VBA (Visual Basic for Application) - luis.uni-hannover.de · Regionales Rechenzentrum für Niedersachsen VBA (Visual Basic for Application) Austausch von Daten

OpenOffice | | Folie 10Access 2007 – VBA | 06.03.08 | Seite 10

Regionales Rechenzentrum für Niedersachsen

PDF-Dateien anzeigen

Private Sub cmdOpen_Click() Dim pfad As String pfad = attachText.Value Call ShellExecute(Me.hWnd, "open", _

pfad, "", "", SW_NORMAL)End Sub

ShellExceute ... ist eine API (Application programming interface)-Funktion. ... entspricht einem Doppelklick auf eine Datei.

Falls das Anwendungsprogamm Acrobat Reader oder Acrobat auf dem Zielrechner installiert ist, wird die Datei geöffnet.

Page 11: VBA (Visual Basic for Application) - luis.uni-hannover.de · Regionales Rechenzentrum für Niedersachsen VBA (Visual Basic for Application) Austausch von Daten

OpenOffice | | Folie 11Access 2007 – VBA | 06.03.08 | Seite 11

Regionales Rechenzentrum für Niedersachsen

Windows API

A(pplication) P(rogrammers) I(nterface) ... ist eine Funktionsbibliothek, die aus vielen DLLs (Dynamic Link

Libraries) besteht. DLLs

... sind Schnittstellen zu Systemfunktionen von Windows. ... können von mehreren Anwendungen gleichzeitig genutzt werden.

Bevor Funktionen aus der Windows API genutzt werden können, muss die API-Funktion deklariert werden.

Informationen zur Windows API befindet sich im Windows SDK (http://msdn.microsoft.com/en-us/library/aa383750.aspx)

Eine Referenz der Funktionen finden Sie als Referenz auf der Webseite http://www.vbarchiv.net/api/index.php.

Ein Tool zur Anzeige der Funktionen finden Sie unter http://www.activevb.de/rubriken/apiviewer/index-apiviewer.html

Page 12: VBA (Visual Basic for Application) - luis.uni-hannover.de · Regionales Rechenzentrum für Niedersachsen VBA (Visual Basic for Application) Austausch von Daten

OpenOffice | | Folie 12Access 2007 – VBA | 06.03.08 | Seite 12

Regionales Rechenzentrum für Niedersachsen

Deklaration der API-Funktion

Public Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA"() As Long

In Standardmodulen werden API-Funktionen immer als öffentliche Funktionen deklariert. In Klassenmodulen werden sie privat deklariert.

Dem Schlüsselwort Declare Function folgt der Funktionsname. Der Name muss korrekt geschrieben werden. Es wird Gross- und Kleinschreibung beachtet.

Dem Schlüsselwort Lib folgt der DLL-Name. Pfadangaben werden nicht benötigt.

Wenn der Funktionsname von dem DLL-Namen abweicht, muss ein Alias-Name gesetzt werden. Ein Alias-Name wird auch genutzt, wenn der Name der Funktion in VBA vorhanden ist.

Page 13: VBA (Visual Basic for Application) - luis.uni-hannover.de · Regionales Rechenzentrum für Niedersachsen VBA (Visual Basic for Application) Austausch von Daten

OpenOffice | | Folie 13Access 2007 – VBA | 06.03.08 | Seite 13

Regionales Rechenzentrum für Niedersachsen

Argumente der ShellExecute-Funktion

Public Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA"

( ByVal hWnd As Long,_

ByVal lpOperation As String, _

ByVal lpFile As String, _ ByVal lpParameters As String, _ ByVal lpDirectory As String, _

ByVal nshowcmd As Long) As Long

Page 14: VBA (Visual Basic for Application) - luis.uni-hannover.de · Regionales Rechenzentrum für Niedersachsen VBA (Visual Basic for Application) Austausch von Daten

OpenOffice | | Folie 14Access 2007 – VBA | 06.03.08 | Seite 14

Regionales Rechenzentrum für Niedersachsen

Erläuterung

ByVal hWnd As Long beschreibt das Handle des aufrufenden Fensters. Ein Handle ist ein positive Ganzzahl, die Windows für die Identifizierung eines Objekts nutzt.

ByVal lpOperation As String beschreibt welche Operation ausgeführt werden soll. Beispielsweise "print" für den Ausdruck oder "open" für das Öffnen einer Datei in dem damit verbundenen Anwendungsprogramm.

ByVal lpFile As String enthält den Verzeichnis- oder Dateinamen, welches zum Beispiel mit dem entsprechenden Anwendungsprogramm geöffnet werden soll.

ByVal lpParameters As String kann optional Aufruf-Parameter für das Anwendungsprogramm enthalten.

ByVal lpDirectory As String legt das Arbeitsverzeichnis fest. ByVal nshowcmd As Long legt mit Hilfe einer Konstanten das

Verhalten des Anwendungsfensters fest.

Page 15: VBA (Visual Basic for Application) - luis.uni-hannover.de · Regionales Rechenzentrum für Niedersachsen VBA (Visual Basic for Application) Austausch von Daten

OpenOffice | | Folie 15Access 2007 – VBA | 06.03.08 | Seite 15

Regionales Rechenzentrum für Niedersachsen

Konstanten für das Verhalten der Anwendung

Public Const SW_HIDE = 0 Public Const SW_MAXIMIZE = 3 Public Const SW_MINIMIZE = 6 Public Const SW_NORMAL = 1Public Const SW_RESTORE = 9Public Const SW_SHOWMAXIMIZED = 3Public Const SW_SHOWMINIMIZED = 2Public Const SW_SHOWMINNOACTIVE = 7Public Const SW_SHOWNOACTIVATE = 4

Page 16: VBA (Visual Basic for Application) - luis.uni-hannover.de · Regionales Rechenzentrum für Niedersachsen VBA (Visual Basic for Application) Austausch von Daten

OpenOffice | | Folie 16Access 2007 – VBA | 06.03.08 | Seite 16

Regionales Rechenzentrum für Niedersachsen

Rückgabewert untersuchen

Private Sub cmdOpen_Click() Dim pfad As String Dim result As Long pfad = attachText.Value result = ShellExecute(Me.hWnd, "open", _

pfad, "", "", SW_NORMAL) Select Case result Case SE_ERR_NOASSOC

MsgBox "Keine Verbindung zu einer Anwendung" Case SE_ERR_PNF MsgBox "Pfad wurde nicht gefunden"" Case SE_ERR_FNF MsgBox "Datei wurde nicht gefunden" End SelectEnd Sub

Page 17: VBA (Visual Basic for Application) - luis.uni-hannover.de · Regionales Rechenzentrum für Niedersachsen VBA (Visual Basic for Application) Austausch von Daten

OpenOffice | | Folie 17Access 2007 – VBA | 06.03.08 | Seite 17

Regionales Rechenzentrum für Niedersachsen

Hinweise

Wenn kein Fehler auftritt, wird das Handle des geöffneten Anwendungsprogramms zurückgegeben.

Wenn ein Wert von 0 zurückgeben wird, reichen die Systemressourcen zur Ausführung der API-Funktion nicht aus.

Andere Rückgabewert beschreiben meist einen Fehler.

Page 18: VBA (Visual Basic for Application) - luis.uni-hannover.de · Regionales Rechenzentrum für Niedersachsen VBA (Visual Basic for Application) Austausch von Daten

OpenOffice | | Folie 18Access 2007 – VBA | 06.03.08 | Seite 18

Regionales Rechenzentrum für Niedersachsen

Daten nach Excel transferien

Sub exportTransfer() Dim strSQL As String Dim qry As QueryDef Dim pfad As String Err.Clear On Error GoTo errMeldung

strSQL = "SELECT umsatz, quartal, jahr FROM tblBezirkUmsatz" strSQL = strSQL & " WHERE bezirk = " & lstBezirk.Value

Set qry = CurrentDb.CreateQueryDef("BezirkUmsatz", strSQL)

pfad = Application.CurrentProject.Path & "\umsatz.xls" DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9,_

"BezirkUmsatz", pfad, True

End Sub

Page 19: VBA (Visual Basic for Application) - luis.uni-hannover.de · Regionales Rechenzentrum für Niedersachsen VBA (Visual Basic for Application) Austausch von Daten

OpenOffice | | Folie 19Access 2007 – VBA | 06.03.08 | Seite 19

Regionales Rechenzentrum für Niedersachsen

Abfrage erzeugen

Mit Hilfe von CreateQueryDefs wird eine Abfrage in der aktuellen Datenbank erzeugt. Als erster Parameter wird der Methode eine Bezeichnung übergeben. Unter

diesen Namen wird die Abfrage im Navigationsfenster angezeigt. Als zweiter Parameter wird eine SQL-Anweisung übergeben.

Falls die Abfrage vorhanden ist, wird die Fehlernummer 3012 gesendet. Der Fehler kann folgendermaßen behoben werden: Die Abfrage mit Hilfe der Anweisung DoCmd.DeleteObject acQuery, "BezirkUmsatz" gelöscht.

Mit Hilfe von CurrentDb.QueryDefs("BezirkUmsatz").SQL wird die Datenquelle der Abfrage an die Auswahl des Listenfeldes angepasst werden.

strSQL = "SELECT umdatz, quartal, jahr FROM tblBezirkUmsatz"strSQL = strSQL & " WHERE bezirk = " & lstBezirk.Value

Set qry = CurrentDb.CreateQueryDef("BezirkUmsatz", strSQL)

Page 20: VBA (Visual Basic for Application) - luis.uni-hannover.de · Regionales Rechenzentrum für Niedersachsen VBA (Visual Basic for Application) Austausch von Daten

OpenOffice | | Folie 20Access 2007 – VBA | 06.03.08 | Seite 20

Regionales Rechenzentrum für Niedersachsen

Daten transferieren

DoCmd.TransferSpreadsheet acExport, _

acSpreadsheetTypeExcel9,_

"BezirkUmsatz", pfad,

True

Wie werden die Daten transferiert. Hier werden

die Daten exportiert.

In welches Format werden die Daten

transferiert?

Welche Daten sollen wohin transferiert

werden?

Spaltenüberschriften der Abfrage werden übernommen.

Page 21: VBA (Visual Basic for Application) - luis.uni-hannover.de · Regionales Rechenzentrum für Niedersachsen VBA (Visual Basic for Application) Austausch von Daten

OpenOffice | | Folie 21Access 2007 – VBA | 06.03.08 | Seite 21

Regionales Rechenzentrum für Niedersachsen

Excel öffnen

Voraussetzung: Excel ist auf dem Zielrechner vorhanden. Mit Hilfe von Extras – Verweise ist der Verweis Microsoft Excel 12.0

Object Library aktiviert. Mit Hilfe von CreateObject wird ein Verweis auf eine Excel-Anwendung

erzeugt. Mit Hilfe der Eigenschaft .Visible wird die Anwendung eingeblendet. Mit Hilfe der Methode .Quit wird die Anwendung geschlossen.

Dim xlApp As Excel.Application

Set xlApp = CreateObject("Excel.Application")xlApp.Visible = True

xlApp.QuitSet xlApp = Nothing

Page 22: VBA (Visual Basic for Application) - luis.uni-hannover.de · Regionales Rechenzentrum für Niedersachsen VBA (Visual Basic for Application) Austausch von Daten

OpenOffice | | Folie 22Access 2007 – VBA | 06.03.08 | Seite 22

Regionales Rechenzentrum für Niedersachsen

Neue Arbeitsmappe anlegen

Workbooks enthält alle Arbeitsmappen einer geöffneten Excel-Anwendung.

Mit Hilfe von .Add wird der Auflistung eine neue Arbeitsmappe hinzugefügt.

Mit Hilfe von .SaveAs wird die Arbeitsmappe unter einem Namen in einem bestimmten Verzeichnis gespeichert. Mit Hilfe von .Save werden Änderungen an der aktiven Arbeitsmappe gespeichert.

Dim xlWorkbook As Excel.Workbook

pfad = Application.CurrentProject.Path & "\umsatz.xlsx"

Set xlWorkbook = xlApp.Workbooks.AddxlWorkbook.SaveAs pfad

Set xlWorkbook = Nothing

Page 23: VBA (Visual Basic for Application) - luis.uni-hannover.de · Regionales Rechenzentrum für Niedersachsen VBA (Visual Basic for Application) Austausch von Daten

OpenOffice | | Folie 23Access 2007 – VBA | 06.03.08 | Seite 23

Regionales Rechenzentrum für Niedersachsen

Arbeitsmappe öffnen

Mit Hilfe der Funktion Dir() wird überprüft, ob eine Datei in dem angegebenen Verzeichnis vorhanden ist. Falls die Datei vorhanden ist, wird die Bezeichnung zurückgeliefert, andernfalls ein leerer String.

xlApp.Workbooks.Open(pfad) öffnet die Excel-Datei und fügt sie der Auflistung hinzu.

Dim xlWorkbook As Excel.Workbook

pfad = Application.CurrentProject.Path & "\umsatz.xlsx"

If Dir(pfad) <> "" Then Set xlWorkbook = xlApp.Workbooks.Open(pfad)End If

Page 24: VBA (Visual Basic for Application) - luis.uni-hannover.de · Regionales Rechenzentrum für Niedersachsen VBA (Visual Basic for Application) Austausch von Daten

OpenOffice | | Folie 24Access 2007 – VBA | 06.03.08 | Seite 24

Regionales Rechenzentrum für Niedersachsen

Arbeitsblätter

Worksheet bezeichnet ein Arbeitsblatt in einer Excel-Datei (Arbeitsmappe).

Die Auflistung .Sheets enthält alle in einer Arbeitsmappe vorhandenen Arbeitsblätter.

.Name hat als Wert die Bezeichnung des Arbeitsblattes. Standardmäßig hat ein Arbeitsblatt den Namen Tabelle und eine Nummer

von 1 bis n. Jeder Name beschreibt eindeutig ein Arbeitsblatt.

Jede Arbeitsmappe hat mindestens ein Arbeitsblatt.

Dim xlSheet As Excel.Worksheet

Set xlSheet = xlWorkbook.Sheets(1)xlSheet.Name = strSheetName

Page 25: VBA (Visual Basic for Application) - luis.uni-hannover.de · Regionales Rechenzentrum für Niedersachsen VBA (Visual Basic for Application) Austausch von Daten

OpenOffice | | Folie 25Access 2007 – VBA | 06.03.08 | Seite 25

Regionales Rechenzentrum für Niedersachsen

Arbeitsblätter hinzufügen

Mit Hilfe von .Add wird ein neues Arbeitsblatt hinter dem aktiven Arbeitsblatt eingefügt.

Mit Hilfe dem Parameter Before kann ein Arbeitsblatt vor einem anderen Blatt eingefügt werden. Hier wird das Arbeitsblatt vor dem letzten Arbeitsblatt eingefügt.

Mit Hilfe dem Parameter After kann ein Arbeitsblatt nach einem anderen Blatt eingefügt werden. Hier wird das Arbeitsblatt nach dem Arbeitsblatt Tabelle1 eingefügt.

With xlWorkbookSet xlSheet01 = .Sheets.AddSet xlSheet02 = .Sheets.Add(Before:=.Worksheets(.Worksheets.Count))Set xlSheet03 = .Sheets.Add(After:=.Worksheets("Tabelle1")))

End With

Page 26: VBA (Visual Basic for Application) - luis.uni-hannover.de · Regionales Rechenzentrum für Niedersachsen VBA (Visual Basic for Application) Austausch von Daten

OpenOffice | | Folie 26Access 2007 – VBA | 06.03.08 | Seite 26

Regionales Rechenzentrum für Niedersachsen

Daten einfügen

Die Daten des Recordsets werden in ein Arbeitsblatt von Excel kopiert. Cells beschreibt immer eine bestimmte Zelle. Wenn keine Angaben zur

Spalte und Zeile gemacht wird, wird Cells(1, 1); A1 als Ausgangspunkt angenommen. Die Daten werden, beginnend in der linken, oberen Ecke, eingefügt.

Range kann eine Zelle, ein Zellbereich, eine Spalte oder eine Zeile sein. In diesem Beispiel wird eine Zelle angegeben, ab der die Daten eingefügt werden sollen. Mit Hilfe von Range(Cells(Zeile, Spalte), Cells(Zeile, Spalte) wird ein Zellbereich festgelegt. Zuerst wird die linke, obere Ecke des Zellbereichs definiert und anschließend die rechte, untere Ecke.

xlSheet.Cells.CopyFromRecordset rsxlSheet.Range("A2").CopyFromRecordset rs

Page 27: VBA (Visual Basic for Application) - luis.uni-hannover.de · Regionales Rechenzentrum für Niedersachsen VBA (Visual Basic for Application) Austausch von Daten

OpenOffice | | Folie 27Access 2007 – VBA | 06.03.08 | Seite 27

Regionales Rechenzentrum für Niedersachsen

Kopfzeilen einfügen

Cells(zeile, spalte) identifiziert eindeutig eine Zelle. .Value enthält den Wert der Zelle. In diese Zelle wird die Spaltenüberschrift aus dem Recordset

eingetragen.

For count = 0 To rs.Fields.count - 1 xlSheet.Cells(1, count + 1).Value = rs.Fields(count).Name Next count

Page 28: VBA (Visual Basic for Application) - luis.uni-hannover.de · Regionales Rechenzentrum für Niedersachsen VBA (Visual Basic for Application) Austausch von Daten

OpenOffice | | Folie 28Access 2007 – VBA | 06.03.08 | Seite 28

Regionales Rechenzentrum für Niedersachsen

Formatierungen

Schriften: xlSheet.Range("A2").Font.Name legt die Schriftart fest. xlSheet.Range("A2").Font.Size legt die Größe fest. Fettschrift etc. kann mit Hilfe von boolschen Werten gesetzt werden.

Rahmen: xlSheet.Range("A2").Borders(Typ) legt fest, welcher Rahmen

formatiert werden soll. .Borders(xlEdgeRight) formatiert den rechten Rahmen.

.LineStyle, .Weight und .Color legt das Aussehen des Rahmens fest. .NumberFormat formatiert Zahlen in einer bestimmten Art und Weise.

.NumberFormat = "yyyy" interpretiert die Zahlen als vierstellige Jahreszahl.

.NumberFormat = "@" interpretiert die Zahlen als Text. .NumberFormat = "#.##0,00 €" interpretiert die Zahlen als Währung. In

diesem Fall wird das Euro-Zeichen genutzt. Die Zahl besteht aus mindestens einer Ziffer vor dem Komma und zwei Nachkommastellen. Ein Tausender-Zeichen wird angegeben.

Page 29: VBA (Visual Basic for Application) - luis.uni-hannover.de · Regionales Rechenzentrum für Niedersachsen VBA (Visual Basic for Application) Austausch von Daten

OpenOffice | | Folie 29Access 2007 – VBA | 06.03.08 | Seite 29

Regionales Rechenzentrum für Niedersachsen

Word öffnen

Voraussetzung: Word ist auf dem Zielrechner vorhanden. Mit Hilfe von Extras – Verweise ist der Verweis Microsoft Word 12.0

Object Library aktiviert. Mit Hilfe von CreateObject wird ein Verweis auf die Word-Anwendung

erzeugt. Die Anwendung wird versteckt geöffnet. Mit Hilfe der Eigenschaft .Visible wird die Anwendung eingeblendet. Mit Hilfe der Methode .Quit wird die Anwendung geschlossen.

Dim wdApp As Word.Application

Set wdApp = CreateObject("Word.Application")wdApp.Visible = True

wdApp.QuitSet wdApp = Nothing

Page 30: VBA (Visual Basic for Application) - luis.uni-hannover.de · Regionales Rechenzentrum für Niedersachsen VBA (Visual Basic for Application) Austausch von Daten

OpenOffice | | Folie 30Access 2007 – VBA | 06.03.08 | Seite 30

Regionales Rechenzentrum für Niedersachsen

Neue Dokument anlegen

Documents enthält alle geöffneten Dokumente und Vorlagen in Word. Mit Hilfe von Documents.Add wird ein neues Dokument der Auflistung

hinzugefügt. Standardmäßig wird die Vorlage (Template) Normal genutzt. Mit Hilfe des Parameters Visible wird das neue Dokument in angezeigt. Falls eine Vorlage gespeichert werden soll, wird der Parameter NewTemplate

auf True gesetzt. .Close schließt das Dokument.

Dim wdDoc As Word.Document

Set wdDoc = wdApp.Documents.Add(Template:=pathTemplate, _ Visible:=True)wdApp.Visible = True

wdDoc.CloseSet wdDoc = Nothing

Page 31: VBA (Visual Basic for Application) - luis.uni-hannover.de · Regionales Rechenzentrum für Niedersachsen VBA (Visual Basic for Application) Austausch von Daten

OpenOffice | | Folie 31Access 2007 – VBA | 06.03.08 | Seite 31

Regionales Rechenzentrum für Niedersachsen

Neue Dokument anlegen

.SaveAs speichert ein Word-Dokument unter einem neuen Namen. Es können Angaben zum Format des Textes gemacht werden. Zum Beispiel FileFormat:=wdFormatRTF speichert den Text im RTF-Format.

Das Dokument kann mit einem Passwort zum Lesen oder Ändern des Dokuments versehen werden.

.Save speichert die Änderungen eines Dokuments.

Dim wdDoc As Word.Document

Set wdDoc = wdApp.Documents.Add(Template:=pathTemplate, _ Visible:=True)

wdDoc.SaveAs FileName:=pathBrief

wdDoc.CloseSet wdDoc = Nothing

Page 32: VBA (Visual Basic for Application) - luis.uni-hannover.de · Regionales Rechenzentrum für Niedersachsen VBA (Visual Basic for Application) Austausch von Daten

OpenOffice | | Folie 32Access 2007 – VBA | 06.03.08 | Seite 32

Regionales Rechenzentrum für Niedersachsen

Mit Textmarken arbeiten

Die Auflistung Bookmarks enthält alle Textmarken, die in einem Word-Dokument existieren.

Die Methode .Exists liefert True, wenn die angegebene Textmarke existiert.

Dim wdRange As Word.Range

If wdDoc.Bookmarks.Exists("markAdress") ThenSet wdRange = wdDoc.Bookmarks("markAdress").Range

wdRange.Text = "RRZN" & vbCrLf & "Schloßwender Str. 5"End If

Page 33: VBA (Visual Basic for Application) - luis.uni-hannover.de · Regionales Rechenzentrum für Niedersachsen VBA (Visual Basic for Application) Austausch von Daten

OpenOffice | | Folie 33Access 2007 – VBA | 06.03.08 | Seite 33

Regionales Rechenzentrum für Niedersachsen

Selection oder Range

.Selection ... ist immer nur einmal in einem Word-Dokument vorhanden. ... repräsentiert die aktuelle Markierung von Text. Falls kein Text oder Objekt ausgewählt ist, bezieht sich .Selection auf die

Einfügemarke. .Range

... stellt immer den Bereich dar, der bearbeitet werden soll. ... kann beliebig oft in einem Word-Dokument vorkommen. Die Größe wird durch eine Start- und Endposition festgelegt. ... kann nur durch die Einfügemarke definiert werden.

Mit Hilfe der Eigenschaft .Text ... kann vorhandener Text innerhalb des gewählten Bereichs ersetzt werden. ... Text an einer bestimmten Position eingefügt werden.