VBA循环以累积数据

时间:2016-08-18 03:58:31

标签: excel-vba vba excel

我有一个每天/每周都会得到的文件。首先我测试文件是否在目录中可用,如果不是,那么我转到“ 数据跟踪器 ”并使范围B2的值“缺少< / em>“在那张表中。我正在接受

  

运行时错误1004

在该部分。请帮忙。

如果该文件可用,那么我需要复制打开工作簿的 B2 ,如果列A已经有,我需要将其粘贴到我的宏书 A列中然后它将粘贴到我的宏书的A列中的下一个可用/空单元格/行中。该部分也可能是错误的,希望专家可以提供帮助。

Application.AskToUpdateLinks = False
Application.ScreenUpdating = False

Dim FilePath As String
Dim TestStr As String

Dim WBA As Workbook 'Opened Workbook


FilePath = "C:\Users\anthonyer\Documents\Automation VBA\Source\Comcast Secondary"

TestStr = ""
On Error Resume Next
TestStr = Dir(FilePath)
On Error GoTo 0

If TestStr = "" Then     
    Workbooks("FullAuto Final.xlsm").Activate
    Worksheets("Data Tracker").Range("B2").Select
    Selection.Value = "Missing"
Else
    Workbooks.Open "C:\Users\anthonyer\Documents\Automation VBA\Source\Comcast Secondary"

    Set WBA = ActiveWorkbook        
    WBA.Application.CutCopyMode = False

    'Select and Copy Site Name
    WBA.Sheets(1).Range("B2").Select
    Range(Selection, Selection.End(xlDown)).Select

    Selection.Copy Destination:=ThisWorkbook.Worksheets(1).Range("A:A" & Cells(Rows.Count, "A:A").End(xlUp).Row)

    WBA.Close SaveChanges:=False
    ThisWorkbook.Activate
    Worksheets("Data Tracker").Range("A2").Value = "Complete"

End If

Application.AskToUpdateLinks = True
Application.ScreenUpdating = True

End Sub

2 个答案:

答案 0 :(得分:1)

尝试以下编辑过的代码:

getItemId' of type

答案 1 :(得分:0)

FilePath = "C:\Users\anthonyer\Documents\Automation VBA\Source\Comcast Secondary"

TestStr = ""
On Error Resume Next
TestStr = Dir(FilePath)
On Error GoTo 0

此错误句柄的工作方式如下:如果TestStr = Dir(FilePath)出错,请忽略它并继续执行代码。 正确的错误处理工作如下:

FilePath = "C:\Users\anthonyer\Documents\Automation VBA\Source\Comcast Secondary"

TestStr = ""
On Error GoTo ErrHandler
TestStr = Dir(FilePath)
On Error GoTo 0

'Code if no Error occurs
Exit Sub

ErrHandler:
'Code if Error occurs.
Resume Next 'if you want to return to the code
End Sub

但是测试错误处理程序是否存在错误是相当丑陋的。您可以使用FileSystemObject库来测试该文件。为此,您需要先激活它。转到工具 - &gt;参考并检查Microsoft Scripting Runtime。

检查文件。这个库中有一个简洁的方法:

Dim fsoFile as Scripting.FileSystemObject

Set fsoFile = New Scripting.FileSystemObject 'Instancing

If Not fsoFile.FileExists("C:\Users\anthonyer\Documents\Automation VBA\Source\Comcast Secondary") Then

现在,您的运行时错误最常由Worksheets(“Data Tracker”)生成,因为Sheet名称中不能有任何空格。此外,在VBA中,从不需要选择单元格。继续这样:

Workbooks("FullAuto Final.xlsm").Worksheets("DataTracker").Range("B2").Value = "Missing"

Else
'Do other stuff if the file exists
End if
End sub