Formular per Makro in Urzustand versetzen
#1
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:

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
Top
#2
Hallo,

wie wäre es, das Formulat als Vorlage zu speichern und damit jedes Mal ein neues Dokument anzuulegen?

mfg
Top
#3
es ist ja schon eine Vorlage. Ich speichere die geschriebenen Formulare danach einfach nur als PDF fürs Archiv. 

Nur muss ich, selbst wenn es als Vorlage gespeichert ist, doch die Date immer erst schließen um wieder an den Ausgangspunkt zu kommen, oder?
Top
#4
Hi,

gehe mal hin, wenn Du das Formular ausgefüllt und als PDF abgespeichert hast und
  1. klicke ggf. auf ein anderes Blatt
  2. starte den Markorekorder
  3. markiere im richtigen Blatt alle zu leerenden Zellen
  4. lösche den Inhalt der Zellen
  5. markiere eine der Zellen
  6. stoppe den Makrorekorder
Dann gehst Du in den VBA-Editor und postest hier den aufgezeichneten Makrocode, dann können wir ihn gemeinsam verallgemeinern und auf Relevantes reduzieren.
Top
#5
Hallo,

Zitat:Ist es möglich, per VBA, ein Formular per Textmarken zu füllen und anschließend wieder in den Urzustand zu versetzen?

Ja, das ist natürlich machbar wenn es im Code berücksichtigt wird.

Da Du ja bereits mit VBA arbeitest ... das Zauberwort heißt SaveAs ....
Schau mal in der VBA-Onlinehilfe oder meinetwegen auch bei Google nach.

Ich selbst bin schon fast auf dem Weg zu einem Arzttermin. Darum kann ich
jetzt zunächst nicht genauer weiterhelfen.
Top
#6
Hallo,

Zitat:... es ist ja schon eine Vorlage. Ich speichere die geschriebenen Formulare danach einfach nur als PDF fürs Archiv. 

wenn Du doch schon eine Vorlage hast, dann verstehe ich Deine Bauchschmerzen nicht.
Top
#7
Hallo PieWie,

warum stellst Du Deine Frage hier im Excelunterforum und nicht im Wordunterforum?

Gruß Uwe
Top
#8
Hi Peter,

(07.08.2018, 23:17)Käpt\n Blaubär schrieb: wenn Du doch schon eine Vorlage hast, dann verstehe ich Deine Bauchschmerzen nicht.

er macht also die Vorlage auf und füllt sie aus.
Er speichert das Blatt als PDF
Wenn er es nun mit anderem Inhalt füllen will, ist das Blatt schon mit dem alten voll. Also muß er es leeren (manuell oder VBA) oder die Datei schließen und die Vorlage wieder öffnen.

Das Letztere will er nicht, also braucht er den VBA-Code zum Leeren.
Top
#9
Hallo,

wäre evtl nicht auch eine Alternative:

Per Button eine Kopie in einer neuen Seite erstellen, Ansicht auf das neue Blatt, wenn fertig dann per Button als pdf speichern und dieses Blatt löschen und die Ansicht wieder auf die Vorlage.
Top
#10
@Kuwer ....... das ist mir leider auch erst gestern Abend aufgefallen.Du hast recht, es ist ein Word-Formular mit einem Makro. Keine Excel Datei. Bin wohl bei der Auswahl ins falsche Forum gerutscht. Sorry dafür!

@M.Wichmann: Ja das klingt nach einer Variante. Alternativ habe ich überlegt das ganze komplett in Excel zu transferieren und einfach eine stupide Eingabemaske auf einem Tabellenblatt zu erstellen, die die eingegebenen Daten per Verweis in ein Formular auf einem weiteren Tabellenblatt übertragen. Allerdings müsste ich mir dann etwas mit den Adressdaten einfallen lassen. So eine Box wie ich sie aktuell in dem Word-Formular habe, wäre da natürlich sehr hilfreich.

@Rabe: Richtig erfasst. Es passiert halt häufiger das ein Kunde das Formular mit unterschiedlichen Angaben benötigt. Der zusätzliche Schritt ist einfach umständlich.
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste