我正在尝试将选定工作簿中的数据复制并粘贴到我的主文件中。我遇到的一个主要问题是返回到主文件,原因是主文件的名称每个月都会更改为其运行的月份。下个月运行时,本月“四月主文件”的“三月主文件”。我尝试通过引用文件路径返回到该文件,但它不起作用,例如“窗口(TEMPLATEFile).Activate”。是否有更简单的方法来编写此文件并且不必引用文件路径的任何建议?
这是我到目前为止所做的:
Sub ImportRepurchData()
Dim combinedBook As Workbook
Dim filter As String
Dim caption As String
Dim combinedFilename As String
Dim combinedWorkbook As Workbook
Dim targetWorkbook As Workbook
TEMPLATEFile = Sheets("Dynamic").Range("ImportRepurch")
' Open Source Data
Set targetWorkbook = Application.ActiveWorkbook
filter = "Text files (*.xlsx),*.xlsx"
caption = "Please Select an input file"
combinedFilename = Application.GetOpenFilename(filter, , caption)
Set combinedWorkbook = Application.Workbooks.Open(combinedFilename)
' Paste Source Data into original workbook
Range("P4:P100000,AL4:AL100000").Select
Selection.Copy
Windows(TEMPLATEFile).Activate
Sheets("Input Sched-Unsched Split").Select
Range("B9:B100000,C9:C100000").Select
ActiveSheet.Paste
combinedWorkbook.Close
End Sub
答案 0 :(得分:0)
如果从主文件中运行代码,则可以使用 的ThisWorkbook 代替 Application.Workbooks(someIndexOrName)
本工作簿始终是运行代码的工作簿,即使它是加载项(XLAM)。
如果不是这种情况,您可以编写一个识别工作簿的功能,例如:基于是否存在具有特殊名称(或代码名称)的工作表。甚至可能是多张表。然后你可以遍历Application.Workbooks,直到找到你的主文件
答案 1 :(得分:0)
另一点是,这会给你带来麻烦:
Range("P4:P100000,AL4:AL100000").Select
Selection.Copy
Windows(TEMPLATEFile).Activate
Sheets("Input Sched-Unsched Split").Select
Range("B9:B100000,C9:C100000").Select
ActiveSheet.Paste
当你可以用
达到同样的效果 combinedWorkbook.range("P4:P100000").copy targetworkbook.worksheets(""Input Sched-Unsched Split").range("B9")
combinedWorkbook.range("al4:al100000").copy targetworkbook.worksheets("Input Sched-Unsched Split").range("c9")
永远不要在VBA中使用select或activate