基本上我需要在同一个工作簿中打开两个文件,这样我就可以对值进行一些计算。
我可以使用以下代码打开一个文件:
Sub sbVBA_To_Open_Workbook_FileDialog_xls_C()
Dim strFileToOpen As String
strFileToOpen = Application.GetOpenFilename _
(Title:="Please select an Excel file to open", _
FileFilter:="Excel Files *.xls (*.xls),")
If strFileToOpen = False Then
MsgBox "No file selected.", vbExclamation, "Sorry!"
Exit Sub
End If
Workbooks.Open strFileToOpen
End Sub
我确实在网上找到了一些允许用户选择多个文件的代码,但是我的存储在不同的位置,因此更容易有两个提示框。
如果我可以将它们加载到单独的纸张中,这将有所帮助,例如Sheet1
和Sheet2
。
非常感谢你的帮助!
答案 0 :(得分:1)
这将提示两个*.XLS*
文件名并将它们打开
Option Explicit
Sub sbVBA_To_Open_Workbook_FileDialog_xls_C()
Dim strFile1 As String, strFile2 As String
strFile1 = Application.GetOpenFilename("Excel Files *.xls* (*.xls*),", , "Choose Excel file #1")
If strFile1 = "" Then GoTo userCancel
strFile2 = Application.GetOpenFilename("Excel Files *.xls* (*.xls*),", , "Choose Excel file #2")
If strFile2 = "" Then GoTo userCancel
Workbooks.Open strFile1
Workbooks.Open strFile2
Exit Sub
userCancel:
MsgBox "User cancelled.", vbExclamation, "Sorry!"
End Sub
它不会将它们组合成一个工作表,但是需要关于它的细节。即,他们是如何结合的?如果源工作簿中有超过1个工作表怎么办?
......但这两个可以并排存在
答案 1 :(得分:1)
条款,"工作簿"和"文件"是同义词。打开文件时,它将成为工作簿集合中的工作簿。如果打开多个工作簿,则可以使用以下代码显示其名称:
Private Sub ShowWorkbookNames()
Dim wb As Workbook
For Each wb In Application.Workbooks
Debug.Print wb.Name
Next wb
End Sub
因此,如果您在Excel中打开了两个不同的文件(Say," Invoices.xlsm"," Download.csv"),那么运行上面的代码将提供以下输出到立即窗口,可通过ctrl + G查看:
Invoices.xlsm
Download.csv
您不希望构建包含前两个工作簿中每个工作簿中的一个工作表的第三个工作簿,但这并不重要,因为您将能够以类似的方式访问这两个工作表当您在同一工作簿中访问两个工作表时。
Private Sub IdentifyWorksheetsInSeperateWorkbooks()
'Workbook 1
Dim wb1 As Workbook
Dim ws1 As Worksheet
Set wb1 = Application.Workbooks("Invoices.xlsm")
Set ws1 = wb1.Sheets("Accounts")
Debug.Print ws1.Name
'Workbook 2
Dim wb2 As Workbook
Dim ws2 As Worksheet
Set wb2 = Application.Workbooks("Download.csv")
Set ws2 = wb2.Sheets(1)
Debug.Print ws2.Name
End Sub
运行上面的代码将在即时窗口中创建以下输出。
Accounts
Sheet1
然后你可以做你通常用工作表ws1和ws2做的所有事情,并且完全忘记它们实际上是在不同的工作簿中。
答案 2 :(得分:0)
如果您需要打开两个以上的文件,这将循环打开对话框,直到您在对话框中选择取消或此X按钮为止。
打开后,您需要更多代码才能对文件执行任何操作。
Sub sbVBA_To_Open_Workbook_FileDialog_xls_C()
Dim strFileToOpen As String
Do
strFileToOpen = Application.GetOpenFilename _
(Title:="Please select an Excel file to open", _
FileFilter:="Excel Files *.xls* (*.xls*),")
If strFileToOpen = "False" Then
MsgBox "No file selected.", vbExclamation, "Sorry!"
Exit Sub
End If
Workbooks.Open strFileToOpen
Loop
End Sub