Hallo,
ich hoffe mir kann hier jemand helfen. Ich habe leider nur leihenhafte VBA Kenntnisse und wende mich daher mit einer glaube ich eigentlich "einfachen" Frage an das Forum.
Zum Verständnis: Ich habe eine Excel-Liste, die verschiedene Daten zu etwa 150 Einträgen umfasst. Aus diesen Einträgen, also im Prinzip aus jeder Zeile der Excel-Tabelle, soll ein Datenblatt in Word erstellt werden. Da die Excel-Tabelle immer mal wieder aktualisiert wird und dann auch die Datenblätter aktualisiert werden müssen, habe ich ein VBA-Skript verwendet, welches über Textmarken in dem Word-Dokument jeweils die Inhalte der Excel-Tabelle einfügt. Passenderweise gab es dafür ein Skript auf vba-online, welches ich entsprechend für meine Textmarken etc. angepasst habe. https://www.online-vba.de/vba_tutorialvorlage.php#wo-page-top
Das habe ich auch alles hinbekommen und es funktioniert auch soweit einwandfrei. Ich öffne das Word-Dokument, wähle aus der ListBox die entsprechende Zeile der Excel-Tabelle aus, und die Eintragungen werden in die Textmarken des Word-Dokuments übertragen. Soweit also kein Problem.
Nun würde ich gerne die Formatierung der Texte aus der Excel-Tabelle mit in das Word-Dokument übernehmen, d.h. in einer Spalte steht ein Beschreibungstext, bei dem manche Wörter fett markiert sind, dies soll genauso in die Textmarke in Word übernommen werden. Normalerweise ist das ja kein Problem - Zelle markieren und in Word Einfügen mit dem Befehl "Ursprüngliche Formatierung beibehalten". In meinem VBA-Skript bekomme ich das leider nicht hin. Ich habe schon in diversen Foren nach einer Antwort gesucht und alles mögliche ausprobiert. Ich bin soweit gekommen, dass ich wohl den Befehl "wdFormatOriginalFormatting" anwenden muss, kann es aber leider nicht so in mein Skript einbauen, dass es funktioniert. Vielleicht kann mir da jemand helfen?
Nachfolgend ein Ausschnitt des Skripts. An der Stelle, wo die Textmarke "Textmarke_Beschreibung" eingefügt wird, würde ich also gerne die ursprüngliche Formatierung des Textes aus der Excel-Tabelle beibehalten. Ist es möglich, den Befehl in diesem Skript zu ergänzen? Funktioniert das mit meinem Skript überhaupt, oder muss dafür etwas umgeschrieben werden? Ich bin für jede Hilfe dankbar! :)
Private Sub CommandButton1_Click()
Dim oExcelApp As Object
Dim oExcelWorkbook As Object
Dim lZeile As Long
If ListBox1.ListIndex >= 0 Then
Set oExcelApp = CreateObject("Excel.Application")
Set oExcelWorkbook = oExcelApp.Workbooks.Open(sBeispiel)
lZeile = 2
With oExcelWorkbook.sheets(sTabellenblatt)
Do While .Cells(lZeile, 1) <> ""
If ListBox1.Text = CStr(.Cells(lZeile, 2).Value) Then
ActiveDocument.Bookmarks("Textmarke_Name ").Range.Text = _
CStr(.Cells(lZeile, 2 ).Value)
ActiveDocument.Bookmarks("Textmarke_ID").Range.Text = _
CStr(.Cells(lZeile, 1).Value)
ActiveDocument.Bookmarks("Textmarke_Beschreibung").Range.Text = _
CStr(.Cells(lZeile, 3).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
|