使用VBA将linux文本文件加载到excel中

我有一个在Linux上创build的文本文件,如果我打开它在Word中的文件正常出现。 但是,当我在记事本中打开它,当我尝试使用下面的代码加载到Excel中时,它显示为一行。

' Open the file Open Filename For Input As #1 ' Look for the Table Title Do While Not (EOF(1) Or InStr(TextLine, TableTitle) > 0) Line Input #1, TextLine Loop 

我怎样才能把它分成原始的线条? vba可以使用吗?是否有行结束的分隔符?

Solutions Collecting From Web of "使用VBA将linux文本文件加载到excel中"

Linux使用换行符\n )来表示一个新行,而不是像Windows所使用的回车 + 换行符\r\n ),因此您不能使用Line input ,而是:

 Open Filename For Input As #1 '//load all buff = Input$(LOF(1), #1) Close #1 '//*either* replace all lf -> crlf buff = replace$(buff, vbLf, vbCrLf) msgbox buff '//*or* line by line dim lines() As String: lines = split(buff, vbLf) for i = 0 To UBound(lines) msgbox lines(i) next 

功能

 Public Function GetLines(fpath$) As Variant 'REFERENCES: 'Microsoft Scripting Runtime // Scripting.FileSystemObject 'Microsoft VBScript Regular Expressions 5.5 // VBScript_RegExp_55.RegExp Dim fso As New Scripting.FileSystemObject, RE As New VBScript_RegExp_55.RegExp If fso.FileExists(fpath) = True Then Dim mts As MatchCollection, mt As Match Dim lines() As String Dim content$: content = fso.OpenTextFile(fpath).ReadAll() With RE .Global = True .Pattern = "[^\r\n]+" 'catch all characters except NewLines/Carraige Returns If .test(content) = True Then Set mts = .Execute(content) ReDim lines(mts.Count - 1) Dim pos& For Each mt In mts lines(pos) = mt.Value pos = pos + 1 Next mt Else MsgBox "'" & Dir(fpath) & "' contains zero bytes!", vbExclamation End If End With GetLines = lines Else MsgBox "File not found at:" & vbCrLf & Dir(fpath), vbCritical End If End Function 

并可以通过(从immediate window

 ?GetLines("C:\BOOT.INI")(2) 

和输出

 default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS 

上面的例子可以用来获取源自任何操作系统的任何文本文件中的所有行。


希望这可以帮助。