如何使用可变工作簿名称激活工作簿?

时间:2019-07-09 18:57:42

标签: excel vba

我是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来复制其他表/工作表,或者能够执行其他数据编辑,但是我不想对文件名进行硬编码。

有什么建议吗?

2 个答案:

答案 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