Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1780to1784
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Excel geschlossene Textmarke ansprechen

Excel geschlossene Textmarke ansprechen
03.09.2020 12:53:28
David
Servus zusammen,
ich hänge wieder einmal an der Schnittstelle Excel-Word. Ich öffne mit einem Excel Code eine Word-Datei und bepacke diese an offene Textmarken mit Text. Das klappt auch prima. In der Word-Datei möchte ich später an einigen Textstellen Querverweise auf die Textmarken setzen, so dass sowohl der Textinhalt als auch der Link zur Textmarke an der ausgewählten Stelle eingefügt wird. Word übernimmt allerdings leider nur den Textinhalt, wenn es sich um eine geschlossene Textmarke handelt. Sobald ich die Textmarken "Anhang" in meiner Word-Vorlage allerdings als geschlossene Textmarken definiere und die geschlossene Textmarke aus Excel-VBA ansprechen will, verschwindet die Textmarke in dem Word-Dokument an der entsprechenden Stelle und lässt sich somit nicht mehr verlinken.
Ist es überhaupt möglich geschlossene Textmarken aus Excel heraus anzusprechen?
Ich hoffe ich konnte mein Problem verständlich rüberbringen. Anbei der Code:
Option Explicit
Public objWordRange As Object
Public objDocument As Object
Public objDialog As Object
Public objApp As Object
Public strVorlage As String
Public c As Boolean
Sub ExportExceltoWord ()
strVorlage = "Pfad zur Datei"
Set objApp = OffApp("Word")
If Not objApp Is Nothing Then
Set objDocument = objApp.Documents.Add(Template:=strVorlage)
With objApp
Do While c = False
If MsgBox("Anhang mit einfügen?", vbYesNo) = vbYes Then
objDocument.Bookmarks("Anhang").Range.Select '----> "Anhang" ist die Textmarke um die es  _
sich handelt
objApp.Selection.InlineShapes.AddPicture Filename:=Application.GetOpenFilename
Else
c = True
End If
Loop
MsgBox ("Anhang wurde eingefügt")
c = False
objDocument.Bookmarks("Anhang").Range.Select '----> hier wird wieder auf die Textmarke  _
verwiesen
objApp.Selection.Text = "Anhang"
objApp.Selection.Style = objDocument.Styles("Überschrift 1")
End With
Application.CutCopyMode = True
' Objektvariable objWordRange leeren
Set objWordRange = Nothing
Set objDialog = objApp.Dialogs(wdDialogFileSaveAs)
With objDialog
' Pfad vorgeben
.Name = "Speicherpfad"
' Wenn auf Speichern geklickt wurde...
If .Display = -1 Then
objDocument.SaveAs Filename:=.Name
End If
' Dokument schliessen
objDocument.Close
End With
Else
' Ausgabe, wenn die Objektvariable objApp Nothing ist...
MsgBox "Applikation nicht installiert!"
End If
Fin:
If Not objApp Is Nothing Then
' Word war nicht offen, also...
If blnTMP = True Then
' ... Word schliessen
objApp.Quit
blnTMP = False
End If
End If
' Objektvariablen leeren
Set objWordRange = Nothing
Set objDocument = Nothing
Set objApp = Nothing
Application.CutCopyMode = True
' Wenn die Fehlernummer NICHT 0 ist, dann gib die Fehlernummer
' und die Fehlerbeschreibung aus
If Err.Number  0 Then MsgBox "Fehler: " & _
Err.Number & " " & Err.Description
End Sub
Ich hoffe mir kann jemand weiterhelfen,
Danke und Gruß

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Excel geschlossene Textmarke ansprechen
03.09.2020 14:32:13
Luschi
Hallo David,
hier mal ein kurzes Beispiel, wie man geschlossene Textmarken nach dem Ausfüllen mit Inhalt wiederherstellt:
'TM2 ist eine geschlossene TM
Dim oRng As Object
Set oRng = objDocument.Bookmarks("TM2").Range
'TM2 markieren
oRng.Select
'Bildchen in TM2 einfügen
oRng.InlineShapes.AddPicture Filename:=Application.GetOpenFilename
'jetzt ist TM2 von Word gelöscht worden, da geschlossene TM
'TM2 wiederherstellen
objDocument.Bookmarks.Add "TM2", oRng
Gruß von Luschi
aus klein-Paris
PS: Da Du im Code die Word-Konstante 'wdDialogFileSaveAs' benutzt, hast Du in Vba einen Verweis auf die Word-Bibliothek gesetzt (Early Binding), daß Word-Objekt erzeugst Du aber mit 'CreateObject' (Late Binding) - beides zu mischen ist keine gute Idee.
Auch die Do While - Loop schleife hat keinen sauberen Ausstieg und die MsgBox erscheint zu oft.
Anzeige
AW: Excel geschlossene Textmarke ansprechen
03.09.2020 15:54:25
David
Hallo und Danke für dein schnelles Feedback.
Ich versuche deine Ansatz gleich mal umsetzen. Glaubst du die Mischung von "Early Binding" und "Late Binding" ist die Ursache für den Laufzeitfehler "4605" den manchmal beim Ausführen des Codes angezeigt bekomme?
besten Gruß
AW: Excel geschlossene Textmarke ansprechen
03.09.2020 16:15:09
David
Hallo Luschi,
Bei deinem Ansatz fügt er leider nur eine offene und keine geschlossene Textmarke ein. Leider bracuhe ich eine geschlossene, um später einen Querverweis darauf zu setzen, der sowohl den Textinhalt als auch den Link der TM übernimmt.
Hast du sonst noch Ideen wie es klappen könnte?
Danke im Voraus,
Grüße :)
Anzeige
AW: Excel geschlossene Textmarke ansprechen
03.09.2020 18:29:05
Luschi
Hallo Gavid,
wen es eine geschlossene TM vor dem Einfügen war, dann ist es bei mir nach dem Einfügen wieder eine geschlossene TM und existiert in der Sammlung der vorhandenen TM's; als Beweis 2 jpg's.
Userbild
Userbild
In beiden Grafiken sind die 2 eckigen Klammern der geschlossenen TM zu erkennen!
Gruß von Luschi
aus klein-Paris
AW: Excel geschlossene Textmarke ansprechen
07.09.2020 09:10:23
David
Guten Morgen,
nach unzähligen Versuchen schaffe ich es noch immer nicht eine geschlossene Textmarke einzufügen, obwohl in der Word-Vorlage eine geschlossene Textmarke eingefügt wurde. Hier nochmal mein bisheriger Codeausschnitt:
Sub ExcelToWord ()
'........siehe oben --> starte mit relevanten Ausschnitt
With objApp
Do While c = False
If MsgBox("Anhang mit einfügen?", vbYesNo) = vbYes Then
Set Bkmrk = objDocument.Bookmarks("Anhang").Range
Bkmrk.Select
Bkmrk.InlineShapes.AddPicture Filename:=Application.GetOpenFilename
objDocument.Bookmarks.Add "Anhang", Bkmr
Else
c = True
End If
Loop
MsgBox ("Anhang wurde eingefügt")
c = False
Set Bkmrk = objDocument.Bookmarks("Anhang").Range
Bkmrk.Select
objApp.Selection.Text = "Anhang"
objApp.Selection.Style = objDocument.Styles("Überschrift 1")
objDocument.Bookmarks.Add "Anhang", Bkmrk
End With
End Sub

Könnte es sein, dass ich nicht den Text in der Textmarke markiere, sondern nur die Stelle an der Textmarke und das dadurch eine offene statt einer geschlossener eingewfügt wird?
Vielen Dank im Voraus, ich hoffe mir kann jemand weiterhelfen.
Einen guten Start in die Woche und bleibt mir gewogen!
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige