HERBERS Excel-Forum - das Archiv

Thema: Exceltabelle daten per combobox zu word Datei

Exceltabelle daten per combobox zu word Datei
Ritchi788

Hallo, ich habe eine Frage. Ich habe eine Excel-Tabelle mit verschiedenen Daten und eine Combobox, mit der ich anhand eines Aktenzeichens die Daten an eine Word-Datei mit Textmarken weitergebe und automatisch eintrage. Der Pfad bezieht sich jedoch nur auf eine Word-Datei. Könnte ich nicht stattdessen in Spalte B immer ein "A" oder "B" eintragen, damit er dann genau diesen Pfad ansteuert? Ich habe bereits versucht, dies zu realisieren, aber dann gibt es Probleme mit der Combobox. Außerdem wird die Eingabe als Aktivierung interpretiert, was ich nicht möchte. Die Aktivierung soll erst durch die Betätigung des Aktenzeichens in der Combobox erfolgen

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+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

' das Word-Dokument ööfnen
' 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

AW: Exceltabelle daten per combobox zu word Datei
schauan
Hallöchen,

also, Du musst nicht unbedingt was an der Combobox schrauben.

In Dienem Code ermittlest Du die zur Auswahl gehörende Zeilennummer auf dem Blatt:
zeNr = Me.Suchfeld.ListIndex+2

Der Eintrag A oder B (ich nehme an, dort steht nicht A oder B sondern die Dateinamen) würde dann in der Zelle stehen
Cells(zeNr, 2)

Das verwendest Du dann beim Öffnen der Word-Datei ...
AW: Exceltabelle daten per combobox zu word Datei
Ritchi788
Ich beziehe mich eigentlich zunächst auf das Aktenzeichen aus Spalte A. Da ich zwei Word-Dateien habe, schreibe ich den Namen der Word-Datei in Spalte B.
AW: Exceltabelle daten per combobox zu word Datei
schauan
Hallöchen,

so habe ich das auch beschrieben.
Könnte ich nicht stattdessen in Spalte B immer ein "A" oder "B" schreiben

Du holst den Eintrag aus Spalte B - dabei verwendest Du Cells(zeNr, 2)
z.B. strWelche=Cells(zeNr, 2).Value
und strWelche nimmst Du als Variable zum öffnen.

Wenn dort der Name steht, kannst Du den sofort verwenden.
Steht dort A oder B, dann kannst Du mit
If strWelche = A then strWelche = "meine1.docx" Else strWelche = "meine2.docx"

den Namen festlegen. Der steht so allerdings im Code und wenn Du andere Dateien hast, musst Du den Code ändern.


Eine Alternative wäre eine Liste von Namen, wo auch die Zuordnung der Buchstaben erfolgt. Da gibt es auch wieder verschiedene Varianten der Umsetzung.
Du kannst in Spalte B z.B. "B" eintragen
In SPalte C holst Du per SVERWEIS den Dateinamen aus der Liste.
Im Code würde dann strWelche=Cells(zeNr, 3).Value reichen.
AW: Exceltabelle daten per combobox zu word Datei
Ritchi788
Hallo, die Variante wäre schon am schlüssigsten die du hier geschrieben hast: Wenn dort der Name steht, kannst Du den sofort verwenden.
Steht dort A oder B, dann kannst Du mit
If strWelche = A then strWelche = "meine1.docx" Else strWelche = "meine2.docx"

Hättest du da vielleicht ein kompletten Code der auf meine anderen zugeschnitten wäre ?
Wäre echt Mega :-) brauche das immer bildlich vor Augen. Bin echt noch Anfänger.
AW: Exceltabelle daten per combobox zu word Datei
schauan
Hallöchen,

1)
also, Du hast in Deinem Code die Zeile

' Set wdDoc = wdApp.Documents.Open("C:\Temp\test.docx")

Das könnte dann so sein, wenn im Excel nur der Dateiname steht.

strWelche=Cells(zeNr, 2).Value
Set wdDoc = wdApp.Documents.Open("C:\Temp\" & strWelche)

steht dort die Datei mit dem Pfad, kannst Du --> "C:\Temp\" & <-- weglassen

bzw. dann mit dem SVERWEIS
strWelche=Cells(zeNr, 3).Value
Set wdDoc = wdApp.Documents.Open("C:\Temp\" & strWelche)
und diese Tabelle dazu:
 ABCDEF
11Aerste.docx Aerste.docx
22Bzweite.docx Bzweite.docx
33Aerste.docx   

ZelleFormel
C1=SVERWEIS(B1;$E$1:$F$3;2;FALSCH)
C2=SVERWEIS(B2;$E$1:$F$3;2;FALSCH)
C3=SVERWEIS(B3;$E$1:$F$3;2;FALSCH)





AW: Exceltabelle daten per combobox zu word Datei
Ritchi788
Ich habe eine Excel-Tabelle. Jede Spalte enthält verschiedene Informationen, wie zum Beispiel Aktenzeichen, Datum, Mitarbeiter, Straße, Postleitzahl usw. Von daher könnte es schwierig sein, das umzusetzen. Trotzdem vielen lieben Dank für deine Mühe.