VBA Excel将文本文件复制到工作表

我试图统计一个文本文件中的特定列,我认为最好的办法可能是将文本文件中的所有内容复制到Excel工作表中,然后从那里计算(否则我需要尝试直接从Excel文件中只读取一行)。 这是我迄今为止的代码:

Dim filePath As String Dim currentValue As String Dim iRow As Long Dim iCol As Long Dim badAddress As Long Dim coverageNoListing As Long Dim activeListing As Long Dim noCoverageNoListing As Long Dim inactiveListing As Long Dim fso As Object Dim f As Object '' filePath would include entire file name (picked from a browser button) filePath = ActiveSheet.Range("B2").Text '' Makes sure there isn't a sheet named "Temp_Text_File" For Each testSheet In ActiveWorkbook.Worksheets If testSheet.Name Like "Temp_Text_File" Then flag = True: Exit For Next '' If there is a sheet named "Temp_Text_File" it will be deleted If flag = True Then Application.DisplayAlerts = False ActiveWorkbook.Sheets("Temp_Text_File").Delete Application.DisplayAlerts = True End If '' Recreate sheet Sheets.Add.Name = "Temp_Text_File" '' Here I would want to copy everything (similar to manually doing "Ctrl+A" then "Ctrl+C") from the text file '' Then paste into worksheet (similar to manually doing "Ctrl+V") within this created worksheet range("A1") '' Delete at the end (user has no need for it) Application.DisplayAlerts = False ActiveWorkbook.Sheets("Temp_Text_File").Delete Application.DisplayAlerts = True 

谢谢,

Jesse Smothermon

我正在做一个类似的事情,这是我的这个sub:

我用|打开一个txt文件 作为分隔符。 然后将工作表的内容复制到我的目标工作簿(全局variables)。 然后closures包含原始txt文件的第一个工作簿而不保存。

Workbooks.OpenText的代码基本上是从logging一个macros并适应我的需要。

 Sub ImportTextFile(path As String) Dim SheetName As String Dim TMPWorkBook As Workbook Dim FilePath As String Dim TxtFilePath As String Dim TxtFileName As String Set WB = ThisWorkbook SheetName = "Test_Result" TxtFileName = path & "file.txt" Workbooks.OpenText FileName:= _ TxtFileName _ , Origin:=437, StartRow:=1, DataType:=xlDelimited, TextQualifier:= _ xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, Semicolon:=False, _ Comma:=False, Space:=False, Other:=True, OtherChar:="|", FieldInfo:=Array(Array(1, 1), _ Array(2, 1)), DecimalSeparator:=".", ThousandsSeparator:=",", _ TrailingMinusNumbers:=True Set TMPWorkBook = ActiveWorkbook TMPWorkBook.Sheets("file").Select Cells.Select Selection.Copy ResultWB.Activate ResultWB.Sheets(SheetName).Select Range("A1").Select ActiveSheet.Paste Application.CutCopyMode = False Cells.Select Cells.EntireColumn.AutoFit ActiveSheet.Range("A1").Select TMPWorkBook.Close savechanges:=False End Sub 

我发现了一些代码复制,它似乎是正确的(只testing一次,对不起)

对不起,发布这个问题,只是我find的代码不能正常工作,但我能弄明白。

 '' The sheet is added here Sheets.Add.Name = "Temp_Text_File" '' Going through the code I think when you add a sheet it's automatically targetted, but this is a precaution -- makes "Temp_Text_File" the active sheet ActiveWorkbook.Sheets("Temp_Text_File").Activate '' Next three lines open and copy text file (not physically opened.... just opened to read) Set fso = CreateObject("scripting.FileSystemObject") Set f = fso.GetFile(filePath) f.Copy (filePath) '' This paste method will start at range "A1" ActiveSheet.Paste 

谢谢,

Jesse Smothermon