【发布时间】:2014-04-25 12:25:29
【问题描述】:
我有这个有效的代码:(我目前使用 Excel 2003)
Sub test_copy1()
Dim wb1 As Workbook
Dim wb2 As Workbook
Dim ws1 As Worksheet
Dim ws2 As Worksheet
Set wb1 = Workbooks("Workbook2.xls")
Set wb2 = ThisWorkbook
Set ws1 = wb1.Sheets("Run 1")
Set ws2 = wb2.Sheets("Sheet3")
ws2.Range("A1:h30") = ws1.Range("A177:H206").Value
End Sub
在当前工作簿“表 3”中 单元格 J1 = Workbook2.xls 单元格 J2 = 运行 1
如何将当前工作簿“表 3”中的信息从单元格输入到宏中,以便可以根据需要进行更改并且仍然有效?
我的意思是有 2 个可以在工作表中更改的单元格,可以通过下拉列表或手动填写在当前工作簿工作表“工作表 3”上。 单元格:J1 等于文件名 (Workbook2.xls),J2 等于工作表名称 (Run 1)。
用户可以在需要时更改文件名和工作表名称,然后点击按钮来处理复制和粘贴。
我希望代码从单元格中获取信息并将它们放入代码中,而不是“硬”编码工作簿和工作表的文件名。
我希望这更有意义
感谢您的帮助。
~达
-----更新----
我已经尝试过这段代码,但它在第一次 Set Wb1= 时一直崩溃
Sub test_copy1()
Dim wb1 As Workbook
Dim wb2 As Workbook
Dim ws1 As Worksheet
Dim ws2 As Worksheet
Set wb1 = Workbooks(ws2.Range("J1"))
Set wb2 = ThisWorkbook
Set ws1 = wb1.Sheets(ws2.Range("J2"))
Set ws2 = wb2.Sheets("Sheet3")
ws2.Range("A1:h30") = ws1.Range("A177:H206").Value
End Sub
--------更新-------
我使用所有示例并在范围后添加 .Value 来让它工作:)
Sub test_copy1()
Dim wb1 As Workbook
Dim wb2 As Workbook
Dim ws1 As Worksheet
Dim ws2 As Worksheet
Set wb2 = ThisWorkbook
Set ws2 = wb2.Sheets("Sheet3")
Set wb1 = Workbooks(ws2.Range("J1").Value)
Set ws1 = wb1.Sheets(ws2.Range("J2").Value)
ws2.Range("A1:h30") = ws1.Range("A177:H206").Value
End Sub
谢谢你,谢谢你的帮助!!
【问题讨论】:
-
Set wb1 = Workbooks(ws2.Range("J1"))和Set ws1 = wb1.Sheets(ws2.Range("J2"))? -
byw,您的名称来自
J1的工作簿是否始终打开?如果不是,J1是否只包含 wb 名称或完整路径? -
是的,两个工作簿始终处于打开状态。我现在就试试你的建议。
-
J1 只有文件名。是否需要完整路径?