工作簿.打开问题宏Excel

工作簿.打开问题宏Excel,excel,vba,Excel,Vba,我在使用workbooks.open进行文件搜索时遇到问题。执行宏时,它显示运行时错误“1004”。事实上,我是从YouTube上学到的。 有人知道有什么问题吗 这段代码实际上可以在我们所访问的一个文件夹中找到多个excel文件 Sub checkcopy() Dim cf As String Dim erow cf = Dir("C:\Supplier\") Do While Len(cf) > 0 MsgBox ("Check") If cf = "SummaryCheckFil

我在使用workbooks.open进行文件搜索时遇到问题。执行宏时,它显示运行时错误“1004”。事实上,我是从YouTube上学到的。 有人知道有什么问题吗

这段代码实际上可以在我们所访问的一个文件夹中找到多个excel文件

Sub checkcopy()

Dim cf As String
Dim erow

cf = Dir("C:\Supplier\")

Do While Len(cf) > 0
MsgBox ("Check")
If cf = "SummaryCheckFile.xlsm" Then
Exit Sub
End If

MsgBox ("Check 1")

Workbooks.Open (cf)
Range("A1:E1").Copy
ActiveWorkbook.Close

erow = Sheet1.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Row
ActiveSheet.Paste Destination:=Worksheets("Sheet1").Range(Cells(erow, 1), Cells(erow, 4))
checkFile = Dir

Loop

End Sub 
对不起

它的表演

找不到“go.xls”。检查文件名的拼写,并验证文件位置是否正确。
如果您试图从最近使用的文件列表中打开文件,请确保……

尝试提供
cf
的路径,例如
cf=“c:\XXX\filename.xlsm”
,而不是
cf=“filename.xlsm”

Dir()
仅返回文件名-它不包括路径,因此,在调用
Workbooks.Open()

此外,循环将永远不会退出(除非第一个文件是“SummaryCheckFile.xlsm”),因为对
Dir()
的所有其他调用都将返回值分配给
checkFile
,因此
cf
将永远不会被清除

Sub checkcopy()

    Const FLDR As String = "C:\Supplier\"
    Const EXCLUDE_FILE As String = "SummaryCheckFile.xlsm"

    Dim cf As String, c As Range, wb As Workbook

    'set the first copy destination
    Set c = Sheet1.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0)

    cf = Dir(FLDR & "*.xls*", vbNormal) 'only Excel files

    Do While Len(cf) > 0

        Debug.Print cf

        'opening this file ?
        If UCase(cf) <> UCase(EXCLUDE_FILE) Then

            Set wb = Workbooks.Open(FLDR & cf, ReadOnly:=True)
            wb.Sheets(1).Range("A1:E1").Copy c 'assumes copying from the first sheet
            Set c = c.Offset(1, 0)             'next destination row
            wb.Close False

        End If

        cf = Dir 'next file
    Loop

End Sub
子检查副本()
Const FLDR As String=“C:\Supplier\”
Const EXCLUDE_FILE As String=“SummaryCheckFile.xlsm”
将cf设置为字符串,c设置为范围,wb设置为工作簿
'设置第一个复制目标
集合c=Sheet1.单元格(Rows.Count,1).结束(xlUp).偏移(1,0)
cf=Dir(FLDR&“*.xls*”,vbNormal)“仅限Excel文件
当Len(cf)>0时执行
调试。打印cf
'打开此文件?
如果UCase(cf)UCase(排除_文件),则
设置wb=Workbooks.Open(FLDR&cf,只读:=True)
wb.图纸(1).范围(“A1:E1”)。副本c'假设从第一张图纸复制
设置c=c.Offset(1,0)的下一个目标行
wb.关闭错误
如果结束
cf=Dir'下一个文件
环
端接头

打开包含宏的xlsm时,请尝试使用参数CorruptLoad,这会导致运行时错误和无响应

Application.DisplayAlerts = False
Workbooks.Open ("enter your file path here"), CorruptLoad:=xlExtractData
Application.DisplayAlerts = True
除非你告诉我们什么是运行时错误,否则“显示运行时错误”毫无意义——你的屏幕上就有它,你绝对没有理由不把它包括在你的问题中。当你准备添加问题时,修正你的问题标题,这样它就能解释问题。一旦您删除了宏和Excel(它们都已经在您的标记中),剩下的就是工作簿打开问题,这是无用的。你的标题应该以一种有用的方式解释你遇到的具体问题或你提出的问题,当未来的用户在搜索结果中看到这些问题时,这种方式会很有用。