我是VBA新手,但似乎无法理解这一点。因此,我有一个Excel源文件,在其中从选定的工作表复制必要的数据,然后将其粘贴到主工作簿(日常使用)到确切的工作表使用我的宏。我想做的是avopid硬编码源文件的路径,这样,如果源文件名更改,它仍然可以找到并打开必要的源文件文件并获得所需的数据。我还想实现错误处理,以确保源文件存在,并可以在运行宏之前打开。
Sub MacroCopy()
Workbooks.Open "C:\Users\xxxx\OneDrive\Desktop\OneDrive_0000-00-00\Project\Sources\sourcefile.xlsx"
ActiveSheet.ListObjects("Sourcesheet").Range.AutoFilter Field:=16, Criteria1:=Array("1", "2", "3", "4", "5"), Operator:=xlFilterValues
Workbooks("sourceworkbook.xlsx").Worksheets("sourceworksheet").Range("B5:EO11332").Copy _
ThisWorkbook.Worksheets("targetworksheet").Range("B5")
Workbooks("sourceworksheet.xlsx").Close SaveChanges:=True
End Sub
1条答案
按热度按时间7nbnzgx91#
有几个想法:
这段代码将尝试打开文件夹中的任何文件-在您的评论中,您认为这不一定是正确的。
如果有多张图纸可用,您可能需要指定图纸名称,而不是使用
ActiveSheet
。我对
SaveChanges:=True
也有点困惑--因为你没有改变源工作簿(据我所知)。这段代码查找默认文件名,如果文件夹中没有该文件名,则会打开一个提示,让用户手动选择一个文件。
检测工作表是否存在-您可以在此处找到执行此操作的函数:
Test or check if sheet exists
您可以执行类似的操作来检测ListObject是否也存在。