Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 突然出现运行时错误1004-找不到文件_Vba_Excel - Fatal编程技术网

Vba 突然出现运行时错误1004-找不到文件

Vba 突然出现运行时错误1004-找不到文件,vba,excel,Vba,Excel,试图找出为什么这个代码突然中断。我试图让它在指定的文件夹中循环,打开工作簿,剪切一些数据,粘贴它,保存工作簿,关闭工作簿。然后移动到指定文件夹中的下一个文件 它工作得很好,然后突然我得到运行时错误1004,它说文件不在那里。奇怪的是,代码从未命名实际的文件,因为它是通过倍数循环的,但它知道文件的名称。我尝试用新名称重新保存该文件,它发现该名称是新的!但还是打不开 我在下面列出了有问题的代码。任何想法都将不胜感激!这是一个正在进行的工作,因此所有的评论 Sub ImportSiteData()

试图找出为什么这个代码突然中断。我试图让它在指定的文件夹中循环,打开工作簿,剪切一些数据,粘贴它,保存工作簿,关闭工作簿。然后移动到指定文件夹中的下一个文件

它工作得很好,然后突然我得到运行时错误1004,它说文件不在那里。奇怪的是,代码从未命名实际的文件,因为它是通过倍数循环的,但它知道文件的名称。我尝试用新名称重新保存该文件,它发现该名称是新的!但还是打不开

我在下面列出了有问题的代码。任何想法都将不胜感激!这是一个正在进行的工作,因此所有的评论

Sub ImportSiteData()

Dim MyFile As String
Dim eRowMaster 'final row to paste to
Dim eRowArchive 'final row to paste to archive

MyFile = Dir("C:\Users\belindaastley\Desktop\Influenza\") 'change directory based on where this will live

Do Until Len(MyFile) < 0
    If MyFile = "zDoom.xlsm" Then 'change the zdoom to whatever we are calling the master workbook
        MsgBox ("Importing has been completed.")
        Exit Sub
    End If

    Workbooks.Open (MyFile)
    Worksheets("Data").Select
    Dim xrow
    xrow = 2
    Dim LastCutRow As Long
    LastCutRow = Cells(Rows.Count, 1).End(xlUp).Row
    Do Until xrow = LastCutRow + 1
        Worksheets("Data").Select

        ActiveSheet.Cells(xrow, 1).Select
        If Not isblank Then
            ActiveCell.EntireRow.Cut
            Worksheets("Archive").Select
            ActiveSheet.Range("LastRow").Select
            ActiveSheet.Paste

            'Workbooks("zDoom.xlsm").Activate
            'Worksheets("Data").Select
            'ActiveSheet.Range("LastRow").Select

            'ActiveSheet.PasteSpecial
            'Application.CutCopyMode = False

            'need to copy to empty row in zdoom
        End If
        xrow = xrow + 1
    Loop
    '1. select first row of data
    '2. cut row of data
    '3. paste row of data to archived sheet at last row
    '4. switch to master
    '5. paste row of data to data sheet at last row
    '6. save site spreadsheet
    '7. close site spreadsheet
    '8.
    '

    ActiveWorkbook.Save
    ActiveWorkbook.Close

    'eRowMaster = Worksheets("Data").Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Row
    'ActiveSheet.Paste Destination:=Worksheets("Data").Range(Cells(eRowMaster, 1), Cells(eRowMaster, 26))
    'need to change cells reference based on what the actual data is going to look like.  may need to be extended

    MyFile = Dir

Loop

'run from the main workbook
'needs to open each site workbook within the reporting folder
'needs to copy the new data, paste into data table in main workbook
'mark each imported data line in the site workbook as imported
'save site workbook
'close site workbook
'move on to the next workbook
'save main workbook

End Sub
子导入站点数据()
将MyFile设置为字符串
调暗要粘贴到的eRowMaster最后一行
Dim eRowArchive要粘贴到存档的最后一行
MyFile=Dir(“C:\Users\belindaastley\Desktop\流感\”)根据其所在位置更改目录
直到Len(MyFile)<0为止
如果MyFile=“zDoom.xlsm”,则“将zDoom更改为我们所称的主工作簿
MsgBox(“导入已完成。”)
出口接头
如果结束
工作簿。打开(MyFile)
工作表(“数据”)。选择
昏暗的X街
xrow=2
暗淡的最后一排一样长
LastCutRow=单元格(Rows.Count,1).End(xlUp).Row
直到xrow=LastCutRow+1为止
工作表(“数据”)。选择
ActiveSheet.Cells(xrow,1)。选择
如果不是,则为空
ActiveCell.EntireRow.Cut
工作表(“存档”)。选择
ActiveSheet.Range(“LastRow”)。选择
活动表。粘贴
'工作簿(“zDoom.xlsm”)。激活
'工作表(“数据”)。选择
'ActiveSheet.Range(“LastRow”)。选择
'ActiveSheet.PasteSpecial
'Application.CutCopyMode=False
'需要复制到zdoom中的空行
如果结束
xrow=xrow+1
环
'1.选择第一行数据
'2.剪切数据行
'3.将数据行粘贴到最后一行的存档工作表
'4.切换到master
“5.将数据行粘贴到最后一行的数据表中
“6.保存站点电子表格
“7.关闭站点电子表格
'8.
'
活动工作簿。保存
活动工作簿。关闭
'eRowMaster=工作表(“数据”)。单元格(Rows.Count,1)。结束(xlUp)。偏移量(1,0)。行
'ActiveSheet.Paste Destination:=工作表(“数据”).范围(单元格(eRoom Master,1),单元格(eRoom Master,26))
“需要根据实际数据的外观更改单元格引用。可能需要延长
MyFile=Dir
环
'从主工作簿运行
'需要打开报表文件夹中的每个站点工作簿
'需要复制新数据,粘贴到主工作簿的数据表中
'将站点工作簿中的每个导入数据行标记为已导入
'保存站点工作簿
'关闭网站工作簿
'转到下一个工作簿
'保存主工作簿
端接头

检查保存工作簿的文件夹中是否有任何不带扩展名的文件。不确定,但Excel可能会尝试使用默认扩展名打开。哪一行引发错误?工作簿是否只包含Excel可以用
工作簿打开的文件。open
?什么是“如果不是空的话”?此外,您的行“Workbooks.open(MyFile)”将不包括文件路径。您正在使用
工作簿打开的文件中是否有
工作表(“数据”)
?那么
工作表(“归档”)
呢?那张表在哪个Excel文件中?你所说的
是什么意思?如果不是空的,那么
?包含
的单元格或包含
0
的单元格或包含
Len(.Formula)>0
任何内容的单元格是否为空?请检查保存工作簿的文件夹中是否有任何不带扩展名的文件。不确定,但Excel可能会尝试使用默认扩展名打开。哪一行引发错误?工作簿是否只包含Excel可以用
工作簿打开的文件。open
?什么是“如果不是空的话”?此外,您的行“Workbooks.open(MyFile)”将不包括文件路径。您正在使用
工作簿打开的文件中是否有
工作表(“数据”)
?那么
工作表(“归档”)
呢?那张表在哪个Excel文件中?你所说的
是什么意思?如果不是空的,那么
?空白是包含
的单元格
还是包含
0
的单元格,还是包含
Len(.Formula)>0
的任何内容的单元格?