Word 2010 - Textmarken mit Exceldaten befüllen
VBA-Skript zum Befüllen von Word mit Exceldaten
Hallo Zusammen,
ich habe ein Problem im Word VBA. Ich suche eine Lösung, in der ich per VBA eine Exceldatei auslesen kann und die Daten in Word-Textmarken einfügen lasse.
Es soll so sein, beim öffnen der Datei werde ich gefragt, was ich auslesen will. Wähle ich Benutzer 1 aus, dann:
Textmarke 1 = Exceldatei1 Tabellenblatt1 Zelle A3
Textmarke 1 = Exceldatei1 Tabellenblatt1 Zelle A5
Textmarke 1 = Exceldatei1 Tabellenblatt1 Zelle A8
Textmarke 1 = Exceldatei1 Tabellenblatt5 Zelle C3
usw.
Lässt sich das irgendwie umsetzen, oder bin ich komplett auf dem Holzweg?!
Hallo Zusammen,
ich habe ein Problem im Word VBA. Ich suche eine Lösung, in der ich per VBA eine Exceldatei auslesen kann und die Daten in Word-Textmarken einfügen lasse.
Es soll so sein, beim öffnen der Datei werde ich gefragt, was ich auslesen will. Wähle ich Benutzer 1 aus, dann:
Textmarke 1 = Exceldatei1 Tabellenblatt1 Zelle A3
Textmarke 1 = Exceldatei1 Tabellenblatt1 Zelle A5
Textmarke 1 = Exceldatei1 Tabellenblatt1 Zelle A8
Textmarke 1 = Exceldatei1 Tabellenblatt5 Zelle C3
usw.
Lässt sich das irgendwie umsetzen, oder bin ich komplett auf dem Holzweg?!
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 201917
Url: https://administrator.de/contentid/201917
Ausgedruckt am: 22.11.2024 um 03:11 Uhr
11 Kommentare
Neuester Kommentar
Für Textmarken weiß ich jetzt nicht aber für ein Textfeld ginge das ungefär so:
Vielleicht hilft dir das schon mal weiter
Set xlWkb = GetObject("C:\Exceldatei1.xls")
ZellWert = xlWkb.Sheets("Tabellenblatt1").Range("A3").Value
xlWkb.Saved = True
xlWkb.Close
Set xlWkb = Nothing
ActiveDocument.CustomDocumentProperties("Textfeld1").Value = ZellWert
Vielleicht hilft dir das schon mal weiter
Hallo miniversum!
Textmarken in etwa so:
Deine Codezeile 3 und 4 könntest Du auch durch diese Codezeile ersetzen:
Gruß Dieter
Textmarken in etwa so:
strText = "Textmarken-Text"
With ActiveDocument
If .Bookmarks.Exists("Textmarke 1") Then
With .Bookmarks("Textmarke 1").Range.Words(1)
If .Characters(1) > " " Then .Delete 'Textmarke-Inhalt ggf vorher löschen
.InsertBefore strText
End With
Else
MsgBox "Textmarke 1 nicht gefunden!", vbExclamation, "Fehler . . ."
End If
End With
Deine Codezeile 3 und 4 könntest Du auch durch diese Codezeile ersetzen:
xlWkb.Close False ' Schließen ohne Speichern
Gruß Dieter
Hallo anding!
In etwa so:
Oder so:
Gruß Dieter
In etwa so:
Private Sub ComboBox1_Change()
Select Case ComboBox1.ListIndex
Case 0
MsgBox "Punkt1"
Case 1
MsgBox "Punkt2"
Case 2
MsgBox "Punkt3"
Case Else
MsgBox "PunktX"
End Select
End Sub
Private Sub ComboBox1_Change()
Select Case ComboBox1.Value
Case "Punkt1"
MsgBox "Punkt1"
Case "Punkt2"
MsgBox "Punkt2"
Case "Punkt3"
MsgBox "Punkt3"
Case Else
MsgBox "PunktX"
End Select
End Sub
Gruß Dieter
Zitat von @76109:
Hallo miniversum!
Deine Codezeile 3 und 4 könntest Du auch durch diese Codezeile ersetzen:
Hallo miniversum!
Deine Codezeile 3 und 4 könntest Du auch durch diese Codezeile ersetzen:
> xlWkb.Close False ' Schließen ohne Speichern
>
Hallo Dieter
Ich weiß das ich das in eine einzelne Zeile packen könnte. Ich mag es allerdings manchmal separat um es übersichtlich zu halten.
Man könnte sich noch als Möglichkeit überlegen zwischen meine Zeile 1 und 2 ein
savestate = xlWkb.Saved
xlWkb.Saved = savestate
Hallo miniversum!
Wozu den Ursprungszustand wiederherstellen, wenn das Workbook eh geschlossen wird.
Zudem würde ich in Verbindung mit 'GetObject' nicht raten, ein Workbook zu speichern, sondern GetObject nur zum Auslesen von Workbooks zu verwenden. Was ich damit meine, findest Du heraus, indem Du mal ein Workbook mit GetObject speicherst und anschließend in Excel öffnest...
Gruß Dieter
Wozu den Ursprungszustand wiederherstellen, wenn das Workbook eh geschlossen wird.
Zudem würde ich in Verbindung mit 'GetObject' nicht raten, ein Workbook zu speichern, sondern GetObject nur zum Auslesen von Workbooks zu verwenden. Was ich damit meine, findest Du heraus, indem Du mal ein Workbook mit GetObject speicherst und anschließend in Excel öffnest...
Gruß Dieter
Wenn es wirklich mit GetObject geöffnet wurde, dann ist das speicher flag sowieso nicht gesetzt und es wird nicht gespeichert.
War die Excel Mappe allerdings bereits geöffnet wird sie ja mit GetObject nicht noch einmal neu geöffnet. Änderungen könnten allerdings gemacht worden sein die noch nicht gespeichert sind. Da macht das rücksetzen Sinn. Der eigentliche close befehl muss natürlich auch bedingt werden.
War die Excel Mappe allerdings bereits geöffnet wird sie ja mit GetObject nicht noch einmal neu geöffnet. Änderungen könnten allerdings gemacht worden sein die noch nicht gespeichert sind. Da macht das rücksetzen Sinn. Der eigentliche close befehl muss natürlich auch bedingt werden.
Hallo miniversum!
Ja, wenn das Workbook bereits geöffnet ist, wäre dass ein Zustand, den ich noch nicht getestet habe und unter dieser Annahme, würde ich dann auch kein GetObject verwenden oder vorher mit WSchell.AppActivate prüfen, ob die Datei bereits geöffnet ist...
Gruß Dieter
Ja, wenn das Workbook bereits geöffnet ist, wäre dass ein Zustand, den ich noch nicht getestet habe und unter dieser Annahme, würde ich dann auch kein GetObject verwenden oder vorher mit WSchell.AppActivate prüfen, ob die Datei bereits geöffnet ist...
Gruß Dieter
Hallo anding!
Versuchs mal mit:
Gruß Dieter
Versuchs mal mit:
Private Sub Document_New()
Gruß Dieter