我希望你能提供帮助。我有一段代码看到CODE 1(我的代码完整),基本上它的作用是允许用户浏览文件夹,选择一个文件。选择后,它会根据A列中的条件(国家/地区)将工作簿分成新工作表,在国家/地区之后重命名新工作表并添加一些文本。这一切都很好。
我面临的问题是,当工作簿分成不同的工作表时。请参见图1,然后我需要将特定的国家/地区表复制并粘贴到已存储在另一个文件夹中的工作簿中。请参见图2.如果工作簿已经存在于文件夹中(在我的示例德国中),但是如果工作簿不存在(比利时),我的代码工作正常我需要代码为该国家/地区创建新工作簿然后粘贴数据进入新工作簿。
因此,在图2中,您可以看到德语存在于文件夹H:\TOV Storage Folder
中
复制和粘贴代码见CODE 2工作正常
CODE 2
If s.Name = "DE_ITOV_MTNG_ATNDEE.xlsx" Then
s.Activate
ActiveSheet.Range("A1", ActiveCell.SpecialCells(xlLastCell)).Copy
Set y = Workbooks.Open("H:\TOV Storage Folder\Germany.xlsx")
y.Sheets(2).Name = "DE_ITOV_MTNG_ATNDEE"
y.Sheets("DE_ITOV_MTNG_ATNDEE").Range("A1").PasteSpecial Paste:=xlPasteFormulas
y.SaveAs "H:\TOV Storage Folder\Germany.xlsx"
y.Close
但是比利时在H:\TOV Storage Folder
文件夹中不存在,因此CODE 3会在H:\TOV Storage Folder
中找不到比利时并且宏停止
CODE 3
ElseIf s.Name = "BE_ITOV_MTNG_ATNDEE.xlsx" Then
s.Activate
ActiveSheet.Range("A1", ActiveCell.SpecialCells(xlLastCell)).Copy
Set y_1 = Workbooks.Open("H:\TOV Storage Folder\Belgium.xlsx")
y_1.Sheets(2).Name = "BE_ITOV_MTNG_ATNDEE"
y_1.Sheets("BE_ITOV_MTNG_ATNDEE").Range("A1").PasteSpecial Paste:=xlPasteFormulas
y_1.SaveAs "H:\TOV Storage Folder\Belgium.xlsx"
y_1.Close
基本上我需要做的是让工作簿拆分到其国家/地区工作表,然后让宏开始在工作表中移动,如果它找到一个国家/地区工作簿在H:\TOV Storage Folder
中存在,然后执行复制和粘贴,如果它在拆分工作簿中找到了H:\TOV Storage Folder
中没有相应国家/地区的工作表,则创建一个并执行粘贴并移动到拆分工作簿中的下一个国家/地区工作表并重复该过程。
以一种非常简单的方式我需要宏来
搜索分割页并转到“啊我找到了法国FR_ITOV_MTNG_ATNDEE.xlsx,你有H:\TOV Storage Folder
工作簿复制,粘贴,下一页,啊我发现拉脱维亚LV_ITOV_MTNG_ATNDEE.xlsx你没有工作簿{{ 1}}为拉脱维亚创建工作簿,复制,粘贴等等。
我很抱歉,如果我的问题冗长,我只想让我的问题透明化。
我的代码可以修改以解决我的问题吗?
一如既往,任何和所有的帮助都非常感激。
代码1
H:\TOV Storage Folder
答案 0 :(得分:1)
在尝试打开工作簿之前,您可以使用以下函数检查文件是否存在。如果它没有创建工作簿,否则打开现有工作簿
Public Function DoesFileExist(ByVal sFile)
Dim oFSO As New FileSystemObject
If oFSO.FileExists(sFile) Then
DoesFileExist = True
Else
DoesFileExist = False
End If
End Function
您需要为上述功能添加`Microsoft Scription Runtime' 参考