2016-02-05 41 views
1

應該很簡單,我認爲,但似乎無法使其工作。嘗試了兩種方法將文本文件(.txt)打開到excel中,並使用Other選項進行分割:「!」以感嘆號作爲分隔符打開文本文件和分割()

Set workbookbk = Workbooks.OpenText(fullfilepath, xlMSDOS, _ 
xlDelimited, xlDoubleQuote, False, False, False, False, False, True, "!") 

這個語法很好,但它說「編譯錯誤:預期的函數或變量」我錯過了什麼?

我也用

Set workbk = Workbooks.Open filename:= fullfilepath, Delimiter:= "!" 

這將打開該文件確定,但不如果你打算從跳過參數的文件,同時

幫助非常感謝

回答

2

分裂方法,那麼您需要明確指定您提供哪些參數供應:


Workbook.OpenText語法(從MSDN

expression.OpenText(Filename, Origin, StartRow, DataType, TextQualifier, ConsecutiveDelimiter, Tab, Semicolon, Comma, Space, Other, OtherChar, FieldInfo, TextVisualLayout, DecimalSeparator, ThousandsSeparator, TrailingMinusNumbers, Local)

expression A variable that represents a Workbooks object.


在代碼中,你已經錯過了一些爭論,但是編譯器將假定你已經按預期的順序提供的參數對於該方法除非您指定其中您傳遞的參數。例如:

Workbooks.OpenText Filename:=fuullfilepath, Origin:=xlMSDOS, DataType:=xlDelimited, Other:=True, OtherChar:="!" 

而且,可能不是你所希望看到的答案,但我寫了一個UDF來完成類似的事情,而不使用.OpenText()方法前一陣子:

Function MM_OpenTextFile(vPath As String, delim As String) As Variant 

Dim FF As Integer 
Dim lineArray As Variant 
Dim temp As String 
Dim arrayList As Object 

Set arrayList = CreateObject("System.Collections.ArrayList") 

FF = FreeFile 

Open vPath For Input As #FF 
    While Not EOF(FF) 
     Line Input #FF, temp 
     lineArray = Split(temp, delim) 
     arrayList.Add lineArray 
     Erase lineArray 
    Wend 
Close #FF 

MM_OpenTextFile = WorksheetFunction.Transpose(WorksheetFunction.Transpose(arrayList.ToArray())) 

arrayList.Clear 

Set arrayList = Nothing 

End Function 

下面是你將如何使用它的一個例子:

Sub Foo() 

Dim ar As Variant '// Must be a Variant to work 

'// Change to a file and delimiter of your choosing... 
ar = MM_OpenTextFile("C:\Users\Macro Man\SomeFile.txt", "!") 

With Range("A1").Resize(UBound(ar, 1), UBound(ar, 2)) 
    .NumberFormat = "@" '// Change format to "text" 
    .Value = ar '// insert array values 
End With 

End Sub 
+1

哦,這是輝煌,簡潔和詳細。非常感謝你,這讓我生氣了! –

相關問題