【发布时间】:2020-05-08 02:02:29
【问题描述】:
目前我是学习 VBA 以进行报告的新手,我仍在从中学习。继续前进,我可以在这个方面寻求帮助吗? :),我的情况是这样的。
- 我有 20 个工作簿(POLY、BAYO、PROPO、TIPAS、CITRO....等)的数据,工作表名称为 (Sheet1)
- 我有一个包含许多工作表的摘要工作簿,其工作表名称基于 20 个工作簿文件名,但不按字母顺序排列。 (工作表名称 = CITRO、BAYO、PROPO、POLY、TIPAS....等)
- 我想根据文件名和特定单元格(“B2:F2”)复制每个工作簿上的数据并将其粘贴到各自的工作表名称中
- 可行吗?
这是我正在尝试处理的代码,问题是,它正在创建自己的工作表,而不是将其粘贴到我想要的工作表上。
Private Sub CommandButton1_Click()
Dim SourceBook As Workbook
Dim CurrentBook As Workbook
application.screenupdating = false
Set CurrentBook = ThisWorkbook
Set SourceBook = Workbooks.Open("C:\CITRO.xlsx")
SourceBook.Sheets("Sheet1").Range("B2:F2").Copy Destination:=CurrentBook.Sheets("CITRO").Range("R2:V2")
Set SourceBook = Workbooks.Open("C:\BAYO.xlsx")
SourceBook.Sheets("Sheet1").Range("B2:F2").Copy Destination:=CurrentBook.Sheets("BAYO").Range("R2:V2")
Set SourceBook = Workbooks.Open("C:\PROPO.xlsx")
SourceBook.Sheets("Sheet1").Range("B2:F2").Copy Destination:=CurrentBook.Sheets("PROPO").Range("R2:V2")
MsgBox "Completed"
Application.Workbooks("CITRO").Close
Application.Workbooks("BAYO").Close
Application.Workbooks("PROPO").Close
'SourceBook.Close
'Set SourceBook = Nothing
'Set CurrentBook = Nothing
'ThisWorkbook.Activate
'Application.Worksheets("Summary").Activate
'Application.Worksheets("Summary").Range("B2:F2").Select
End Sub
【问题讨论】:
-
因为
SourceBook.Sheets("Sheet1").Copy复制了整个工作表。您只需要在一行中复制一个范围SourceBook.Sheets("Sheet1").Range("A1:B10").Copy Destination:=CurrentBook.Sheets("Summary").Range("A1")‹~~。根据需要调整范围地址。 -
感谢输入 -Peh,现在这就是我编写的代码,因为我还不熟悉循环,(有人告诉我)。我基本上为它做手动静态代码,我也删除了 sourcebook.close 并替换为 application.workbooks("Sheets").close 原因是我不知道为什么它仍然打开数据源工作簿。