2017-04-04 2 views
1

Ich bekomme Laufzeitfehler 13 (Typ Mismatch) auf meinem Code, wenn ich versuche, es auszuführen. Ich versuche, einen Text in einem geöffneten Word-Dokument durch Excel innerhalb der Kopfzeile zu ersetzen.Fehler beim Ersetzen von Text in der Kopfzeile VBA Excel

Set WordApp = CreateObject("Word.Application") 
WordApp.Visible = True 
Set WordDoc = WordApp.Documents.Open(myPath & "\Armaturförteckning.docx") 

' Ändrar i Armaturförteckningen 
Dim rngStory As Range 
    Dim lngJunk As Long 
    'Fix the skipped blank Header/Footer problem as provided by Peter Hewett 
    lngJunk = WordApp.ActiveDocument.Sections(1).Headers(1).Range.StoryType 
    'Iterate through all story types in the current document 
    For Each rngStory In WordApp.ActiveDocument.StoryRanges 
    'Iterate through all linked stories 
    Do 
     With WordApp.rngStory.Find 
     .Text = "ELESTATUS01" 
     .Replacement.Text = "I'm found" 
     .Wrap = wdFindContinue 
     .Execute Replace:=wdReplaceAll 
     End With 
     'Get next linked story (if any) 
     Set rngStory = WordApp.rngStory.NextStoryRange 
    Loop Until rngStory Is Nothing 
    Next 
' Stänger dokumentet 
WordApp.Documents.Save 
WordApp.ActiveDocument.Close 
+0

Welche Zeile/Anweisung verursacht den Fehler? –

Antwort

1

Ich glaube, Sie versuchen, eine VBA zu suchen und zu ersetzen. Wir haben eine Menge von Funktionen, die wir verwenden, und nach vielen Jahren der Verfeinerung verwenden wir das Folgende. Es ist lediglich die Funktion, die Suchen und Ersetzen durchführt.

Function SimpleSearchAndReplace(SomeDocument As Word.Document, SearchString As String, ReplaceString As String) 
With SomeDocument.Content.Find 
    .Text = SearchString 
    .Replacement.Text = ReplaceString 
    .Forward = True 
    .Wrap = wdFindContinue 
    .Format = False 
    .MatchCase = False 
    .MatchWholeWord = False 
    .MatchWildcards = False 
    .MatchSoundsLike = False 
    .MatchAllWordForms = False 
    .Execute Replace:=wdReplaceAll 
End With 
End Function 
0

Es scheint peinlich, dass Sie "WordApp.ActiveDocument." Wenn Sie wahrscheinlich brauchen, ist "WordDoc". in den Zeilen 'lngJunk' und 'For Each'.

+0

änderte ich meine Linie: lngJunk = WordDoc.ActiveDocument.Sections (1) .Headers (1) .Range.StoryType Es wirft mir einen Fehler hier (Fehler 438 Objekte doesn diese Eigenschaft oder Methode) – ante011