Clever-Excel-Forum

Normale Version: Formular per Makro in Urzustand versetzen
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2
Hallo PieWie,

mach es doch einfach so:
Sub CommandButton1_Click()
  Dim oExcelApp As Object
  Dim oExcelWorkbook As Object
  Dim lZeile As Long

   'Textmarken vorsorglich leeren
   ActiveDocument.Bookmarks("Händlername").Range.Text = ""
   ActiveDocument.Bookmarks("Händlername2").Range.Text = ""
   ActiveDocument.Bookmarks("Händlerstraße").Range.Text = ""
   ActiveDocument.Bookmarks("Händlerstraße2").Range.Text = ""
   ActiveDocument.Bookmarks("HändlerPLZ").Range.Text = ""
   ActiveDocument.Bookmarks("HändlerPLZ2").Range.Text = ""
   ActiveDocument.Bookmarks("HändlerOrt").Range.Text = ""
   ActiveDocument.Bookmarks("HändlerOrt2").Range.Text = ""
   ActiveDocument.Bookmarks("Produkt").Range.Text = ""
   ActiveDocument.Bookmarks("Seriennummer").Range.Text = ""
   ActiveDocument.Bookmarks("Versanddatum").Range.Text = ""
   
    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
Gruß Uwe
Hi,

(08.08.2018, 07:32)PieWie schrieb: [ -> ]Du hast recht, es ist ein Word-Formular mit einem Makro. Keine Excel Datei.

Das Thema ist auch für andere interessant, kannst Du mal die Word-Vorlage und die Excel-Datei mit Dummy-Daten zur Verfügung stellen, dann können wir auch das Makro von Uwe testen.

Hier steht, wie es geht (gilt ebenso für Word-Dateien):
WICHTIG: Arbeitsmappen zur Verfügung stellen
@Kuwer: Die Textmarken werden leider vor der Füllung gelöscht, wodurch das restliche Makro dann nicht ausgeführt werden kann.

@Rabe: beide Dateien anbei. Das wäre das Formular in der "Rumpf"-Version. Der Pfad zum öffnen der Excel-Datei muss nachgepflegt werden.
Hi,

danke für die Dateien.

Die Textmarken werden durch Uwes Code, wie Du schon geschrieben hast, gelöscht und nicht geleert. Wenn das Löschen ausgeblendet wird, dann werden die Textmarken durch den Text überschrieben und sind keine Textmarken mehr.
Hallo,

nach einer kurzen Ansicht der Dateien:

Das ist doch ein ganz normaler Serienbrief, da wird weder ein Makro noch eine Vorlage benötigt.

Es müssen nur einmal die Felder der xlsx im Text definiert werden, neue Adressen in das xl-Blatt eingetragen werden und beim Ausdruck selektiert werden.

Oder habe ich da etwas falsch verstanden?

mfg
@Fennek: Ein Serienbrief beinhaltet für mich einen Text der an verschiedene Adressen verschickt wird. Der Grundtext meines Formulars ist zwar auch immer gleich, aber bestimmte Textstellen werden jedes mal ausgetauscht
Hi,

was/wer hindert Dich daran, weitere Platzhalter für die veränderlichen Texte im Word-Dokument zu hinterlegen?
Hallöchen,

bei dem Seriendruck kann man doch auch gezielt einzelne Seiten drucken. Eventuell könnte man das so gestalten, dass man wie schon in den codes den Adressaten auswählt und statt über den Code Textmarken zu füllen dann den Seriendruck von Seite lZeile… ausführt?
hm..... insgesamt ist das alles etwas umständlich  Dodgy (das ist keine Kritik an den Vorschlägen!!). Hatte es mir etwas einfach vorgestellt :19:

Mir ist die Tage jetzt ein ähnliches Projekt/Formular auferlegt worden. Da habe ich es komplett anders gemacht und die Datei direkt in Excel erstellt.
Sie ist noch nicht komplett fertig, aber ich kann sie, ohne sie zwischendrin zu schließen, wiederverwenden. 
Ich denke ich baue meine Word-Datei einfach auf Excel um und übernehme das Makro und die Userform.....:16:
Seiten: 1 2