【问题标题】:Import all type of files (cvs, xls, txt) to one master excel file from a folder directory将所有类型的文件(cvs、xls、txt)从文件夹目录导入到一个主 excel 文件
【发布时间】:2016-06-08 03:46:00
【问题描述】:

我正在开发一个宏,该宏需要选择我想要的任何文件夹并导入该文件夹中的每种类型的文件,即 cvs、xls、txt 并将它们全部放入 1 个工作簿(而不是工作表)中。所以所有导入的标签都会在那里。现在代码只能接受一种类型。我尝试将下面的代码更改为:

fileName = Dir(directory & "*.csv, *.xls,*.txt")

但什么也没发生。

下面的宏现在有一个固定的目录路径,但我想弹出一个对话框,让我可以灵活地选择要从中导入文件的任何文件夹。这是我目前得到的,但请修改它或制作一个最有效的新版本。

Sub Input_Sheets()

Dim directory As String, fileName As String, sheet As Worksheet, total As Integer
Dim WrdArray() As String

Application.ScreenUpdating = False
Application.DisplayAlerts = False

directory = "C:\Users\ktam\Desktop\New folder\"

'Switch to the preferred type the folders hold. (It cannot hold 2 types)
'fileName = Dir(directory & "*.xl??")
fileName = Dir(directory & "*.csv")

'As long as the file name is found in the folder, import the file.
Do While fileName <> ""
Workbooks.Open (directory & fileName) 'Opens a random file from the folder
    'WrdArray() = Split(fileName, ".")

    For Each sheet In Workbooks(fileName).Worksheets
    'Workbooks(fileName).ActiveSheet.Name = WrdArray(0) '0 Puts in the name of the document

                total = ThisWorkbook.Worksheets.Count
                Workbooks(fileName).Worksheets(sheet.Name).Copy After:=ThisWorkbook.Worksheets(total)
    Next sheet

Workbooks(fileName).Close
fileName = Dir()
Loop

Application.ScreenUpdating = True
Application.DisplayAlerts = True

MsgBox "Complete"

End Sub

【问题讨论】:

  • 使用*.* 并通过检查扩展名在循环时过滤掉您想要的类型...
  • 优秀的蒂姆!这负责将我想要的所有内容导入到文档中。现在只要我可以从我选择的任何文件夹中选择它。
  • cpearson.com/excel/browsefolder.aspx查看页面最后一个函数

标签: vba excel


【解决方案1】:

我有这段代码对于在文件夹中循环并根据文件名将文件加载到数组中非常有用:

Global sfolder As String

sub file_merger()

file = Dir(folderchooser)

dim trackerfiles(1 to 500) as variant

counter = 1

Do While file <> ""

    if instr(1,file,".xlsx") > 0 or instr(1,file,".csv") > 0 then   


    trackerfiles(counter) = sfolder & "\" & file
    file = Dir()
    counter = counter + 1

    If file = "" Then
        Exit Do
    End If

    End if

Loop


end sub

Function folderchooser() As String

With Application.FileDialog(msoFileDialogFolderPicker)
    .Title = "Select a folder"
    .AllowMultiSelect = False
    .Show
    sfolder = .SelectedItems(1)
End With

folderchooser = sfolder & "\"

End Function

您可以使用它加载到一个数组中,然后编写您自己的代码将文件导入您的工作簿(棘手的部分是遍历文件夹)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-02-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-16
    • 1970-01-01
    • 2016-05-07
    • 1970-01-01
    相关资源
    最近更新 更多