Hallo liebe Community,
ich bin in Sachen VBA leider neu aber würde mir die Arbeit damit gern etwas erleichtern und hoffe ihr könnt mir da ein wenig weiterhelfen.
Worum es geht:
Ich muss auf Arbeit mehrere Word Dokumente immer mit den gleichen Daten füllen (Seriennumern eines Flugzeugs etc).
Nun hätte ich es idealerweise gern so, dass diese Daten in einer Excel Datei stehen und zwar so, dass sich beim öffnen der Excel Liste ein Abfragefenster bekomme um welches Flugzeug es geht und er automatisch diese Daten für dieses Flugzeug ausliest und in die entsprechenden Felder in den Word Dokumenten einträgt- Die Formularfelder habe ich in alle Word Dokumente bereits eingefügt. Falls das Flugzeug noch nicht angelegt ist, soll eine Maske kommen, wo man entsprechende Daten eintragen kann.
Mit einem Button 'Export' sollen dann nacheinander alle Word Dokumente geöffnet werden und mit den Daten des entsprechenden Flugzeugs gefüttert werden. Dabei können die Word Dokumente danach einfach offen bleiben, sodass man diese gegebenfalls ausdrucken oder abspeichern kann.
Um eine kleine Idee davon zu bekommen, habe ich mir bereits schonmal ein Skript zusammengesammelt, welches funktioniert aber zu umständlich ist. Dort muss man jedes mal die Zeile mit den Daten markieren und den Dateiort manuell ändern. Außerdem ist das mit den Masken auch noch nicht realisiert worden.
Ich hoffe ich hab mich einigermaßen verständlich ausgedrückt und könnt mir dabei weiterhelfen.
Vielen Dank im vorau!
Gruß Jacob
ich bin in Sachen VBA leider neu aber würde mir die Arbeit damit gern etwas erleichtern und hoffe ihr könnt mir da ein wenig weiterhelfen.
Worum es geht:
Ich muss auf Arbeit mehrere Word Dokumente immer mit den gleichen Daten füllen (Seriennumern eines Flugzeugs etc).
Nun hätte ich es idealerweise gern so, dass diese Daten in einer Excel Datei stehen und zwar so, dass sich beim öffnen der Excel Liste ein Abfragefenster bekomme um welches Flugzeug es geht und er automatisch diese Daten für dieses Flugzeug ausliest und in die entsprechenden Felder in den Word Dokumenten einträgt- Die Formularfelder habe ich in alle Word Dokumente bereits eingefügt. Falls das Flugzeug noch nicht angelegt ist, soll eine Maske kommen, wo man entsprechende Daten eintragen kann.
Mit einem Button 'Export' sollen dann nacheinander alle Word Dokumente geöffnet werden und mit den Daten des entsprechenden Flugzeugs gefüttert werden. Dabei können die Word Dokumente danach einfach offen bleiben, sodass man diese gegebenfalls ausdrucken oder abspeichern kann.
Um eine kleine Idee davon zu bekommen, habe ich mir bereits schonmal ein Skript zusammengesammelt, welches funktioniert aber zu umständlich ist. Dort muss man jedes mal die Zeile mit den Daten markieren und den Dateiort manuell ändern. Außerdem ist das mit den Masken auch noch nicht realisiert worden.
Code:
Sub WordMitBestehendemDokumentStarten2()
'um die aktuelle Zeile zu ermitteln
i = ActiveCell.Row
Pfad = Cells(1, 1) 'entweder in A1 den Pfad eingeben oder diese Zeile auskommentieren...
' Pfad = "C:\temp\Excel-Word.doc" '...und hier den Pfad eingeben
On Error Resume Next
Set wdAnw = GetObject(, "Word.Application") 'Bestehende Word-Instanz suchen
Select Case Err.Number
Case 0 'Alles paletti
Case 429 'Es gibt soweit keine Word-Instanz
Err.Clear
Set wdAnw = CreateObject("Word.Application") 'Word-Instanz erzeugen
If Err.Number > 0 Then
BadOrHappyEnd Err.Number, Err.Description
Exit Sub
End If
Case Else 'Unerwarteter Fehler
BadOrHappyEnd Err.Number, Err.Description
Exit Sub
End Select
On Error GoTo 0
'
wdAnw.Visible = True 'Instanz sichtbar machen
wdAnw.WindowState = 0
'
'Je nach dem, ob das Dokument bereits geöffnet ist oder nicht wird verbunden
'bzw. geöffnet. Diese Differenzierung geschieht implizit.
On Error Resume Next
Set wdDok = wdAnw.Documents.Open(Filename:=Pfad)
If Err.Number > 0 Then 'Wenn Arbeitsmappe nicht existiert oder unerwarteter Fehler
BadOrHappyEnd Err.Number, Err.Description
Exit Sub
End If
On Error GoTo 0
'hier kommt das eigentliche Eintragen
wdAnw.ActiveDocument.FormFields.Item("Regist").Result = Cells(i, 1)
wdAnw.ActiveDocument.FormFields.Item("Modell").Result = Cells(i, 2)
wdAnw.ActiveDocument.FormFields.Item("MSN").Result = Cells(i, 3)
wdAnw.ActiveDocument.FormFields.Item("Customer").Result = Cells(i, 4)
wdAnw.ActiveDocument.FormFields.Item("ESN1").Result = Cells(i, 5)
wdAnw.ActiveDocument.FormFields.Item("ESN2").Result = Cells(i, 6)
wdAnw.ActiveDocument.FormFields.Item("MSNAPU").Result = Cells(i, 7)
wdAnw.ActiveDocument.FormFields.Item("NLG").Result = Cells(i, 8)
wdAnw.ActiveDocument.FormFields.Item("MLGLH").Result = Cells(i, 9)
wdAnw.ActiveDocument.FormFields.Item("MLGRH").Result = Cells(i, 10)
BadOrHappyEnd Err.Number, Err.Description
End Sub
Private Sub BadOrHappyEnd(rc As Long, fehler As String)
If rc > 0 Then
MsgBox fehler, vbExclamation
End If
Set wdDok = Nothing 'Aufräumen
Set wdAnw = Nothing
End Sub
Ich hoffe ich hab mich einigermaßen verständlich ausgedrückt und könnt mir dabei weiterhelfen.
Vielen Dank im vorau!
Gruß Jacob
Zuletzt bearbeitet: