Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Von exceltabelle in word per steuerelement temarker

Von exceltabelle in word per steuerelement temarker
16.04.2024 19:22:16
Ritchi788
Guten Tag,

ich habe folgendes Problem: Ich habe eine Excel-Tabelle, die ich automatisch per Steuerelement in Textmarken einer Word-Datei einfügen möchte. Jedoch erhalte ich jedes Mal eine Fehlermeldung, und es werden die folgenden Zeilen markiert:
Sub DatenInWordEinfügen()
ws As Worksheet

Und hier der ganze Code:

Private Sub Suchfeld_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = vbKeyReturn Then
DatenInWordEinfügen
End If
End Sub

Sub DatenInWordEinfügen()
Dim ws As Worksheet
Dim excelData As Variant
Dim zeilenNummer As Integer
Dim aktenzeichen As String

' Arbeitsblatt mit den Excel-Daten festlegen (passen Sie den Namen des Arbeitsblatts an)
Set ws = ThisWorkbook.Sheets("Wild")
If ws Is Nothing Then
MsgBox "Das Arbeitsblatt konnte nicht gefunden werden.", vbExclamation
Exit Sub
End If

' Das Aktenzeichen aus dem Suchfeld abrufen
aktenzeichen = ActiveDocument.FormFields("Suchfeld").Result

' Zeilennummer aus dem Suchfeld in Word lesen
zeilenNummer = Val(aktenzeichen)

' Excel-Daten in eine Variable lesen (passen Sie die Zellenkoordinaten an)
excelData = ws.Rows(zeilenNummer).Value

' Daten in das Word-Dokument einfügen
With ThisDocument
.Bookmarks("Datum").Range.Text = excelData(1, 3)
.Bookmarks("Uhrzeit").Range.Text = excelData(1, 4)
.Bookmarks("Ort").Range.Text = excelData(1, 5)
.Bookmarks("Vorname").Range.Text = excelData(1, 7)
.Bookmarks("Name").Range.Text = excelData(1, 8)
.Bookmarks("Geburtsdatum").Range.Text = excelData(1, 9)
.Bookmarks("Adresse").Range.Text = excelData(1, 10)
.Bookmarks("Postleitzahl").Range.Text = excelData(1, 11)
.Bookmarks("Konsummittel").Range.Text = excelData(1, 12)

' Hier weitere Datenfelder entsprechend der Spalten in Excel einfügen
End With
End Sub



Wäre schön wenn mir jemand helfen kann, weil bin mittlerweile am verzweifeln.
Anzeige

72
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Von exceltabelle in word per steuerelement temarker
16.04.2024 20:07:17
JoWE
Hallo Ritchi,
Schade dass Du weder Beispiel-Arbeitsmappe noch Beispiel-Worddatei hochgeladen hast.
So ist jeglicher Hilfeversuch eher wenig erfolgversprechend.

Gruß
Jochen
AW: Von exceltabelle in word per steuerelement temarker
17.04.2024 13:50:01
Ritchi788
Ich würde gerne die Daten hier hochladen, damit ihr euch das Problem anschauen könnt, aber leider erlaubt es mein Handy nicht, die Daten hochzuladen. Ich habe ein Dropdown-Feld erstellt, um mich auf verschiedene Aktenzeichen zu beziehen, und eine Schaltfläche hinzugefügt, um das Skript auszuführen, das dann automatisch die Daten aus der Excel-Tabelle in die entsprechenden Textmarken einfügen soll. Obwohl die Codes die Word-Datei öffnen, wenn ich sie manuell ausführe, beziehen sie sich trotzdem nicht auf die entsprechenden Zeilen. Ich dachte, der Lösungsweg wäre einfacher, aber auch hier funktioniert irgendwie etwas nicht. Ich hänge hier mal noch 2 Codes an, vielleicht hat ja jemand eine Idee.

Das steht im Modul 1


Sub DatenInWordEinfügen()
    Dim wordApp As Object
    Dim wordDoc As Object
    Dim ws As Worksheet
    Dim excelData As Variant
    Dim excelTime As Date
    Dim zeile As Long
   
    ' Word-Anwendung starten
    On Error Resume Next
    Set wordApp = GetObject(, "Word.Application")
    If wordApp Is Nothing Then
        Set wordApp = CreateObject("Word.Application")
    End If
    On Error GoTo 0
   
    wordApp.Visible = True ' Word sichtbar machen
   
    ' Word-Dokument öffnen
    On Error Resume Next
    Set wordDoc = wordApp.Documents.Open("C:\Users\Rahmeln\Desktop\Test\Test Macro.docm")
    If wordDoc Is Nothing Then
        MsgBox "Das Word-Dokument konnte nicht geöffnet werden.", vbExclamation
        wordApp.Quit
        Exit Sub
    End If
    On Error GoTo 0
   
    ' Arbeitsblatt mit den Excel-Daten festlegen (passen Sie den Namen des Arbeitsblatts an)
    Set ws = ThisWorkbook.Sheets("Test Excel")
    If ws Is Nothing Then
        MsgBox "Das Arbeitsblatt konnte nicht gefunden werden.", vbExclamation
        wordDoc.Close
        wordApp.Quit
        Exit Sub
    End If
   
    ' Excel-Daten in eine Variable lesen (passen Sie die Zellenkoordinaten an)
    For zeile = 4 To 253 ' Annahme: 250 Zeilen für die Daten
        excelData = ws.Cells(zeile, 2).Resize(1, 15).Value ' Annahme: 15 Spalten für die Daten
       
        ' Zeitwert aus Excel in ein korrektes Zeitformat konvertieren
        excelTime = TimeSerial(Hour(excelData(1, 4)), Minute(excelData(1, 4)), Second(excelData(1, 4)))
       
        ' Daten in das Word-Dokument einfügen
        With wordDoc
            .Bookmarks("Datum").Range.Text = excelData(1, 3) ' Annahme: Spalte 1 enthält das Datum
            .Bookmarks("Uhrzeit").Range.Text = Format(excelTime, "hh:mm:ss") ' Formatierung der Uhrzeit
            .Bookmarks("Ort").Range.Text = excelData(1, 3) ' Annahme: Spalte 3 enthält den Ort
            .Bookmarks("Vorname").Range.Text = excelData(1, 7) ' Annahme: Spalte 7 enthält den Vornamen
            .Bookmarks("Name").Range.Text = excelData(1, 8) ' Annahme: Spalte 8 enthält den Nachnamen
            .Bookmarks("Geburtsdatum").Range.Text = excelData(1, 9) ' Annahme: Spalte 9 enthält das Geburtsdatum
            .Bookmarks("Adresse").Range.Text = excelData(1, 10) ' Annahme: Spalte 10 enthält die Adresse
            .Bookmarks("Postleitzahl").Range.Text = excelData(1, 11) ' Annahme: Spalte 11 enthält die Postleitzahl
            .Bookmarks("Konsummittel").Range.Text = excelData(1, 12) ' Annahme: Spalte 12 enthält das Konsummittel
        End With
    Next zeile
   
    ' Word-Dokument speichern (optional)
    ' wordDoc.Save
 
    ' Word-Dokument nicht schließen
    ' wordDoc.Close
   
    ' Word beenden (optional)
    ' wordApp.Quit
End Sub


Und das im Reiter 1 (Test Excel)

Sub DatenInWordEinfügen()
    Dim wordApp As Object
    Dim wordDoc As Object
    Dim aktenzeichen As String
   
    ' Word-Anwendung starten
    On Error Resume Next
    Set wordApp = GetObject(, "Word.Application")
    If wordApp Is Nothing Then
        Set wordApp = CreateObject("Word.Application")
    End If
    On Error GoTo 0
   
    wordApp.Visible = True ' Word sichtbar machen
   
    ' Word-Dokument öffnen
    On Error Resume Next
    Set wordDoc = wordApp.Documents.Open("C:\Pfad\zum\Word\Dokument.docx") ' Passe den Pfad zu deinem Word-Dokument an
    If wordDoc Is Nothing Then
        MsgBox "Das Word-Dokument konnte nicht geöffnet werden.", vbExclamation
        wordApp.Quit
        Exit Sub
    End If
    On Error GoTo 0
   
    ' Aktenzeichen aus dem Dropdown-Menü lesen
    aktenzeichen = ThisWorkbook.Sheets("Test Word").Shapes("DeinDropDown").ControlFormat.List(DeinDropDown.ListIndex)
   
    ' Daten in das Word-Dokument einfügen (hier kannst du deine Logik hinzufügen)
    ' Zum Beispiel: wordDoc.Bookmarks("Aktenzeichen").Range.Text = aktenzeichen
   
    ' Optional: Word-Dokument speichern
    ' wordDoc.Save
   
    ' Optional: Word-Dokument nicht schließen
    ' wordDoc.Close
   
    ' Optional: Word beenden
    ' wordApp.Quit
End Sub
 
Private Sub ComboBox1_Change()
Dim selectedAktenzeichen As String
selectedAktenzeichen = ComboBox1.Value
End Sub
 
Private Sub CommandButton1_Click()
'Code zum Abrufen der Daten aus Excel
'Code zum Einfügen der Dateien in die Word-Datei
End Sub
Anzeige
AW: Von exceltabelle in word per steuerelement temarker
17.04.2024 16:06:58
Alwin Weisangler
Hallo,

Du hast kein DropDown sondern eine Active-X Combobox. Das erkennt man an der von dir gezeigten Ereignisprozedur:


Private Sub Suchfeld_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)

Du kannst diese Combobox zwar auf DropDown-Modus stellen, bleibt aber trotzdem eine Combobox.

VBA funktioniert auch nicht auf deinem Handy oder Tablet.
Dazu braucht es brauchbare Hardware.
Am besten einen Win-PC oder -Laptop. Ob auf dem MAC das funktioniert weiß ich nicht.

Gruß Uwe


Anzeige
AW: Von exceltabelle in word per steuerelement temarker
17.04.2024 18:02:26
Ritchi788
Also ersetze ich das hier :

Private Sub ComboBox1_Change()
Dim selectedAktenzeichen As String
selectedAktenzeichen = ComboBox1.Value

Mit dem was du geschickt hast ?

Ja da hast du recht, habe aber leider nur Apple Produkte zuhause und von Arbeit wird das alles geblockt.
Anzeige
AW: Von exceltabelle in word per steuerelement temarker
17.04.2024 18:09:14
Ritchi788
Ich bin mittlerweile soweit, dass ich einen Serienbrief erstelle und dann ist gut. So kann ich auch die Zeile einfügen, was mir keine Kopfschmerzen mehr bereitet. Codes kann ich ja trotzdem hinzufügen, aber es ist dann halt leider nicht so clean, wie ich es mir vorgestellt habe.
AW: Von exceltabelle in word per steuerelement temarker
17.04.2024 18:32:07
Alwin Weisangler
Hallo,

wenn auf Arbeit die Ausführung von VBA blockiert wird, bleibt nur der Weg dies mit der Serienbrieffunktion zu erledigen.

Gruß Uwe
Anzeige
AW: Von exceltabelle in word per steuerelement temarker
17.04.2024 18:48:05
Ritchi788
Nein, VBA wird nicht blockiert, aber das Versenden von Excel- und Word-Dateien ist eingeschränkt, daher kann ich hier leider auch nichts anhängen oder die von dir geschickten Lösungen praktisch ausprobieren. Deshalb nehme ich die kleinen Sachen für morgen wieder mit zur Arbeit und teste das morgen mit der ComboBox, um zu sehen, ob das zum Erfolg führt. Es ist schon echt mühselig. Trotzdem danke ich dir für deine Geduld ;-)
Anzeige
AW: Von exceltabelle in word per steuerelement temarker
18.04.2024 11:51:43
JoWE
Ritchie,

ich weiß ja noch immer nicht wie Deine Tabelle aussieht und auch nicht was Deine Combobox anzeigt.
Mein hier folgender Code geht von folgender Voraussetzung aus (s. Bild):
Userbild
das Makro startet nach anklicken einer Zeile in der Combobox. Hier der Code:
Option Explicit


Private Sub Suchfeld_Click()

'einige Variablen und Objekte definiern
Dim Az As String 'Aktenzeichen
Dim zeNr As Long 'Zeilennummer
Dim ws As Worksheet 'die Excel-Tabelle mit den Daten

' Word-Application wird aktiviert 'Late Binding'
' daher ist kein Verweis mehr erforderlich
Dim wdApp As Object
Dim wdDoc As Object

' den Ablauf verzögernde Events abschalten
Application.ScreenUpdating = False
Application.EnableEvents = False

' Aktenzeichen und die entsprechende Zeilennummer anhand der
' angeklickten Zeile in der DropDown-Liste in die Variablen 'Az' und 'zeNr' schreiben
Az = Me.Suchfeld.List(Me.Suchfeld.ListIndex)
zeNr = Me.Suchfeld.ListIndex

' die Auswahl im Dropdown ist jetzt nicht mehr erforderlich, also aufheben
Me.Suchfeld.ListIndex = -1

' Word starten
Set wdApp = CreateObject("Word.Application")

' und sichtbar machen
wdApp.Visible = True

' das Word-Dokument ööfnen
Set wdDoc = wdApp.Documents.Open("G:\Mein Excel\Herbers Excel-Forum\Ritchi_16042024\test.docx")
' Set wdDoc = wdApp.Documents.Open("C:\Temp\test.docx")

' die Excel-Tabelle 'Tabelle1' wird zum Objekt 'ws' erhoben
Set ws = ThisWorkbook.Sheets(1)

' Daten aus dem Objet 'ws' in das Word-Dokument einfügen
With wdDoc
.Bookmarks("Aktenzeichen").Range.Text = ws.Cells(zeNr, 1)
.Bookmarks("Datum").Range.Text = Format(ws.Cells(zeNr, 3), "DD.MM.YYYY")
.Bookmarks("Uhrzeit").Range.Text = Format(ws.Cells(zeNr, 4), "hh:mm")
.Bookmarks("Ort").Range.Text = ws.Cells(zeNr, 5)
.Bookmarks("Vorname").Range.Text = ws.Cells(zeNr, 7)
.Bookmarks("Name").Range.Text = ws.Cells(zeNr, 8)
.Bookmarks("Geburtsdatum").Range.Text = Format(ws.Cells(zeNr, 9), "DD.MM.YYYY")
.Bookmarks("Adresse").Range.Text = ws.Cells(zeNr, 10)
.Bookmarks("Postleitzahl").Range.Text = ws.Cells(zeNr, 11)
.Bookmarks("Stadt").Range.Text = ws.Cells(zeNr, 12)
.Bookmarks("Konsummittel").Range.Text = ws.Cells(zeNr, 13)
' Hier weitere Datenfelder entsprechend der Spalten in Excel einfügen
End With

' Word in den Vordergund holen
wdApp.Activate

' die mit 'Set" definierten Objekte aus dem Speicher löschen
Set wdDoc = Nothing
Set wdApp = Nothing

' die für den normalen Ablauf deaktivierten Events wieder aktivieren
Application.ScreenUpdating = True
Application.EnableEvents = True

End Sub
Gruß
Jochen

Anzeige
AW: Von exceltabelle in word per steuerelement temarker
18.04.2024 12:00:41
JoWE
...Du musst hier
ab dieser Zeile: ' das Word-Dokument öffnen
diese Zeile löschen: Set wdDoc = wdApp.Documents.Open("G:\Mein Excel\Herbers Excel-Forum\Ritchi_16042024\test.docx")
und bei dieser Zeile das Hochkomma vor Set entfernen 'Set wdDoc = wdApp.Documents.Open("C:\Temp\test.docx")
Anzeige
AW: Von exceltabelle in word per steuerelement temarker
18.04.2024 17:05:16
Ritchi788
Was mich auch nervt, dass ich hier mit meinem Handy nichts hochladen kann. Habe alles auf dem Handy. Habe Screeshot wenigstens von der Tabelle gemacht und nicht mal das funktioniert.
AW: Von exceltabelle in word per steuerelement temarker
18.04.2024 17:08:10
Ritchi788
Der Code sieht gut aus. Welches Steuerelement genau verwendest du? Ist es das, was oben auf dem Bild orange mit dem dropdown Pfeil ist?
Anzeige
AW: Von exceltabelle in word per steuerelement temarker
18.04.2024 17:19:26
JoWE
Hallo,
Ja genau das ist es; eine ComboBox.
Gruß
Jochen
AW: Von exceltabelle in word per steuerelement temarker
18.04.2024 17:23:24
Ritchi788
Kann man hier nichts mit dem Handy hochladen? Also die Dateien übersteigen ja keine 600kb aber alles im Ordner ist bei mir grau hinterlegt.
AW: Von exceltabelle in word per steuerelement temarker
18.04.2024 17:42:28
JoWE
hmm, hab' ich mit dem Smartphone noch nicht gemacht. Frag' doch bei Hans mal nach.
Gruß
Jochen
Anzeige
AW: Von exceltabelle in word per steuerelement temarker
18.04.2024 18:22:51
Ritchi788
Ah, okay, das ist ein guter Tipp. Nun, ich werde bestimmt ö öfter hier sein, da ich mich in der Lernphase befinde :-D. Noch eine Frage zur Excel-Tabelle: Ich frage so oft, weil ich oft so viele Fehlermeldungen bekomme und stundenlang daran sitze, obwohl es am Ende nur ein Wort war. Aktenzeichen könnte ich sicherlich auch in die zweite Spalte verschieben und die Zeilennr in die erste, oder? Da man ja die Spalte A immer schön ausblenden kann und auch nicht wirklich darauf achten muss. Und wie genau gibt man das in die ComboBox bei der Formatierung ein, mit Az und zNr oder wie genau? Entschuldigung für die vielen Fragen.
Anzeige
AW: Von exceltabelle in word per steuerelement temarker
18.04.2024 18:59:54
JoWE
Ritchi,
Du erstellst auf der Tabelle1 ein ActiveX Steuerlement, genauer eine Combobox. In den Eigenschaften der ComboBox wird in der Kategorie 'ColumnCount' die Anzahl der zu zeigenden Spalten (z.B. 13) festgelegt. In der Kategorie 'BoundColumn' legst Du '1' fest, also die Spalte A, die in meinem Beispiel das Aktenzeichen enthält. In der Kategorie 'ListFillRange' wird nun der anzuzeigende Datenbereich (also z.B. Tabelle1!A2:M18) definiert. Alles erledigt ist dann, wenn Du die fertige ComboBox in der Kategorie '(Name)' noch "Suchfeld" genannt hast.
Das/mein Beispiel-Makro holt sich also das Aktenzeichen in die Variable Az aus der ersten Spalte der in der Combobox angeklickten Zeile und daraus wird auch die Zeilennummer (zeNr) gezogen.
Probiers mal anhand des von mir glieferten Tabellenfotos aus.
Soweit klar?
Sonst solltest Du Dich im Netz einfach mal gründlich zum Activex-Steuerelement 'ComboBox' und zu dessen Verwendung informieren.
Mehr kann ich Dir für Dein Arbeiten mit dem Handy nicht helfen.
Sobald Du einen PC oder ein Notebook mit MS Excel zur Verfügung hast und downloaden kannst, würde ich Dir natürlich meine Versuchs-Arbeitsmappe incl. Makro hochladen.
Gruß
Jochen
Anzeige
AW: Von exceltabelle in word per steuerelement temarker
18.04.2024 20:08:28
Ritchi788
Das ist jetzt wirklich die letzte Frage, muss ich hier selber noch was direkt in dem Code definieren? Habe keine Spalte mit Zeilennummer werde dann aber wohl eine erstellen. Bei dir steht ja vor dem Aktenzeichen Agz das aber nicht zwingend notwendig.

'einige Variablen und Objekte definiern
Dim Az As String 'Aktenzeichen
Dim zeNr As Long 'Zeilennummer
Dim ws As Worksheet 'die Excel-Tabelle mit den Daten

Und hier brauch ich auch nichts mehr machen oder ?

' Aktenzeichen und die entsprechende Zeilennummer anhand der
' angeklickten Zeile in der DropDown-Liste in die Variablen 'Az' und 'zeNr' schreiben
Az = Me.Suchfeld.List(Me.Suchfeld.ListIndex)
zeNr = Me.Suchfeld.ListIndex

Ich sage schon mal, vielen lieben Dank für alles und ein angenehmen Abend.
Anzeige
AW: Von exceltabelle in word per steuerelement temarker
18.04.2024 20:20:06
JoWE
also eigentlich ist nur in der Zeile
zeNr = Me.Suchfeld.ListIndex etwas zu ändern. Es muss da so heißen:
zeNr = Me.Suchfeld.ListIndex+2

Die Spalte mit der Zeiennummer kannst Du Dir auch sparen.

Das Aktenzeichen sollte aber unbedingt in der Spalte A stehen. Wie das Aktenzeichen aussieht ist unwichtig, da hier nur irgendein Wert, der auch Text sein kann, erwartet wird.
Anzeige
AW: Von exceltabelle in word per steuerelement temarker
18.04.2024 20:47:16
Ritchi788
Also, nochmals vielen lieben Dank dafür. Ich habe gedacht, dass die zNr. und Zeilennummer extrem wichtig sind. Ich hätte das mit der Spalte "Zeile" in Verbindung gebracht. Excel und Word sind wirklich nur etwas für Macher. ;-) . Ich mache drei Kreuze, wenn ich die Liste fertig bekomme. Danke noch einmal.
Anzeige
Gerne
18.04.2024 21:54:37
JoWE
AW: Von exceltabelle in word per steuerelement temarker
18.04.2024 17:02:14
Ritchi788
Sieht gut aus.
AW: Von exceltabelle in word per steuerelement temarker
18.04.2024 17:27:39
Ritchi788
Das dropdown fällt bezieht sich dann auf beide Werte 'Az' und 'zeNr' ? Oder auf nur eine Sache ?
Anzeige
AW: Von exceltabelle in word per steuerelement temarker
19.04.2024 11:33:57
Ritchi788
Es hat alles super geklappt. Jetzt ist mir zum Schluss etwas aufgefallen, woran ich nicht wirklich gedacht habe. Ich habe zwei verschiedene Word-Dateien. Ist es irgendwie möglich, eine davon auszuwählen, oder kann der Code sich auf eine bestimmte Spalte beziehen, wenn ich das eingebe, sodass er sich auf einen anderen Pfad bezieht? Von der Logik her erscheint mir das irgendwie nicht machbar, aber mit Excel kann man ja auch Satelliten steuern.
Anzeige
AW: Von exceltabelle in word per steuerelement temarker
19.04.2024 12:17:56
Ritchi788
Man könnte es doch so machen oder ?



Private Sub Suchfeld_Change()
' Einige Variablen und Objekte definieren
Dim Az As String ' Aktenzeichen
Dim zeNr As Long ' Zeilennummer
Dim ws As Worksheet ' Die Excel-Tabelle mit den Daten
Dim selectedDocument As String ' Auswahl aus Dropdown-Liste

' Word-Application wird aktiviert 'Late Binding'
' daher ist kein Verweis mehr erforderlich
Dim wdApp As Object
Dim wdDoc As Object

' Den Ablauf verzögernde Events abschalten
Application.ScreenUpdating = False
Application.EnableEvents = False

' Aktenzeichen aus Dropdown-Liste auslesen
selectedDocument = Me.Suchfeld.Value

' Die Excel-Tabelle 'Tabelle1' wird zum Objekt 'ws' erhoben
Set ws = ThisWorkbook.Sheets(1)

' Zeile in der Excel-Tabelle finden, die dem ausgewählten Aktenzeichen entspricht
zeNr = Application.Match(selectedDocument, ws.Columns("B"), 0)

' Word starten
Set wdApp = CreateObject("Word.Application")

' Und sichtbar machen
wdApp.Visible = True

' Das Word-Dokument entsprechend des ausgewählten Aktenzeichens öffnen
If selectedDocument = "A" Then
Set wdDoc = wdApp.Documents.Open("Pfad zum Word-Dokument für Cannabis")
ElseIf selectedDocument = "B" Then
Set wdDoc = wdApp.Documents.Open("Pfad zum Word-Dokument für Jugendschutz")
Else
MsgBox "Ungültige Auswahl."
Exit Sub
End If

' Daten aus dem Objekt 'ws' in das Word-Dokument einfügen
With wdDoc
.Bookmarks("Aktenzeichen").Range.Text = ws.Cells(zeNr, 1)
.Bookmarks("Datum").Range.Text = Format(ws.Cells(zeNr, 2), "DD.MM.YYYY")
.Bookmarks("Uhrzeit").Range.Text = Format(ws.Cells(zeNr, 3), "hh:mm")
.Bookmarks("Ort").Range.Text = ws.Cells(zeNr, 4)
.Bookmarks("Vorname").Range.Text = ws.Cells(zeNr, 6)
.Bookmarks("Name").Range.Text = ws.Cells(zeNr, 7)
.Bookmarks("Geburtsdatum").Range.Text = Format(ws.Cells(zeNr, 8), "DD.MM.YYYY")
.Bookmarks("Adresse").Range.Text = ws.Cells(zeNr, 9)
.Bookmarks("Postleitzahl").Range.Text = ws.Cells(zeNr, 10)
.Bookmarks("Mitarbeiter").Range.Text = ws.Cells(zeNr, 5)
.Bookmarks("Name2").Range.Text = ws.Cells(zeNr, 7)
.Bookmarks("Vorname2").Range.Text = ws.Cells(zeNr, 6)
.Bookmarks("Konsummittel").Range.Text = ws.Cells(zeNr, 11)
' Hier weitere Datenfelder entsprechend der Spalten in Excel einfügen
End With

' Word in den Vordergrund holen
wdApp.Activate

' Die mit 'Set' definierten Objekte aus dem Speicher löschen
Set wdDoc = Nothing
Set wdApp = Nothing

' Die für den normalen Ablauf deaktivierten Events wieder aktivieren
Application.ScreenUpdating = True
Application.EnableEvents = True
End Sub
Anzeige
AW: Von exceltabelle in word per steuerelement temarker
19.04.2024 12:49:47
JoWE
Hallo doch nochmal :-)

ich würde es so machen (mein Makro-Code):
Option Explicit


Private Sub Suchfeld_Click()

'einige Variablen und Objekte definiern
Dim Az As String 'Aktenzeichen
Dim zeNr As Long 'Zeilennummer
Dim ws As Worksheet 'die Excel-Tabelle mit den Daten
Dim Importdatei As String 'Die via AuswahlDialog zu nutzende Word-Datei

' Word-Application wird aktiviert 'Late Binding'
' daher ist kein Verweis mehr erforderlich
Dim wdApp As Object
Dim wdDoc As Object

' den Ablauf verzögernde Events abschalten
Application.ScreenUpdating = False
Application.EnableEvents = False

' Aktenzeichen und die entsprechende Zeilennummer anhand der
' angeklickten Zeile in der DropDown-Liste in die Variablen 'Az' und 'zeNr' schreiben
Az = Me.Suchfeld.List(Me.Suchfeld.ListIndex)
zeNr = Me.Suchfeld.ListIndex + 2

' die Auswahl im Dropdown ist jetzt nicht mehr erforderlich, also aufheben
Me.Suchfeld.ListIndex = -1

' die Excel-Tabelle 'Tabelle1' wird zum Objekt 'ws' erhoben
Set ws = ThisWorkbook.Sheets(1)

' Word starten
Set wdApp = CreateObject("Word.Application")
' und sichtbar machen
wdApp.Visible = True

' Auswahl des zu nutzenden Word-Dokumentes
ChDir ("C:\Temp") 'Voreinstellung des Startordners
Importdatei = Application.GetOpenFilename("Word-Datei (*.docx*), *.doc*")

'die ausgewählte Word-Datei öffnen
On Error GoTo ErrorFileAuswahl
Set wdDoc = wdApp.Documents.Open(Importdatei)

' Daten aus dem Objekt 'ws' in das Word-Dokument einfügen
With wdDoc
.Bookmarks("Aktenzeichen").Range.Text = ws.Cells(zeNr, 1)
.Bookmarks("Datum").Range.Text = Format(ws.Cells(zeNr, 3), "DD.MM.YYYY")
.Bookmarks("Uhrzeit").Range.Text = Format(ws.Cells(zeNr, 4), "hh:mm")
.Bookmarks("Ort").Range.Text = ws.Cells(zeNr, 5)
.Bookmarks("Vorname").Range.Text = ws.Cells(zeNr, 7)
.Bookmarks("Name").Range.Text = ws.Cells(zeNr, 8)
.Bookmarks("Geburtsdatum").Range.Text = Format(ws.Cells(zeNr, 9), "DD.MM.YYYY")
.Bookmarks("Adresse").Range.Text = ws.Cells(zeNr, 10)
.Bookmarks("Postleitzahl").Range.Text = ws.Cells(zeNr, 11)
.Bookmarks("Stadt").Range.Text = ws.Cells(zeNr, 12)
.Bookmarks("Konsummittel").Range.Text = ws.Cells(zeNr, 13)
' Hier weitere Datenfelder entsprechend der Spalten in Excel einfügen
End With

' Word in den Vordergund holen
wdApp.Activate

' die mit 'Set" definierten Objekte aus dem Speicher löschen
Set wdDoc = Nothing
Set wdApp = Nothing

' die für den normalen Ablauf deaktivierten Events wieder aktivieren
Application.ScreenUpdating = True
Application.EnableEvents = True

' Makro beenden
Exit Sub

ErrorFileAuswahl:
MsgBox "Sie haben keine Auswahl getroffen!" & vbCr & _
"Der Prozess kann neu gestartet werden!", vbCritical + vbOKOnly

' Word beenden und die mit 'Set" definierten Objekte aus dem Speicher löschen
wdApp.Quit
Set wdDoc = Nothing
Set wdApp = Nothing

' die für den normalen Ablauf deaktivierten Events wieder aktivieren
Application.ScreenUpdating = True
Application.EnableEvents = True

End Sub



Gruß
Jochen



Anzeige
AW: Von exceltabelle in word per steuerelement temarker
19.04.2024 13:16:12
Ritchi788
Verstehe ich gerade nicht so ;-) wo gebe ich da die Pfade der beiden Word Dateien ein wenn er sich worauf er sich bezieht.
AW: Von exceltabelle in word per steuerelement temarker
19.04.2024 13:21:41
JoWE
oh, langsam solltest Du aber schon etwas an Code-Verständnis entwickelt haben...

die Ordner- und die Dateiauswahl geschieht über einen Dialog der im Makro geöffnet wird, nämlich hier::
' Auswahl des zu nutzenden Word-Dokumentes
ChDir ("C:\Temp") 'Voreinstellung des Startordners
Importdatei = Application.GetOpenFilename("Word-Datei (*.docx*), *.doc*")

wird das angestoßen.
Du musst also allerhöchstens im Code hinter ChDir den Startordner an Deine Vorgaben anpassen.

Gruß
Jochen
Anzeige
AW: Von exceltabelle in word per steuerelement temarker
19.04.2024 14:34:59
Ritchi788
Entschuldige meine Unwissenheit, aber ich benötige immer Beispiele, um zu verstehen, was passiert, wenn ich bestimmte Aktionen ausführe. Excel entwickelt manchmal ein Eigenleben durch Fehler. Ich war heute Morgen wirklich glücklich, als alles geklappt hat. Nebenbei habe ich auch die Word-Datei mit einem Dropdown-Feld für Städte bestückt, das wiederum zu Outlook führt, um die E-Mail-Adresse und eine vordefinierte E-Mail für jedes Dropdown-Feld einzufügen. Das sind für dich wahrscheinlich Grundlagen, aber für mich fühlt es sich an, als hätte Feuer gemacht :D

Jetzt habe ich das so gemacht, wie du gesagt hast, und dann werde ich immer zum Ordner verlinkt, wo die Word-Dateien liegen. Muss ich dann dort eine Datei auswählen, und füllt er mir dann die Textmarken aus oder wie funktioniert das? Ist es nicht möglich, dass ich zum Beispiel in Spalte B etwas eingebe (A für die eine Word Datei B für die zweite Word Datei ) und dann in der ComboBox ein Aktenzeichen auswähle, und dass er dann das Gleiche macht, als wenn ich nur eine Worddatei hätte?
Anzeige
AW: Von exceltabelle in word per steuerelement temarker
19.04.2024 14:56:08
JoWE
Ritchi,
ich zitiere: "und dann werde ich immer zum Ordner verlinkt, wo die Word-Dateien liegen. Muss ich dann dort eine Datei auswählen, und füllt er mir dann die Textmarken aus oder wie funktioniert das?"
Ja, genau so geht es:
Du klickst einfach die gewünschte Vorlagendatei im Dialogfeld doppelt an oder Du klickst sie 1 x an und dann auf Ok und dann wird genau diese Datei genutzt und die Textmarken werden gefüllt.
Aber natürlich kannst Du es auch so bewerkstelligen wie Du es Dir denkst.
Viel Erfolg mit welchem Weg Du das auch immer machen willst.
Ich bin jedoch jetzt raus. Für weitere Fragen machst Du bitte einen neuen Beitrag auf.
Schönes WE
Jochen
Anzeige
AW: Von exceltabelle in word per steuerelement temarker
19.04.2024 15:38:15
JoWE
Ritchi,
hier noch als Beispiel-Makro Dein WEG zur Nutzung der richtigen Word-Datei:
Dazu muss nur der Dateiname der Word-Datei in Spalte B stehen,
weil der Pfad schon im Code festgelegt ist.

Option Explicit


Private Sub Suchfeld_Click()

'einige Variablen und Objekte definiern
Dim Az As String 'Aktenzeichen
Dim zeNr As Long 'Zeilennummer
Dim ws As Worksheet 'die Excel-Tabelle mit den Daten
Dim myPath As String 'Der Pfad der Word-Vorlagendateien
Dim Importdatei As String 'Die zu nutzende Word-Vorlagendatei

' !!! der Pfad zu den Word-Vorlagendateienwird wird definiert !!!
myPath = "C:\Temp\"

' Word-Application wird initialisiert mit 'Late Binding'
' daher ist kein Verweis mehr erforderlich
Dim wdApp As Object
Dim wdDoc As Object

' den Ablauf verzögernde Events abschalten
Application.ScreenUpdating = False
Application.EnableEvents = False

' die Excel-Tabelle 'Tabelle1' wird zum Objekt 'ws' erhoben
Set ws = ThisWorkbook.Sheets(1)

' Aktenzeichen und die entsprechende Zeilennummer anhand der
' angeklickten Zeile in der DropDown-Liste in die Variablen 'Az' und 'zeNr' schreiben
Az = Me.Suchfeld.List(Me.Suchfeld.ListIndex)
zeNr = Me.Suchfeld.ListIndex + 2

' definieren des zu nutzenden Word-Dokumentes, Pfad und Dateiname steh tin Spalte B
Importdatei = myPath & ws.Cells(zeNr, 2)

' die Auswahl im Dropdown ist jetzt nicht mehr erforderlich, also aufheben
Me.Suchfeld.ListIndex = -1

' Word starten
Set wdApp = CreateObject("Word.Application")

' und sichtbar machen
wdApp.Visible = True

'die ausgewählte Word-Datei öffnen
On Error GoTo ErrorFileAuswahl
Set wdDoc = wdApp.Documents.Open(Importdatei)

' Daten aus dem Objekt 'ws' in das Word-Dokument einfügen
With wdDoc
.Bookmarks("Aktenzeichen").Range.Text = ws.Cells(zeNr, 1)
.Bookmarks("Datum").Range.Text = Format(ws.Cells(zeNr, 3), "DD.MM.YYYY")
.Bookmarks("Uhrzeit").Range.Text = Format(ws.Cells(zeNr, 4), "hh:mm")
.Bookmarks("Ort").Range.Text = ws.Cells(zeNr, 5)
.Bookmarks("Vorname").Range.Text = ws.Cells(zeNr, 7)
.Bookmarks("Name").Range.Text = ws.Cells(zeNr, 8)
.Bookmarks("Geburtsdatum").Range.Text = Format(ws.Cells(zeNr, 9), "DD.MM.YYYY")
.Bookmarks("Adresse").Range.Text = ws.Cells(zeNr, 10)
.Bookmarks("Postleitzahl").Range.Text = ws.Cells(zeNr, 11)
.Bookmarks("Stadt").Range.Text = ws.Cells(zeNr, 12)
.Bookmarks("Konsummittel").Range.Text = ws.Cells(zeNr, 13)
' Hier weitere Datenfelder entsprechend der Spalten in Excel einfügen
End With

' Word in den Vordergund holen
wdApp.Activate

' die mit 'Set" definierten Objekte aus dem Speicher löschen
Set wdDoc = Nothing
Set wdApp = Nothing

' die für den normalen Ablauf deaktivierten Events wieder aktivieren
Application.ScreenUpdating = True
Application.EnableEvents = True

' Makro beenden
Exit Sub

ErrorFileAuswahl:
MsgBox "Sie haben keine Auswahl getroffen!" & vbCr & _
"Der Prozess kann neu gestartet werden!", vbCritical + vbOKOnly

' Word beenden und die mit 'Set" definierten Objekte aus dem Speicher löschen
wdApp.Quit
Set wdDoc = Nothing
Set wdApp = Nothing

' die für den normalen Ablauf deaktivierten Events wieder aktivieren
Application.ScreenUpdating = True
Application.EnableEvents = True

End Sub

Gruß
Jochen
Anzeige
AW: Von exceltabelle in word per steuerelement temarker
19.04.2024 15:49:20
JoWE
hier noch mal ein Bilde, da Du ja keinen PC hast:
Userbild
AW: Von exceltabelle in word per steuerelement temarker
22.04.2024 07:13:29
Ritchi788


Guten Morgen. Ich habe den Pfad, wie beschrieben, in den Code eingegeben und in Spalte B die Dateinamen eingefügt, wie es auch beschrieben wurde, sogar mit der Dateiendung .docx, obwohl das bestimmt nicht relevant ist. Trotzdem erhalte ich eine Fehlermeldung: 'Sie haben keine Auswahl getroffen. Der Prozess kann neu gestartet werden.'

Option Explicit

Private Sub Suchfeld_Click()

'einige Variablen und Objekte definiern
Dim Az As String 'Aktenzeichen
Dim zeNr As Long 'Zeilennummer
Dim ws As Worksheet 'die Excel-Tabelle mit den Daten
Dim myPath As String 'Der Pfad der Word-Vorlagendateien
Dim Importdatei As String 'Die zu nutzende Word-Vorlagendatei

' !!! der Pfad zu den Word-Vorlagendateienwird wird definiert !!!
myPath = "C:\Users\Mustermann\Desktop\Jugendschutz"

' Word-Application wird initialisiert mit 'Late Binding'
' daher ist kein Verweis mehr erforderlich
Dim wdApp As Object
Dim wdDoc As Object

' den Ablauf verzögernde Events abschalten
Application.ScreenUpdating = False
Application.EnableEvents = False

' die Excel-Tabelle 'Tabelle1' wird zum Objekt 'ws' erhoben
Set ws = ThisWorkbook.Sheets(1)

' Aktenzeichen und die entsprechende Zeilennummer anhand der
' angeklickten Zeile in der DropDown-Liste in die Variablen 'Az' und 'zeNr' schreiben
Az = Me.Suchfeld.List(Me.Suchfeld.ListIndex)
zeNr = Me.Suchfeld.ListIndex + 2

' definieren des zu nutzenden Word-Dokumentes, Pfad und Dateiname steh tin Spalte B
Importdatei = myPath & ws.Cells(zeNr, 2)

' die Auswahl im Dropdown ist jetzt nicht mehr erforderlich, also aufheben
Me.Suchfeld.ListIndex = -1

' Word starten
Set wdApp = CreateObject("Word.Application")

' und sichtbar machen
wdApp.Visible = True

'die ausgewählte Word-Datei öffnen
On Error GoTo ErrorFileAuswahl
Set wdDoc = wdApp.Documents.Open(Importdatei)

' Daten aus dem Objekt 'ws' in das Word-Dokument einfügen
With wdDoc
.Bookmarks("Aktenzeichen").Range.Text = ws.Cells(zeNr, 1)
.Bookmarks("Datum").Range.Text = Format(ws.Cells(zeNr, 3), "DD.MM.YYYY")
.Bookmarks("Uhrzeit").Range.Text = Format(ws.Cells(zeNr, 4), "hh:mm")
.Bookmarks("Ort").Range.Text = ws.Cells(zeNr, 5)
.Bookmarks("Vorname").Range.Text = ws.Cells(zeNr, 7)
.Bookmarks("Name").Range.Text = ws.Cells(zeNr, 8)
.Bookmarks("Geburtsdatum").Range.Text = Format(ws.Cells(zeNr, 9), "DD.MM.YYYY")
.Bookmarks("Adresse").Range.Text = ws.Cells(zeNr, 10)
.Bookmarks("Postleitzahl").Range.Text = ws.Cells(zeNr, 11)
.Bookmarks("Stadt").Range.Text = ws.Cells(zeNr, 12)
.Bookmarks("Konsummittel").Range.Text = ws.Cells(zeNr, 13)
' Hier weitere Datenfelder entsprechend der Spalten in Excel einfügen
End With

' Word in den Vordergund holen
wdApp.Activate

' die mit 'Set" definierten Objekte aus dem Speicher löschen
Set wdDoc = Nothing
Set wdApp = Nothing

' die für den normalen Ablauf deaktivierten Events wieder aktivieren
Application.ScreenUpdating = True
Application.EnableEvents = True

' Makro beenden
Exit Sub

ErrorFileAuswahl:
MsgBox "Sie haben keine Auswahl getroffen!" & vbCr & _
"Der Prozess kann neu gestartet werden!", vbCritical + vbOKOnly

' Word beenden und die mit 'Set" definierten Objekte aus dem Speicher löschen
wdApp.Quit
Set wdDoc = Nothing
Set wdApp = Nothing

' die für den normalen Ablauf deaktivierten Events wieder aktivieren
Application.ScreenUpdating = True
Application.EnableEvents = True

End Sub

Anzeige
AW: Von exceltabelle in word per steuerelement temarker
22.04.2024 09:29:00
Ritchi788


Guten Morgen. Ich habe den Pfad, wie beschrieben, in den Code eingegeben und in Spalte B die Dateinamen eingefügt, wie es auch beschrieben wurde, sogar mit der Dateiendung .docx, obwohl das bestimmt nicht relevant ist. Trotzdem erhalte ich eine Fehlermeldung: 'Sie haben keine Auswahl getroffen. Der Prozess kann neu gestartet werden.'

Option Explicit

Private Sub Suchfeld_Click()

'einige Variablen und Objekte definiern
Dim Az As String 'Aktenzeichen
Dim zeNr As Long 'Zeilennummer
Dim ws As Worksheet 'die Excel-Tabelle mit den Daten
Dim myPath As String 'Der Pfad der Word-Vorlagendateien
Dim Importdatei As String 'Die zu nutzende Word-Vorlagendatei

' !!! der Pfad zu den Word-Vorlagendateienwird wird definiert !!!
myPath = "C:\Users\Mustermann\Desktop\Jugendschutz"

' Word-Application wird initialisiert mit 'Late Binding'
' daher ist kein Verweis mehr erforderlich
Dim wdApp As Object
Dim wdDoc As Object

' den Ablauf verzögernde Events abschalten
Application.ScreenUpdating = False
Application.EnableEvents = False

' die Excel-Tabelle 'Tabelle1' wird zum Objekt 'ws' erhoben
Set ws = ThisWorkbook.Sheets(1)

' Aktenzeichen und die entsprechende Zeilennummer anhand der
' angeklickten Zeile in der DropDown-Liste in die Variablen 'Az' und 'zeNr' schreiben
Az = Me.Suchfeld.List(Me.Suchfeld.ListIndex)
zeNr = Me.Suchfeld.ListIndex + 2

' definieren des zu nutzenden Word-Dokumentes, Pfad und Dateiname steh tin Spalte B
Importdatei = myPath & ws.Cells(zeNr, 2)

' die Auswahl im Dropdown ist jetzt nicht mehr erforderlich, also aufheben
Me.Suchfeld.ListIndex = -1

' Word starten
Set wdApp = CreateObject("Word.Application")

' und sichtbar machen
wdApp.Visible = True

'die ausgewählte Word-Datei öffnen
On Error GoTo ErrorFileAuswahl
Set wdDoc = wdApp.Documents.Open(Importdatei)

' Daten aus dem Objekt 'ws' in das Word-Dokument einfügen
With wdDoc
.Bookmarks("Aktenzeichen").Range.Text = ws.Cells(zeNr, 1)
.Bookmarks("Datum").Range.Text = Format(ws.Cells(zeNr, 3), "DD.MM.YYYY")
.Bookmarks("Uhrzeit").Range.Text = Format(ws.Cells(zeNr, 4), "hh:mm")
.Bookmarks("Ort").Range.Text = ws.Cells(zeNr, 5)
.Bookmarks("Vorname").Range.Text = ws.Cells(zeNr, 7)
.Bookmarks("Name").Range.Text = ws.Cells(zeNr, 8)
.Bookmarks("Geburtsdatum").Range.Text = Format(ws.Cells(zeNr, 9), "DD.MM.YYYY")
.Bookmarks("Adresse").Range.Text = ws.Cells(zeNr, 10)
.Bookmarks("Postleitzahl").Range.Text = ws.Cells(zeNr, 11)
.Bookmarks("Stadt").Range.Text = ws.Cells(zeNr, 12)
.Bookmarks("Konsummittel").Range.Text = ws.Cells(zeNr, 13)
' Hier weitere Datenfelder entsprechend der Spalten in Excel einfügen
End With

' Word in den Vordergund holen
wdApp.Activate

' die mit 'Set" definierten Objekte aus dem Speicher löschen
Set wdDoc = Nothing
Set wdApp = Nothing

' die für den normalen Ablauf deaktivierten Events wieder aktivieren
Application.ScreenUpdating = True
Application.EnableEvents = True

' Makro beenden
Exit Sub

ErrorFileAuswahl:
MsgBox "Sie haben keine Auswahl getroffen!" & vbCr & _
"Der Prozess kann neu gestartet werden!", vbCritical + vbOKOnly

' Word beenden und die mit 'Set" definierten Objekte aus dem Speicher löschen
wdApp.Quit
Set wdDoc = Nothing
Set wdApp = Nothing

' die für den normalen Ablauf deaktivierten Events wieder aktivieren
Application.ScreenUpdating = True
Application.EnableEvents = True

End Sub

Anzeige
AW: Von exceltabelle in word per steuerelement temarker
22.04.2024 09:52:41
JoWE
Es fehlt der abschließende Backslash !!!
myPath = "C:\Users\Mustermann\Desktop\Jugendschutz\"
AW: Von exceltabelle in word per steuerelement temarker
22.04.2024 10:21:52
JoWE
Und doch,
die Datei-Endung ist sehr wohl relevant!!
AW: Von exceltabelle in word per steuerelement temarker
22.04.2024 13:18:20
Ritchi788
Die Endung Test.docx habe ich in der Spalte und die Datei habe ich auch so umbenannt und habe den Pfad so geändert wie du sagst, bekomme aber immer laufzeitfehler 381
Anzeige
AW: Von exceltabelle in word per steuerelement temarker
22.04.2024 13:39:06
JoWE
Hier mal die Arbeitsmappe + die Worddateien als Zip-Download und
nochmal das Makro:
https://www.herber.de/bbs/user/168924.zip
Option Explicit


Private Sub Suchfeld_Click()

'einige Variablen und Objekte definiern
Dim Az As String 'Aktenzeichen
Dim zeNr As Long 'Zeilennummer
Dim ws As Worksheet 'die Excel-Tabelle mit den Daten
Dim myPath As String 'Der Pfad der Word-Vorlagendateien
Dim Importdatei As String 'Die zu nutzende Word-Vorlagendatei

'der Pfad zu den Word-Vorlagendateienwird wird definiert
myPath = "G:\Mein Excel\Herbers Excel-Forum\Ritchi_16042024\"
'myPath = "C:\Temp\"

' Word-Application wird initialisiert mit 'Late Binding'
' daher ist kein Verweis mehr erforderlich
Dim wdApp As Object
Dim wdDoc As Object

' den Ablauf verzögernde Events abschalten
Application.ScreenUpdating = False
Application.EnableEvents = False

' die Excel-Tabelle 'Tabelle1' wird zum Objekt 'ws' erhoben
Set ws = ThisWorkbook.Sheets(1)

' Aktenzeichen und die entsprechende Zeilennummer anhand der
' angeklickten Zeile in der DropDown-Liste in die Variablen 'Az' und 'zeNr' schreiben
Az = Me.Suchfeld.List(Me.Suchfeld.ListIndex)
zeNr = Me.Suchfeld.ListIndex + 2

' definieren des zu nutzenden Word-Dokumentes, Pfad und Dateiname steh tin Spalte B
Importdatei = myPath & ws.Cells(zeNr, 2)

' die Auswahl im Dropdown ist jetzt nicht mehr erforderlich, also aufheben
Me.Suchfeld.ListIndex = -1

' Word starten
Set wdApp = CreateObject("Word.Application")

' und sichtbar machen
wdApp.Visible = True

'die ausgewählte Word-Datei öffnen
On Error GoTo ErrorFileAuswahl
Set wdDoc = wdApp.Documents.Open(Importdatei)

' Daten aus dem Objekt 'ws' in das Word-Dokument einfügen
With wdDoc
.Bookmarks("Aktenzeichen").Range.Text = ws.Cells(zeNr, 1)
.Bookmarks("Datum").Range.Text = Format(ws.Cells(zeNr, 3), "DD.MM.YYYY")
.Bookmarks("Uhrzeit").Range.Text = Format(ws.Cells(zeNr, 4), "hh:mm")
.Bookmarks("Ort").Range.Text = ws.Cells(zeNr, 5)
.Bookmarks("Vorname").Range.Text = ws.Cells(zeNr, 7)
.Bookmarks("Name").Range.Text = ws.Cells(zeNr, 8)
.Bookmarks("Geburtsdatum").Range.Text = Format(ws.Cells(zeNr, 9), "DD.MM.YYYY")
.Bookmarks("Adresse").Range.Text = ws.Cells(zeNr, 10)
.Bookmarks("Postleitzahl").Range.Text = ws.Cells(zeNr, 11)
.Bookmarks("Stadt").Range.Text = ws.Cells(zeNr, 12)
.Bookmarks("Konsummittel").Range.Text = ws.Cells(zeNr, 13)
' Hier weitere Datenfelder entsprechend der Spalten in Excel einfügen
End With

' Word in den Vordergund holen
wdApp.Activate

' die mit 'Set" definierten Objekte aus dem Speicher löschen
Set wdDoc = Nothing
Set wdApp = Nothing

' die für den normalen Ablauf deaktivierten Events wieder aktivieren
Application.ScreenUpdating = True
Application.EnableEvents = True

' Makro beenden
Exit Sub

ErrorFileAuswahl:
MsgBox "Sie haben keine Auswahl getroffen!" & vbCr & _
"Der Prozess kann neu gestartet werden!", vbCritical + vbOKOnly

' Word beenden und die mit 'Set" definierten Objekte aus dem Speicher löschen
wdApp.Quit
Set wdDoc = Nothing
Set wdApp = Nothing

' die für den normalen Ablauf deaktivierten Events wieder aktivieren
Application.ScreenUpdating = True
Application.EnableEvents = True

End Sub


Gruß
Jochen
Anzeige
AW: Von exceltabelle in word per steuerelement temarker
22.04.2024 13:41:15
Ritchi788
Ist das jetzt ein anderer Code ?
AW: Von exceltabelle in word per steuerelement temarker
22.04.2024 13:51:51
Ritchi788
Jetzt reagiert nicht mal mehr die combobox 😅
AW: Von exceltabelle in word per steuerelement temarker
22.04.2024 13:53:27
Ritchi788
Bekomme Laufzeitfehler 429
Anzeige
AW: Von exceltabelle in word per steuerelement temarker
22.04.2024 15:33:36
Ritchi788
Hier ist die Excel-Datei. Der Pfad steht ja in der angegebenen Datei. Die Dateien im Ordner heißen, sagen wir mal, TEST1.docx und Test2.docx. Ich verstehe es echt nicht, hatte alles super geklappt. Bitte, wenn du nochmal so nett bist und Lust oder Zeit hast, nur den Code schicken, weil ich Dateien nicht wirklich herunterladen kann oder darf.
Anzeige
AW: Von exceltabelle in word per steuerelement temarker
22.04.2024 15:37:05
JoWE
tja,
plötzlich heißt die Tabelle nicht mehr "Tabelle1" sondern "Wild".
Die Combobox in der Tabelle "Wild" heißt plötzlich "Combobox1".
Da gibt es aber immer noch eine unsichtbare "Tabelle1" die mit Passwort gesichert ist???
Und so hast Du in Summe ein ziemliches Durcheinander hergestellt.

Aber OK, das alles ist natürlich Deine Sache, führt jedoch dazu, dass es nicht mehr so läuft wie gedacht.

Hier (weiter unten) die von Dir hochgeladene Arbeitsmappe mit meinen Verbesserungen/Korrekturen.
Auf meinem PC liegen die Word-Dateien Test1.docx und Test2.docx im Ordner gemäß Deinen Vorgaben.
Nämlich im Nachbau Deiner Umgebung ("C:\Users\Rahmeln\Desktop\Jugendschutz78\")
es funktioniert so alles fehlerfrei:
d.h.:
Ich klicke z.B. die Test1.docx oder die Test2.docx im Auswahldialog doppelt an,
Word wird gestartet,
die Datei wird im Hintergrund geöffnet,
ichtbar gemacht,
die Textmarken werden gefüllt und
schließlich wird die Word-Datei in den Vordergrund geholt.

Mehr kann ich leider nicht für Dich tun und tatsächlich hab' ich auch keine Lust mehr dazu.

https://www.herber.de/bbs/user/168928.xlsm

Viel Erfolg (und nein, sauer bin ich nicht, aber genug ist auch genug!!!)
Gruß
Jochen
Anzeige
AW: Von exceltabelle in word per steuerelement temarker
22.04.2024 16:02:22
Ritchi788
Verständlich :-( Naja, ich werde die Excel-Tabelle noch einmal komplett neu machen und von vorne anfangen und alles so benennen, wie du gerade beschrieben hast. .Das wird wahrscheinlich auch mein letztes Projekt sein. Ich werde es noch einmal mit dem letzten Code probieren, den du mir geschickt hast, weil ich deine Ordner leider nicht öffnen kann. Das hat man man davon das man nur appleproduktr hat :-) Trotzdem vielen lieben Dank für alles und eine angenehme Woche wünsch ich dir.
Anzeige
AW: Von exceltabelle in word per steuerelement temarker
22.04.2024 18:49:51
JoWE
Ritchi,
schau Dir das an:
Userbild

und die Speicherplatzumgebung (Pfad und Dateien, wobei die Arbeitsmappe nicht unbedingt 'Ritchi_5.xlsm' heißen muss):
Userbild

und noch der Makro-Code für das gezeigte Konstrukt:
Option Explicit


Private Sub Suchfeld_Click()

'einige Variablen und Objekte definiern
Dim Az As String 'Aktenzeichen
Dim zeNr As Long 'Zeilennummer
Dim ws As Worksheet 'die Excel-Tabelle mit den Daten
Dim myPath As String 'Der Pfad der Word-Vorlagendateien
Dim Importdatei As String 'Die zu nutzende Word-Vorlagendatei

'der Pfad zu den Word-Vorlagendateienwird wird definiert
myPath = "C:\Users\Rahmeln\Desktop\Jugendschutz78\"

' Word-Application wird initialisiert mit 'Late Binding'
' daher ist kein Verweis mehr erforderlich
Dim wdApp As Object
Dim wdDoc As Object

'die Word-Textmarken und -Textmarken Ranges initialisieren
Dim objBkm As Object
Dim rngBkm As Object

' den Ablauf verzögernde Events abschalten
Application.ScreenUpdating = False
Application.EnableEvents = False

' die Excel-Tabelle 'Tabelle1' wird zum Objekt 'ws' erhoben
Set ws = ThisWorkbook.Sheets("Wild")

' Aktenzeichen und die entsprechende Zeilennummer anhand der
' angeklickten Zeile in der DropDown-Liste in die Variablen 'Az' und 'zeNr' schreiben
Az = Me.Suchfeld.List(Me.Suchfeld.ListIndex)
zeNr = Me.Suchfeld.ListIndex + 5

' definieren des zu nutzenden Word-Dokumentes,
Importdatei = myPath & ws.Cells(zeNr, 2)

'es ginge aber auch so wenn Du lieber 'A' oder 'B' benutzen möchtest:
'If UCase(ws.Cells(zeNr, 2)) = "A" Then Importdatei = myPath & "Test1.docx"
'If UCase(ws.Cells(zeNr, 2)) = "B" Then Importdatei = myPath & "Test2.docx"

' die Auswahl im Dropdown ist jetzt nicht mehr erforderlich, also aufheben
Me.Suchfeld.ListIndex = -1

' Word starten
Set wdApp = CreateObject("Word.Application")

' und sichtbar machen
wdApp.Visible = True

'die ausgewählte Word-Datei öffnen
On Error GoTo Fehler_FileAuswahl
Set wdDoc = wdApp.Documents.Open(Importdatei)

' Daten aus dem Objekt 'ws' in das Word-Dokument einfügen
' dabei werden die Textmarken zerstört, besetzt und sofort neu mit Inhalt gesetzt
With wdDoc
Set objBkm = .Bookmarks("Aktenzeichen")
Set rngBkm = objBkm.Range
rngBkm.Text = ws.Cells(zeNr, 1).Value
Set objBkm = .Bookmarks("Datum")
Set rngBkm = objBkm.Range
rngBkm.Text = Format(ws.Cells(zeNr, 3), "DD.MM.YYYY")
Set objBkm = .Bookmarks("Uhrzeit")
Set rngBkm = objBkm.Range
rngBkm.Text = Format(ws.Cells(zeNr, 4), "hh:mm")
Set objBkm = .Bookmarks("Ort")
Set rngBkm = objBkm.Range
rngBkm.Text = ws.Cells(zeNr, 5)
Set objBkm = .Bookmarks("Vorname")
Set rngBkm = objBkm.Range
rngBkm.Text = ws.Cells(zeNr, 7)
Set objBkm = .Bookmarks("Name")
Set rngBkm = objBkm.Range
rngBkm.Text = ws.Cells(zeNr, 8)
Set objBkm = .Bookmarks("Geburtsdatum")
Set rngBkm = objBkm.Range
rngBkm.Text = Format(ws.Cells(zeNr, 9), "DD.MM.YYYY")
Set objBkm = .Bookmarks("Adresse")
Set rngBkm = objBkm.Range
rngBkm.Text = ws.Cells(zeNr, 10)
Set objBkm = .Bookmarks("Postleitzahl")
Set rngBkm = objBkm.Range
rngBkm.Text = ws.Cells(zeNr, 11)
Set objBkm = .Bookmarks("Stadt")
Set rngBkm = objBkm.Range
rngBkm.Text = ws.Cells(zeNr, 12)
Set objBkm = .Bookmarks("Konsummittel")
Set rngBkm = objBkm.Range
rngBkm.Text = ws.Cells(zeNr, 13)
' Hier weitere Datenfelder entsprechend der Spalten in Excel einfügen
End With

' Word in den Vordergund holen
wdApp.Activate

' die mit 'Set" definierten Objekte aus dem Speicher löschen
Set wdDoc = Nothing
Set wdApp = Nothing

' die für den normalen Ablauf deaktivierten Events wieder aktivieren
Application.ScreenUpdating = True
Application.EnableEvents = True

' Cursor auf A1 setzen
Range("A1").Select

' hier ist bei fehlerfreiem Prozess-Verlauf Makro-Ende
Exit Sub

' hier beginnt bei einer Fehlersituation die Fehlerbehandlung
Fehler_FileAuswahl:

MsgBox "Sie haben keine Word-Vorlagendatei ausgewählt!" & vbCr & _
"Der Prozess kann neu gestartet werden!", vbCritical + vbOKOnly

' die für den normalen Ablauf deaktivierten Events wieder aktivieren
Application.ScreenUpdating = True
Application.EnableEvents = True

' Word beenden
wdApp.Quit

' die mit 'Set" definierten Objekte aus dem Speicher löschen
Set wdDoc = Nothing
Set wdApp = Nothing

' Cursor auf A1 setzen
Range("A1").Select

End Sub


So, nun ist's aber auch wirklich genug, Alles weitere ohne mich, ok?!
Auch Dir eine schöne Woche.
Gruß
Jochen
Anzeige
AW: Von exceltabelle in word per steuerelement temarker
23.04.2024 15:37:06
Ritchi788
Dank dir :-) zum Glück muss ich erst wieder am Wochenende arbeiten und bekomme mal so den Kopf frei. So habe mir mal deine Sachen bei einem Kollegen auf dem Rechner angeschaut und es ist ja kein Wunder, dass bei mir nichts klappt, da es ja ein einziges durcheinander ist . Also jetzt dürfte auch nichts mehr schiefgehen. Werde die Liste nochmal neue machen, dass es auch aufgeräumt in dem vba Editor ist. Es ist ja klar das der code nur in ein Ordner. Was ich mich aber frage, warum du Option explizit in dem einen Ordner Arbeitsmappe machst, dass bräuchte es doch gar nicht. Aber das wird schon seine Daseinsberechtigung haben, sonst würdest du das ja sonst nicht tun. Also nochmals vielen Dank :-)
Anzeige
AW: Von exceltabelle in word per steuerelement temarker
23.04.2024 15:48:31
JoWE
toi, toi, toi
AW: Von exceltabelle in word per steuerelement temarker
27.04.2024 12:44:14
ritchi788
Ich verstehe es wirklich nicht. Ich habe die Liste neu aufgesetzt und trotzdem klappt es nicht. Die ComboBox hat den Namen 'Suchfeld'. Beide Word-Dateien haben den Namen 'Test1.docx' und 'Test2.docx'. Der Name der Exceltabelle lautet jetzt auch 'Tabelle1'. Also, was ist jetzt das Problem? Er sagt jedes Mal, wenn ich eine Datei in dem Suchfeld auswähle, dass ich keine Word-Vorlagedatei ausgewählt habe.
Anzeige
AW: Von exceltabelle in word per steuerelement temarker
27.04.2024 14:03:32
JoWE
ich schau mir das gern an sofern Du mir Deine "neu aufgesetzte Liste", das nennt sich "Arbeitsmappe", hier hochlädst.
Gruß
Jochen
AW: Von exceltabelle in word per steuerelement temarker
27.04.2024 16:03:00
ritchi788
würde es ja gern hochladen aber es geht nicht mehr ;-(
AW: Von exceltabelle in word per steuerelement temarker
27.04.2024 13:42:08
ritchi788
Option Explicit

Private Sub Suchfeld_Click()

'einige Variablen und Objekte definiern
Dim Az As String 'Aktenzeichen
Dim zeNr As Long 'Zeilennummer
Dim ws As Worksheet 'die Excel-Tabelle mit den Daten
Dim myPath As String 'Der Pfad der Word-Vorlagendateien
Dim Importdatei As String 'Die zu nutzende Word-Vorlagendatei

'der Pfad zu den Word-Vorlagendateienwird wird definiert
myPath = "C:\Users\Mustermann\Desktop\Jugendschutz78\"

' Word-Application wird initialisiert mit 'Late Binding'
' daher ist kein Verweis mehr erforderlich
Dim wdApp As Object
Dim wdDoc As Object

'die Word-Textmarken und -Textmarken Ranges initialisieren
Dim objBkm As Object
Dim rngBkm As Object

' den Ablauf verzögernde Events abschalten
Application.ScreenUpdating = False
Application.EnableEvents = False

' die Excel-Tabelle 'Tabelle1' wird zum Objekt 'ws' erhoben
Set ws = ThisWorkbook.Sheets("Tabelle1")

' Aktenzeichen und die entsprechende Zeilennummer anhand der
' angeklickten Zeile in der DropDown-Liste in die Variablen 'Az' und 'zeNr' schreiben
Az = Me.Suchfeld.List(Me.Suchfeld.ListIndex)
zeNr = Me.Suchfeld.ListIndex + 5

' definieren des zu nutzenden Word-Dokumentes,
Importdatei = myPath & ws.Cells(zeNr, 2)

'es ginge aber auch so wenn Du lieber 'A' oder 'B' benutzen möchtest:
'If UCase(ws.Cells(zeNr, 2)) = "A" Then Importdatei = myPath & "Test1.docx"
'If UCase(ws.Cells(zeNr, 2)) = "B" Then Importdatei = myPath & "Test2.docx"

' die Auswahl im Dropdown ist jetzt nicht mehr erforderlich, also aufheben
Me.Suchfeld.ListIndex = -1

' Word starten
Set wdApp = CreateObject("Word.Application")

' und sichtbar machen
wdApp.Visible = True

'die ausgewählte Word-Datei öffnen
On Error GoTo Fehler_FileAuswahl
Set wdDoc = wdApp.Documents.Open(Importdatei)

' Daten aus dem Objekt 'ws' in das Word-Dokument einfügen
' dabei werden die Textmarken zerstört, besetzt und sofort neu mit Inhalt gesetzt
With wdDoc

Set objBkm = .Bookmarks("Datum")
Set rngBkm = objBkm.Range
rngBkm.Text = Format(ws.Cells(zeNr, 3), "DD.MM.YYYY")
Set objBkm = .Bookmarks("Uhrzeit")
Set rngBkm = objBkm.Range
rngBkm.Text = Format(ws.Cells(zeNr, 4), "hh:mm")

' Hier weitere Datenfelder entsprechend der Spalten in Excel einfügen
End With

' Word in den Vordergund holen
wdApp.Activate

' die mit 'Set" definierten Objekte aus dem Speicher löschen
Set wdDoc = Nothing
Set wdApp = Nothing

' die für den normalen Ablauf deaktivierten Events wieder aktivieren
Application.ScreenUpdating = True
Application.EnableEvents = True

' Cursor auf A1 setzen
Range("A1").Select

' hier ist bei fehlerfreiem Prozess-Verlauf Makro-Ende
Exit Sub

' hier beginnt bei einer Fehlersituation die Fehlerbehandlung
Fehler_FileAuswahl:

MsgBox "Sie haben keine Word-Vorlagendatei ausgewählt!" & vbCr & _
"Der Prozess kann neu gestartet werden!", vbCritical + vbOKOnly

' die für den normalen Ablauf deaktivierten Events wieder aktivieren
Application.ScreenUpdating = True
Application.EnableEvents = True

' Word beenden
wdApp.Quit

' die mit 'Set" definierten Objekte aus dem Speicher löschen
Set wdDoc = Nothing
Set wdApp = Nothing

' Cursor auf A1 setzen
Range("A1").Select




und genau so gebe ich den Code in VBA Tabelle1 ein.
Die Word-Dateien sind mit Test1.docx und Test2.docx benannt.
Suchfeld beginnt bei zeile 5
Und der Pfad von der Excel-Datei ist auch Korrekt.
Suchfeld eigenschafeten: Name Ist Suchfeld.
ListRange ist von A5:Q251
BoundColumn ist auf 1
Anzeige
AW: Von exceltabelle in word per steuerelement temarker
27.04.2024 15:21:14
JoWE
ohne die hochgeladene Arbeitsmappe mache ich nichts!!!
AW: Von exceltabelle in word per steuerelement temarker
27.04.2024 17:12:20
JoWE
Hallo Ritchi,

hier kommt ide Arbeitsmappe zurück, mit meiner Pfadangabe (und minimalen Änderungen, s.u.) klappt das tadellos.
https://www.herber.de/bbs/user/169096.xlsm

So sieht Deine Pfadangabe aus myPath = "C:\Users\Rahmeln\Desktop\Jugendschutz\"
So sieht meine Pfadangabe aus myPath = "G:\Mein Excel\Herbers Excel-Forum\Ritchi_16042024\Mustermann\Desktop\Jugendschutz78\"
Dort liegen bei mir auch die Wordvorlagen, bei Dir auch?
Meine Pfadangabe habe ich in der Arbeitsmappe auskommentiert (das Hochkomma > ' bedeutet auskommentieren!!).
Deine Pfadangabe habe ich in der Arbeitsmappe aktiv gelassen.

Und das führte bei Dir zum Fehler:
die folgende Codezeile war die aktive, muss aber für den Fall "A" oder "B" in Spalte B mit dem Hochkomma " ' " deaktiviert sein!!!
Importdatei = myPath & ws.Cells(zeNr, 2)

Diese Codezeilen waren noch auskommentiert!!! Das geht aber nur wenn in Spalte der Dateiname steht!
Daher müssen diese Zeilen für den Fall "A" oder "B" in Spalte B eben nicht auskommentiert sein, also das Hochkomma muss weg!!!

'If UCase(ws.Cells(zeNr, 2)) = "A" Then Importdatei = myPath & "Test1.docx"
'If UCase(ws.Cells(zeNr, 2)) = "B" Then Importdatei = myPath & "Test2.docx"


Gruß
Jochen



Anzeige
AW: Von exceltabelle in word per steuerelement temarker
27.04.2024 17:17:29
Ritchi788
Meine liegen wirklich hier "C:\Users\Rahmeln\Desktop\Jugendschutz\"
AW: Von exceltabelle in word per steuerelement temarker
27.04.2024 17:29:47
JoWE
Dann musst Du es in der von mir gerade hochgeladenen Arbeitsmappe im Makrocode noch anpassen.
AW: Von exceltabelle in word per steuerelement temarker
27.04.2024 17:29:41
Ritchi788
Müssen die Wörter in der Spalt B auch auskommentiert werden ?
Anzeige
AW: Von exceltabelle in word per steuerelement temarker
27.04.2024 17:37:14
JoWE
Nein da steht nur A oder B
AW: Von exceltabelle in word per steuerelement temarker
27.04.2024 17:40:46
JoWE
Du kannst mir mal Deine Email-Adresse schicken an:
jochen.wewior(et)t-online.de
Macht das ganze vllt. einfacher
AW: Von exceltabelle in word per steuerelement temarker
19.04.2024 16:10:01
Ritchi788
Mega! Das heißt also, dass ich den normalen Pfad oben verwenden kann, z.B. `myPath = "C:\Temp\"`, und mich dann auf Spalte B beziehe. Dann kann ich die Word-Dateien so umbenennen, dass es gut aussieht. Trotzdem danke, dass du dir nochmal die Mühe gemacht hast, obwohl du anscheinend schon genervt warst.
Anzeige
AW: Von exceltabelle in word per steuerelement temarker
19.04.2024 16:23:43
JoWE
Alles 👍
AW: Von exceltabelle in word per steuerelement temarker
18.04.2024 17:43:51
JoWE
Auf beides
AW: Von exceltabelle in word per steuerelement temarker
18.04.2024 17:53:20
Ritchi788
Ich muss jetzt mal so blöd fragen. Also, füge ich beide beide Sachen in die ComboBox über formatieren ein ? Und um es übersichtlicher zu gestalten, könnte ich zeNr ausblenden.
Anzeige
AW: Von exceltabelle in word per steuerelement temarker
18.04.2024 18:16:23
JoWE
bezogen auf meine Version, also analog zum Bild der Tabelle:
Die Excel-Combobox ist in den Eigenschaften so zu definieren, dass sie 13 Spalten anzeigt und alle Daten des Bereichs A2:M18 also 17 Zeilen in der Combobox darstellt. Klickt man eine Zeile in der über den Dropdownpfeil geöffneten Box an, startet das Klick-Event-Makro.
Anzeige
AW: Von exceltabelle in word per steuerelement temarker
16.04.2024 20:51:09
Ritchi788
Ah, okay, ich habe leider gerade alles nicht zur Hand. Ich könnte es aber morgen hochladen. Nur mal zur Veranschaulichung: In der Excel-Tabelle befinden sich Angaben wie Datum, Uhrzeit, Adresse, Name usw., die automatisch in eine Word-Datei übernommen werden sollen. Dort habe ich auch die Textmarker entsprechend gesetzt und benannt wie in der Excel-Tabelle. In der Word-Datei habe ich ein Steuerelement platziert, mit dem ich eine bestimmte Zeile auswählen möchte, aber das will irgendwie nicht klappen.
Anzeige
AW: Von exceltabelle in word per steuerelement temarker
16.04.2024 22:17:20
Ritchi788
Vielen Dank für die Erklärung. Hier ist dein Text korrigiert:

"Ich habe eine Excel-Tabelle mit einem ActiveX-Steuerelement erstellt, in das man eine Ziffer eingeben kann und mit Enter bestätigt. Damit möchte ich die jeweilige Zeile ansteuern, die bestimmte Daten in Excel enthält. Diese Daten sollen dann zu Word übertragen werden, wo ich bestimmte Textmarken wie Datum, Name, Adresse usw. gesetzt habe. Die entsprechenden Daten habe ich ebenfalls in Excel und sollen automatisch auf Knopfdruck übertragen werden. Wenn ich also die 1 in das Steuerelement in Excel eingebe, soll er in diesem Moment die Daten aus Zeile 1 in die Textmarken von Word übertragen."
Anzeige
AW: Von exceltabelle in word per steuerelement temarker
16.04.2024 21:28:15
Alwin Weisangler
Hallo,

anbei mal ein Beispiel (Excel+Word), wo die Werte aus Zelle A1 und A2 in die Textmarken im Worddokument geschieben werden und darüber gleich wieder eine neue Textmarke angelegt wird, um diese zukünftig wieder neu füllen zu können.
https://www.herber.de/bbs/user/168786.zip

Gruß Uwe
Anzeige
AW: Von exceltabelle in word per steuerelement temarker
16.04.2024 22:33:53
Ritchi788
Könntest du mir die Codes hier per Nachricht schicken, weil Sachen werden vom betrieblichen Rechner geblockt. Also einfach in ein Kommentar hier runter setzen.
AW: Von exceltabelle in word per steuerelement temarker
16.04.2024 23:19:09
Alwin Weisangler
Hallo,

in Excel:


Option Explicit

Sub ZellenInTextmarken()
Dim Pfad As String
Dim WdApp As Object, wdDok As Object, objBkm As Object, rngBkm As Object

Pfad = "C:\...\NurTextmarken.docx"
Set WdApp = CreateObject("Word.Application")
Set wdDok = WdApp.Documents.Open(Filename:=Pfad, ReadOnly:=False)
WdApp.Visible = True
With wdDok
Set objBkm = .Bookmarks("Textmarke1")
Set rngBkm = objBkm.Range
rngBkm.Text = Tabelle1.Cells(1, 1).Value
.Bookmarks.Add Name:="Textmarke1", Range:=rngBkm
Set objBkm = .Bookmarks("Textmarke2")
Set rngBkm = objBkm.Range
rngBkm.Text = Tabelle1.Cells(2, 1).Value
.Bookmarks.Add Name:="Textmarke2", Range:=rngBkm
End With
Set wdDok = Nothing
Set WdApp = Nothing
End Sub

Lege in Word 2 Textmarken an mit den Namen Textmarke1 bzw. Textmarke2 --> Datei speichern und Beenden --> Trage den Pfad der Worddatei nebst Dateinamen in diese Prozedur ein.
Mit dem Auslösen der Prozedur wird der Zellinhalt A1 und A2 aus Tabelle1 (Modulname) in die Textmarken der Worddatei geschrieben.
Solltest du damit so nicht zurechtkommen, lade dir die Zip zu Hause runter und starte das Beispiel.

Es ist eine von diversen Möglichkeiten dies zu machen.
Man kann auch die zu übergebenden Werte in ein Array schreiben --> diese als Public Variable nach Word übergeben und aus Excel in Word eine
Prozedur starten ( .Run("Name der Proedur in Word") ) die dann die Werte in die Textmarken schreibt und neue Textmarken setzt.

Gruß Uwe
Anzeige
AW: Von exceltabelle in word per steuerelement temarker
17.04.2024 05:23:47
Ritchi788
Guten Morgen, danke für die schnelle Antwort. Also, du beziehst dich auf feste Zeilen in der Excel-Datei, das habe ich auch schon hinbekommen. Aber ich habe 250 Zeilen, wo ich die Zeilen einzeln ansteuern möchte. ansteuern möchte, mit einem Suchfeld, sodass es mir genau die Daten in die Textmarken setzt.
Anzeige
AW: Von exceltabelle in word per steuerelement temarker
17.04.2024 08:19:39
Alwin Weisangler
Hallo,

was du verwendest ist kein Formularsteuerelement, sondern eine Active-X Control.

Weiteres Vorgehen:
Wenn du nur stets einen Treffer als Ergebnis der Suche hast, reicht als Ergebnisausgabe die Zeilennummer. Diese kannst du einer Variablen (z.B. Zeilennummer) zuweisen und in:


rngBkm.Text = Tabelle1.Cells(Zeilennummer, 1).Value

übergeben.

Kommt es zu mehreren Ergebnissen in der Trefferausgabe würde ich damit ein kleines Array (entweder mit Zeilennummern oder gleich mit Werten der Zellen) füllen und in einer Schleife die Übergabe in die Textmarken abarbeiten.

Das was ich dir hochgeladen habe eignet sich vor beide Wege. Für den 2. Fall braucht es dann zum Abarbeiten der Treffen eine kleine Schleife.
Das funktioniert zuverlässig, da die Textmarke nach der Werteübergabe wieder neu gesetzt wird.
Bei dem was du gezeigt hast wird die Textmarke überschrieben und geht damit verloren.
Da müsstest du jedes Mal das Worddokument schließen ohne zu speichern und neu öffnen.

Gruß Uwe
Anzeige
AW: Von exceltabelle in word per steuerelement temarker
16.04.2024 21:29:24
JoWE
Hallo Ritchi,
ok, bin gespannt auf die hochgeladenen Dateien. Im Übrigen ist mir nicht klar was Du mit 'Textmarker' meinst, was für ein 'Steuerelement' Du benutzt und ob der Prozess nun von Excel oder von Word aus gesteuert wird????
Gruß
Jochen
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige