07.08.2018, 14:01
(Dieser Beitrag wurde zuletzt bearbeitet: 08.08.2018, 02:33 von Rabe.
Bearbeitungsgrund: Codetags; später: Betreff korrigiert, Marko zu Makro
)
Hallo zusammen,
vorab schonmal vielen Dank an alle die zur Problemlösung beitragen. Ich selber bin kein großer Crack. Ich baue mir meine eigenen Makros zur Vereinfachung mancher Aufgaben, leider reicht mein Wissen nicht immer aus um etwas zu lösen. Daher folgende Frage an euch:
Ist es möglich, per VBA, ein Formular per Textmarken zu füllen und anschließend wieder in den Urzustand zu versetzen?
Hintergrund:
Ich habe ein Formular erstellt, welches über ein Makro Textmarken füllt. Über einen Shortcut starte ich eine Textbox mit der ich den Kunden auswählen und weitere Informationen eintragen kann. Die Daten werden in die jeweiligen Textmarken übernommen und ich wandel das Formular in PDF um. Soweit, so gut…..
Bei einer einmaligen Eingabe ist das alles schön und gut. Müssen aber mehrere Dokumente erstellt werden, muss ich die Date erst schließen und neu starten. Und eben diesen Schritt möchte ich mir ersparen.
Ich habe schon diverse Sachen versucht, aber leider hat bis jetzt nichts geklappt. Eventuell kann mir ja jemand von euch weiterhelfen.
Anbei mein erstellter Code:
vorab schonmal vielen Dank an alle die zur Problemlösung beitragen. Ich selber bin kein großer Crack. Ich baue mir meine eigenen Makros zur Vereinfachung mancher Aufgaben, leider reicht mein Wissen nicht immer aus um etwas zu lösen. Daher folgende Frage an euch:
Ist es möglich, per VBA, ein Formular per Textmarken zu füllen und anschließend wieder in den Urzustand zu versetzen?
Hintergrund:
Ich habe ein Formular erstellt, welches über ein Makro Textmarken füllt. Über einen Shortcut starte ich eine Textbox mit der ich den Kunden auswählen und weitere Informationen eintragen kann. Die Daten werden in die jeweiligen Textmarken übernommen und ich wandel das Formular in PDF um. Soweit, so gut…..
Bei einer einmaligen Eingabe ist das alles schön und gut. Müssen aber mehrere Dokumente erstellt werden, muss ich die Date erst schließen und neu starten. Und eben diesen Schritt möchte ich mir ersparen.
Ich habe schon diverse Sachen versucht, aber leider hat bis jetzt nichts geklappt. Eventuell kann mir ja jemand von euch weiterhelfen.
Anbei mein erstellter Code:
Code:
Sub Workbook_Open()
UserForm1.Show
End Sub
Sub CommandButton1_Click()
Dim oExcelApp As Object
Dim oExcelWorkbook As Object
Dim lZeile As Long
If ListBox1.ListIndex >= 0 Then
'Zuerst wird die Excel Datei geöffnet
Set oExcelApp = CreateObject("Excel.Application")
Set oExcelWorkbook = oExcelApp.Workbooks.Open(sAdressDatei)
lZeile = 2
With oExcelWorkbook.sheets(sTabellenblatt)
Do While .Cells(lZeile, 1) <> ""
If ListBox1.Text = CStr(.Cells(lZeile, 2).Value) Then
'Eintrag gefunden, Textmarken füllen
ActiveDocument.Bookmarks("Händlername").Range.Text = _
CStr(.Cells(lZeile, 2).Value)
ActiveDocument.Bookmarks("Händlername2").Range.Text = _
CStr(.Cells(lZeile, 2).Value)
ActiveDocument.Bookmarks("Händlerstraße").Range.Text = _
CStr(.Cells(lZeile, 5).Value)
ActiveDocument.Bookmarks("Händlerstraße2").Range.Text = _
CStr(.Cells(lZeile, 5).Value)
ActiveDocument.Bookmarks("HändlerPLZ").Range.Text = _
CStr(.Cells(lZeile, 3).Value)
ActiveDocument.Bookmarks("HändlerPLZ2").Range.Text = _
CStr(.Cells(lZeile, 3).Value)
ActiveDocument.Bookmarks("HändlerOrt").Range.Text = _
CStr(.Cells(lZeile, 4).Value)
ActiveDocument.Bookmarks("HändlerOrt2").Range.Text = _
CStr(.Cells(lZeile, 4).Value)
ActiveDocument.Bookmarks("Produkt").Range.Text = TextBox2.Value
ActiveDocument.Bookmarks("Seriennummer").Range.Text = TextBox1.Value
ActiveDocument.Bookmarks("Versanddatum").Range.Text = TextBox3.Value
Exit Do
End If
lZeile = lZeile + 1
Loop
End With
oExcelWorkbook.Close False
oExcelApp.Quit
Else
MsgBox "Bitte wählen Sie einen Eintrag aus der Liste aus!", _
vbInformation + vbOKOnly, "HINWEIS!"
Exit Sub
End If
Set oExcelWorkbook = Nothing
Set oExcelApp = Nothing
Unload Me
End Sub