769 Aufrufe
Gefragt in Tabellenkalkulation von
Hallo!
Ich komme mal wieder nicht weiter und hoffe auf eure Hilfe.
In einem Word Dokument möchte ich von Excel aus nach einem Wort
suchen und es durch ein Bild ersetzen.

Leider klappt es nicht mit dem was ich bisher habe:
Sub test()
Dim k as Integer
Dim wApp as Object
Dim wLVDoc as Object
Dim Testfolder as String
Dim TestNumber as string

LVTemplate = "C:\Template\LVTemplate.dotx"
TestNumber = "123"
Testfolder = "C:\Test\"

Set wApp = CreateObject("Word.Application")
wApp.Visible = True
Set wLVDoc = wApp.Documents.Add(LVTemplate)

For k = 1 To 5
wLVDoc.Content.Find.Execute findtext:="<LV" & k & "O>",
Replacewith:=wLVDoc.Content.InlineShapes.AddPicture(Filename:=
TestFolder & "LV" & k & "O_Test_" & TestNumber & ".png",
LinkToFile:=False, SaveWithDocument:=True),
Replace:=wdReplaceAll
Next k

End Sub


Fehler: Run Time Error 13: Type Mismatch


Habt ihr einen Lösungsvorschlag?

Beste Grüße,
critchm

4 Antworten

0 Punkte
Beantwortet von
Hallo critchm,

Probiers mal so:

Sub test()
Dim k As Integer
Dim wApp As Object
Dim wLVDoc As Object
Dim Testfolder As String
Dim TestNumber As String

LVTemplate = "C:\Template\LVTemplate.dotx"
TestNumber = "123"
Testfolder = "C:\Test\"

Set wApp = CreateObject("Word.Application")
wApp.Visible = True
Set wLVDoc = wApp.Documents.Add(LVTemplate)

For k = 1 To 5
With wLVDoc.Content.Find
.Text = "<LV" & k & "O>"
.Replacement.Text = ""
.Execute Replace:=1
If .found = True Then
.Parent.InlineShapes.AddPicture Filename:= _
Testfolder & "LV" & k & "O_Test_" & TestNumber & ".png", _
LinkToFile:=False, SaveWithDocument:=True
End If
End With
Next k

End Sub
0 Punkte
Beantwortet von
noch besser wäre es, wenn du die Schleife von For k bis Next k durch
diese hier ersetzt. Dann kann das Wort im Dokument beliebig oft
vorkommen.
With wLVDoc.Content.Find
Do
.Text = "<LV" & k & "O>"
.Replacement.Text = ""
.Execute Replace:=1
If .found = True Then
.Parent.InlineShapes.AddPicture Filename:= _
Testfolder & "LV" & k & "O_Test_" & TestNumber & ".png", _
LinkToFile:=False, SaveWithDocument:=True
End If
Loop Until .found = False
End With
Gruß Mr. K.
0 Punkte
Beantwortet von
Sorry, ich vergaß, dass du k ja im Dateinamen verwendest. Füge also
gleich nach Do noch die Zeile k = k + 1 hinzu.
0 Punkte
Beantwortet von
Hallo Mr. K!

Danke für deine Antwort. Mit deiner Hilfe läuft es jetzt.
Ich bin bei dem For k...Next k geblieben, da die Wörter nur einmal
vorkommen.

Vielen Dank!
...