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

VBA Excel将文本文件复制到工作表,excel,vba,copy,text-files,Excel,Vba,Copy,Text Files,我试图对文本文件中的特定列进行统计,我认为最好的方法可能是将文本文件中的所有内容复制到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 activeLis

我试图对文本文件中的特定列进行统计,我认为最好的方法可能是将文本文件中的所有内容复制到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 Smotheron

我发现了一些进行复制的代码,似乎是正确的(不过只测试了一次,对不起)

很抱歉发布了这个问题,只是我发现的代码工作不正常,但我能够找到它

'' 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 Smotheron

我正在做一件类似的事情,下面是我对此的说明:

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

Workbooks.OpenText的代码基本上是记录宏并根据我的需要调整它

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

好的,总体来说,我看到了我做的复制和粘贴,你的代码可能更好,因为其他使用这些的人可以稍微更改代码,以更好地满足他们的需要,而不是我的。感谢您的回复如果txt文件的内容由一些字符(逗号、分号等)分隔,那么您应该使用
工作簿.OpenText
方法将值放入正确的列中。(看我的答案)是的,这就是为什么我选择了你的答案而不是我的,你的答案最终更灵活