我是VBA的新手,我的代码需要一些帮助。我正在使用Excel和Application.GetOpenFilename
来提示用户选择要打开的文件。当我将数据从一个文件复制到另一个文件时,我正在尝试激活由GetOpenFilename
应用程序打开的工作簿。
我正在从我的主要工作簿中运行VBA代码,这就是我的代码。
打开导入文件
strGetFilename = Application.GetOpenFilename(, , "Open Import Workbook")
Workbooks.Open strGetFilename
在此示例中,假设选择打开的文件是Workbook2,然后从Workbook2中的表中选择数据并复制。
ActiveSheet.ListObjects("table1").Range.Select
Selection.Copy
我现在将数据粘贴到我的主要工作簿中
Windows("PrimaryWorkbook.xlsm").Activate
Sheets("Sheet1").Select
Range("A1").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone,
SkipBlanks _
:=False, Transpose:=False
这是我被绊倒的地方。我想回到Workbook2来复制其他表/工作表,或者能够执行其他数据编辑,但是我不想对文件名进行硬编码。
有什么建议吗?
答案 0 :(得分:1)
您需要使用“设置”
Set fileVariable = Workbooks.Open(path & "\" & fileName)
然后可以使用fileVariable.Range(“ A1”)。select引用该变量。
通常最好避免选择和激活。您可以直接编码
.range("A1").value2 = .range("B1").value2
要复制并粘贴。
答案 1 :(得分:0)
将其分配给变量
Sub x()
Dim wb As Workbook, strGetFilename As String
strGetFilename = Application.GetOpenFilename(, , "Open Import Workbook")
Set wb = Workbooks.Open(strGetFilename)
MsgBox wb.Name
End Sub
并阅读this,了解如何避免使用“选择/激活”。
然后您可以使用
wb.Sheets("Sheet1").Range("A1").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False