Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1288to1292
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 Verknüpfung zu Word

Excel Verknüpfung zu Word
17.12.2012 12:13:50
Alexander
Hallo zusammen,
ich bin mir nicht ganz sicher, ob ich hier richtig bin da sich mein Problem auf die Zusammenarbeit zwischen Word und Excel bezieht.
Ich habe in meiner Word-Datei ein Marko geschrieben welches grob zusammengefasst folgendes erledigt:
Durchsuche das Word Dokument nach einer definierten Formatierung.
Wenn diese gefunden wurde, kopiere den Text der Formatierung in eine neue Zeile im ausgewählten Excel Dokument. In einer weiteren Spalte wird ein zugehöriger Platzhalter reinkopiert.
Der Platzhalter wird wieder mit Word verknüpft, so dass der Zelleninhalt dann ich Word zur Verfügung steht.
Der Code mach auch eigentlich das was er soll aber die Verknüpfung wird nicht korrekt gesetzt.
In der Verknüfpfung steht zum Beispiel R4C11 anstatt Z4S11.
könnt Ihr mir sagen, wie ich das ändern kann?
Im folgenden mein Codeschnipsel:
For T = 1 To AnzahlTabellen
Set AktuelleTabelle = Doc.Tables(T) ' Aktuelle Tabelle
With AktuelleTabelle
Set AktuelleZeile = .Rows(1).Range
AnzahlZeilen = .Rows.Count
AnzahlSpalten = .Columns.Count
' For Z = AnzahlZeilen To 1 Step -1
Set AktuelleZeile = .Rows(1)
ZellenInhalt = AktuelleZeile.Cells(1).Range.Text
If AktuelleZeile.Cells(1).Range.Style = ActiveDocument.Styles("Überschrift 1") Then
hits = hits + 1
'############### Jetzt nach Excel Exportieren########################
ZellenInhalt = Left(ZellenInhalt, Len(ZellenInhalt) - 1)
sWorkbook.ActiveSheet.Rows(hits + 3).Insert
sWorkbook.ActiveSheet.Rows(hits + 3).Clear 'Komplette Zeile leeren
sWorkbook.ActiveSheet.Cells(hits + 3, 1) = ZellenInhalt
'Schreibe Platzhalter
ZellenInhalt = AktuelleZeile.Cells(2).Range.Text
ZellenInhalt = Left(ZellenInhalt, Len(ZellenInhalt) - 1)
sWorkbook.ActiveSheet.Cells(hits + 3, 11) = ZellenInhalt
'######## Erstelle Verknüpfung zu Word
sWorkbook.ActiveSheet.Cells(hits + 3, 11).Copy
AktuelleZeile.Cells(2).Select
Selection.PasteSpecial Link:=True, DataType:=wdPasteText, Placement:= _
wdInLine, DisplayAsIcon:=False
' Einfügen mit ZS Info!!!!!!!!!!!!!!!!!!!!!!!!
'############### Jetzt nach Excel Exportieren########################
End If
' Next ' Nächste Zeile
End With
Next ' Nächste Tabelle
Besten Dank für Eure Anregungen und Hinweise schon im Voraus!
Alex Richter

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Excel Verknüpfung zu Word
19.12.2012 08:57:09
Klaus
Hi Alex,
In der Verknüfpfung steht zum Beispiel R4C11 anstatt Z4S11.
das ist das gleiche. R4C11 heisst Row-four-Column-eleven, Z4S11 analog dazu Zeile-vier-Spalte-elf. Eins ist auf englisch, eins auf deutsch. VBA-Code ist generell auf englisch (also, Excel-Formelseitig und so).
Grüße,
Klaus M.vdT.

AW: Excel Verknüpfung zu Word
19.12.2012 14:37:38
Alexander
Hallo Klaus,
vielen Dank für deine Antwort.
Mir war schon klar, dass es sich hierbei prinzipiell um das gleiche handelt.
Mein Problem ist nur, dass Word der Meinung ist, dass es sich hierbei um eine ungültige Verknüpfung handelt.
Wenn ich mir die durch Code gesetzte Verknpfung in der Word Datei ansehe, dann steht dort eben R4C11. Eine aktualisierung der Verknüpfung ist nicht möglich. Erst wenn ich R4C11 durch Z4S11 ersetze kann ich die Verknüpfung auch tatsächlich nutzen.
Wie kann ich dieses Phänomen auflösen?
Vielen Dank und schonmal frohe Feiertage!
Alex

Anzeige
AW: Excel Verknüpfung zu Word
19.12.2012 15:18:22
Klaus
Wie kann ich dieses Phänomen auflösen?
Hast du mal versucht, die Spracheinstellungen zu ändern?
Wenn das nichts bringt, kann man vielleicht (!!) den Bezug als String auslesen und dann Suchen-Ersetzen nutzen um den "richtigen" String draus zu machen, aber da kenn ich mich nicht genug aus (weder mit VBA noch mit Word).
Grüße und viel Erfolg,
ich lass den Thread mal offen
Klaus M.vdT.

AW: Excel Verknüpfung zu Word
19.12.2012 18:17:36
Alexander
Hallo,
zur Analyse der Spracheinstellungen habe ich mir folgenden Code zurechtgelegt:
Private Sub testlanguage_Click()
Dim appExcel As Object
'ExcelObject erstellen
Set appExcel = CreateObject("Excel.Application")
MsgBox (Application.LanguageSettings.LanguageID(msoLanguageIDExeMode))
MsgBox (Application.LanguageSettings.LanguageID(msoLanguageIDUI))
MsgBox (appExcel.LanguageSettings.LanguageID(msoLanguageIDExeMode))
MsgBox (appExcel.LanguageSettings.LanguageID(msoLanguageIDUI))
End Sub

Der Code bringt folgende Sprach IDs:
1. 0
2. 1031
3. 0
4. 1031
Also vermeintlich die gleichen Sprachen.
Laut VBA Onlinehilfe sind die Sprach Eigenschaften Schreibgeschützt, so dass ich nicht davon ausgehe, dass man diese ändern kann.
Was das Nachträgliche auslesen des Verbindungsstrings angeht habe ich leider keinen Ansatz wie ich das machen könnte.
Viele Grüße
Alex

Anzeige
AW: Excel Verknüpfung zu Word
19.12.2012 23:10:06
Alexander
Guten Abend ;)
ich habe mir nun die Idee von Klaus zum nachträglichen Ändern der Verknüpfungen zur Brust genommen.
Hierzu habe ich mir nun folgenden Code zurechtgelegt:
Private Sub ChangeHyperlinks()
'Markiert alle Zeichen im Dokument:
Selection.WholeStory
'Zeigt auch formatierungen an
Selection.Fields.ToggleShowCodes
'Speichert alle markierten Zeichen in dem String "Alles"
Dim Alles As String
Alles = Selection
'i als zähler für die Position im String - count steht für die Anzahl gefundene Elemente
Dim i As Long, count As Long
count = 0
For i = 1 To Len(Alles)
If (Mid(Alles, i, 16) = "LINK Excel.Sheet") Then
count = count + 1
End If
Next i
Dim link, changedlink As String
For i = 1 To count
'Ruft die Methode searchString auf
Call searchString
link = Selection.Text
changedlink = Replace(link, "R", "Z")
link = changedlink
changedlink = Replace(link, "C", "S")
Selection.Text = changedlink
Next i
End Sub

Private Sub searchString()
Selection.Find.ClearFormatting
With Selection.Find
.Text = ""
.Replacement.Text = ""
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = True
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
Selection.Find.Execute
End Sub

Wenn ich diesen Code nach dem Export zu Excel manuell anstoße funktioniert dieser auch wunderbar.
Führe ich diesen Code aber direkt nach dem Export zu Excel aus ist das Ergebnis nicht mehr ganz so schon.
Meine Vermutung ist, dass es mit der Selection zusammenhängt, verstehe aber nicht wo genau das Problem liegt.
Der Kombinierte Aufruf ist relativ Simpel:
Private Sub ExportToExcel_Click()
CreateHyperlinks
ChangeHyperlinks
Unload Me
End Sub
Kann mir diesbezüglich jemand einen Hinweis geben?
Vielen Dank!
Alex

Anzeige
Das ist Word-VBA, oder?
20.12.2012 09:08:42
Klaus
Hi Alex,
wenn ich deinen Code lese, möchte ich reflexartig posten "vermeide .select und .selection um Fehler zu umgehen". Dann fällt mir aber ein, dass du ja aus Word heraus arbeitest. Da kenn ich mich nicht aus, kann mir aber vorstellen dass man - mangels ansprechbarer Zellen - selektieren muss.
Was mir auffällt:
    'Speichert alle markierten Zeichen in dem String "Alles"
Dim Alles As String
Alles = Selection

Das macht gar nichts, oder? Zumindest sehe ich nicht, dass du "alles" im weiteren Code nochmal verwendest.
Ich mach den Beitrag mal wieder "auf", vielleicht kennt sich jemand besser in Word aus als ich.
Grüße,
Klaus M.vdT.

Anzeige
AW: Excel Verknüpfung zu Word
19.12.2012 19:36:11
Alexander
Hallo,
zur Analyse der Spracheinstellungen habe ich mir folgenden Code zurechtgelegt:
Private Sub testlanguage_Click()
Dim appExcel As Object
'ExcelObject erstellen
Set appExcel = CreateObject("Excel.Application")
MsgBox (Application.LanguageSettings.LanguageID(msoLanguageIDExeMode))
MsgBox (Application.LanguageSettings.LanguageID(msoLanguageIDUI))
MsgBox (appExcel.LanguageSettings.LanguageID(msoLanguageIDExeMode))
MsgBox (appExcel.LanguageSettings.LanguageID(msoLanguageIDUI))
End Sub

Der Code bringt folgende Sprach IDs:
1. 0
2. 1031
3. 0
4. 1031
Also vermeintlich die gleichen Sprachen.
Laut VBA Onlinehilfe sind die Sprach Eigenschaften Schreibgeschützt, so dass ich nicht davon ausgehe, dass man diese ändern kann.
Was das Nachträgliche auslesen des Verbindungsstrings angeht habe ich leider keinen Ansatz wie ich das machen könnte.
Viele Grüße
Alex
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige