Hallo Zusammen
Ich arbeite zur Zeit an einer Lösung, aus einer Excel Tabelle eine Word-Datei zu generieren, in welcher bestimmte Zellen übernommen werden.
Bis jezt habe ich den Code, damit mir aus Zeile 6, Zelle A1 bis K1 alle Werte übernommen werden.
Diese Werte werden an bestimmten "Textmarken" im Word hingeschrieben.
So weit so gut.
Nun möchte ich aber, dass mir zu beginn ein Pop-Up Fenster, oder wie diese Lösung auch immer heisst im Excel, erscheint, bei welchem gefragt wird, aus welcher Zeile ich die Daten herauslesen möchte. Und es anhand dieser Zeile die Werte passend übernimmt und ein Word generiert.
Geht das mit Hilfe eines Zusatzes in meinem Code oder in wie fern muss ich diesen anpassen?
Meine VBA-Kenntnisse sind solala...
Meiner aktueller Code ist folgendermassen:
Option Explicit
Sub Textmarken()
Dim objWDApp As Object, objDocx As Object, TB, Z, ArrWord, Bmark As String, SP As Integer
Dim WPfad As String, WDatei As String, WNeuNam As String
ArrWord = Array("Bescheinigung", "Artikel", "Menge", "Bauteil", "Hersteller", _
"Zeugnis", "Werkstoff", "Charge", "Probe", "Stempelcode1", "Stempelcode2")
'*** anpassen
WPfad = "C:\Vorlagen"
WDatei = "USBTest.dotx"
Set TB = ThisWorkbook.Sheets("MATERIALBUCH")
'*** anpassen Ende
'*** Prüfen, Pfad existiert
WPfad = IIf(Right(WPfad, 1) = "\", WPfad, WPfad & "\") 'pfüfen und setzetn \ am Ende
If Dir(WPfad, vbDirectory) = "" Then
MsgBox "Verzeichnis" & vbLf & vbLf & _
" " & WPfad & vbLf & vbLf & _
"existiert nicht!", vbCritical, "Allgemeine Verwaltungsfehler"
Exit Sub
End If
'*** Prüfen, ob Datei im Pfad existiert
If Dir(WPfad & WDatei) = "" Then
MsgBox "Vorlagedatei " & vbLf & vbLf & _
" " & WDatei & vbLf & vbLf & _
"im Verzeichnis " & vbLf & vbLf & _
" " & WPfad & vbLf & vbLf & _
"nicht gefunden!", vbCritical, "Allgemeine Verwaltungsfehler"
Exit Sub
End If
'*** Word-Anwendung sichtbar starten
Set objWDApp = CreateObject("Word.Application")
objWDApp.Visible = True
'*** neue Datei aus Vorlage generieren
Set objDocx = objWDApp.Documents.Add(WPfad & WDatei)
With objDocx
'*** prüfen, ob Textmarken existieren, dann im Worddokument einfügen/ersetzen
For Each Z In ArrWord
'*** Spaltenzähler
SP = SP + 1
'*** unzulässige Zeichen tauschen/entfernen
Bmark = Replace(Z, " ", "_")
Bmark = Replace(Bmark, "-", "")
Bmark = Replace(Bmark, "(", "")
Bmark = Replace(Bmark, ")", "")
Bmark = Replace(Bmark, "/", "")
Bmark = Replace(Bmark, "\", "")
If .Bookmarks.Exists(Bmark) Then _
.Bookmarks(Bmark).Range.Text = TB.Cells(6, SP) '*** lesen aus erster Zeile, Spalte ab A
Next
'*** Neuen Namen zusammensetzen
WNeuNam = WDatei & "_" & Format(Date, "YYYYMMDD") & ".docx"
'*** Worddatei mit neuem Namen speichern
.SaveAs (WPfad & WNeuNam)
End With
'*** Word schließen
'objWDApp.Quit 'bei Bedarf
End Sub
Besten Dank für Eure Hilfe
|