Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Formular per Makro in Urzustand versetzen
#11
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
Antwortento top
#12
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
Antwortento top
#13
@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.


Angehängte Dateien
.dotm   Vorlage Formular.dotm (Größe: 848,65 KB / Downloads: 3)
.xlsx   TextExcel Datei Adressen.xlsx (Größe: 10,58 KB / Downloads: 3)
Antwortento top
#14
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.
Antwortento top
#15
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
Antwortento top
#16
@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
Antwortento top
#17
Hi,

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


Gehe zu:


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