以感叹号作为分隔符打开文本文件和分割()

我觉得应该很简单,但似乎无法得到它的工作。 尝试了两种方法打开一个文本文件(.txt)到excel和分裂由其他选项:“!”

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

这个语法是好的,但它说“编译错误:预期的函数或variables”我错过了什么?!

我也用了

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

这将打开文件确定,但根本不分割文件

非常感谢

如果您要跳过方法中的参数,那么您需要明确指定您提供的参数:


Workbook.OpenText语法 (来自MSDN )

expressionOpenTextFilenameOriginStartRowDataTypeTextQualifierConsecutiveDelimiterTab分号逗号空格其他OtherCharFieldInfoTextVisualLayoutDecimalSeparatorThousandsSeparatorTrailingMinusNumbersLocal

expression式表示Workbooks对象的variables。


在你的代码中,你已经遗漏了一些参数,但是编译器会假设你已经按照预期的顺序为该方法提供了参数, 除非你指定了你传递的参数。 例如:

 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