如果找不到文件,则VBA会创建并粘贴数据

时间:2017-07-31 08:48:51

标签: excel vba excel-vba copy-paste

我希望你能提供帮助。我有一段代码看到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

图1 enter image description here

图2 enter image description here

1 个答案:

答案 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' 参考