2017-06-19 5 views
1

Ich bin nicht sehr fest in VBA und ich habe versucht, eine Funktion unter Word zu verwenden, die ich vor einiger Zeit in Excel geschrieben habe. (Wo es funktioniert einwandfrei!)VBA Word 2013: Scripting.FileSystemObject: Laufzeitfehler 424 - Objekt erforderlich

Die Funktion geht durch eine Textdatei und gibt Strings nach einem bestimmten (gesucht) anderen string:

Function keySearch(ByVal sSearch As String) As String 
Dim fso As New FileSystemObject 
Dim FileNum 
Dim DataLine As String 
Dim posOf_A As Integer 
Dim filepath As String 

keySearch = "" 

'Create filesystem object 
Set fso = CreateObject("Scripting.FileSystemObject") 

'filepath to textfile 
filepath = ActiveWorkbook.Path & "\temp.txt" 

Set FileNum = fso.OpenTextFile(filepath, 1) '<--- This is where the error occurs! 

Do While Not FileNum.AtEndOfStream 
    DataLine = FileNum.ReadLine 
    posOf_A = InStr(1, DataLine, sSearch, vbTextCompare) 
    If posOf_A = 1 Then 
     keySearch = Right(DataLine, Len(DataLine) - Len(sSearch)) 
    End If 
Loop 

FileNum.Close 

End Function 

Der Fehler in der Leitung auftritt, wo die Textdatei soll geöffnet sein. Fehlermeldung: Laufzeitfehler 424: Objekt erforderlich.

Ich habe geteilt bereits die Linie so weit wie möglich nach unten verengenden die Suche von dieser ursprünglichen Codezeile aus der unter Excel einwandfrei arbeitet Funktion:

FileNum = CreateObject("Scripting.FileSystemObject").OpenTextFile(ActiveWorkbook.Path & "\temp.txt", 1) 

Aber ich einfach nicht scheinen zu sein Ich habe mehrere Beispiele im Internet gesehen, die genau das tun (scheinbar) genau so, wie ich es mache ...

PS: Microsoft Scripting Runtime ist aktiviert.

Vielen Dank im Voraus für jede Art von Hilfe, die wirklich geschätzt wird!

Antwort

1

Ändern Sie ActiveWorkbook.Path zu ActiveDocument.Path. Sie versuchen, eine aktive Excel-Arbeitsmappe für den Dateipfad zu verweisen.

+0

Das war's! Vielen Dank! – budekatude

+0

Kein Problem. Herzlich willkommen! – Quint

Verwandte Themen