【发布时间】:2017-10-13 12:03:11
【问题描述】:
我希望能够在一个文件夹中获取 x 个文件并将它们全部放在同一个工作簿的不同工作表上。
我发现这段代码有效;
Public Sub consolWB()
Dim FSO As Object
Dim folder As Object, subfolder As Object
Dim wb As Object
Set FSO = CreateObject("Scripting.FileSystemObject")
folderPath = "C:\Users\patrickw\Desktop\exceltest"
Set folder = FSO.GetFolder(folderPath)
With Application
.DisplayAlerts = False
.ScreenUpdating = False
.EnableEvents = False
.AskToUpdateLinks = False
End With
For Each wb In folder.Files
If Right(wb.Name, 3) = "xls" Or Right(wb.Name, 4) = "xlsx" Or Right(wb.Name, 4) = "xlsm" Then
Set openWB = Workbooks.Open(wb)
For Each ws In openWB.Worksheets
ws.Copy after:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)
Next ws
openWB.Close
End If
Next wb
With Application
.DisplayAlerts = True
.ScreenUpdating = True
.EnableEvents = True
.AskToUpdateLinks = True
End With
End Sub
但是,这只是因为我已经设置了目标文件路径供它查看。
我想创建一个按钮,提示用户输入文件路径,然后使用该文件路径来引入文件。
我想我必须把输入变成一个字符串,然后在上面的代码中使用这个变量。
这可能吗?
在上面的示例中,新工作表只是称为“sheet1...”,是否可以自己命名这些工作表?
谢谢
【问题讨论】:
-
您希望他们在框中输入他们想要的内容、输入到单元格中,还是打开一个框来浏览和选择文件夹?或者别的什么。
-
我最初想要一个下拉框,然后他们可以选择正确的文件。无论采用哪种方式,我都必须能够将该字符串用作我的其他宏中的查找,如果这有意义的话?
-
我刚刚尝试过,它实际上打开了文件。我只希望用户以字符串形式输入文件目录。然后我想在我的另一个“合并”宏中使用这个字符串,然后从该文件夹中引入 3 个文件
-
如果您停下来思考一分钟,而不是盲目地从互联网上随机的陌生人那里复制/粘贴代码,您会意识到由于
Workbooks.Open调用,它正在打开文件。 查看代码并理解它,并调整它以满足您的需求;不要只是将您的代码拼凑起来,并在网络上收集随机的零碎碎片。 @QHarr 的示例正是您需要的。