excel vba中的错误-“;运行时错误';5';:无效的过程调用或参数";

excel vba中的错误-“;运行时错误';5';:无效的过程调用或参数";,excel,loops,procedure,vba,Excel,Loops,Procedure,Vba,我有一组需要计算的文件,当我运行宏时,它应该打开工作簿,应用公式并保存为指定文件夹中的文本文件,然后转到该文件夹中的下一个工作簿 我在处理第一个文件后运行宏,显示错误“运行时错误“5”:过程调用或参数无效” -strF=Dir()中出现错误 宏未在文件夹中查找第二个文件 我是vba新手,不知道问题出在哪里 请你帮忙 Sub Macro4() Dim n As Integer Dim filename As String Dim strF As String, strP As String Dim

我有一组需要计算的文件,当我运行宏时,它应该打开工作簿,应用公式并保存为指定文件夹中的文本文件,然后转到该文件夹中的下一个工作簿

我在处理第一个文件后运行宏,显示错误“运行时错误“5”:过程调用或参数无效”

-strF=Dir()中出现错误

宏未在文件夹中查找第二个文件

我是vba新手,不知道问题出在哪里

请你帮忙

Sub Macro4()
Dim n As Integer
Dim filename As String
Dim strF As String, strP As String
Dim wb As Workbook
Dim ws As Worksheet
Dim xWB As Workbook
'Edit this declaration to your folder name
strP = "D:\TEST\INPUT" 'change for the path of your folder
    Do While strF <> vbNullString
    Set wb = Workbooks.Open(strP & "\" & strF)
    ActiveSheet.Cells.Select
    Selection.Copy
    Windows("My file.xlsm").Activate
    ActiveSheet.Paste
    Columns("Y:Y").Select
    Range(Selection, Selection.End(xlDown)).Select
    Range(Selection, Selection.End(xlToRight)).Select
    Selection.ClearContents
    Range("Y1").Select
    ActiveCell.FormulaR1C1 = "HEADER"
    Range("Y2").Select
    ActiveCell.FormulaR1C1 = "HEADER"
    Range("Y3").Select
    ActiveCell.FormulaR1C1 = _
        "formula"
        With Range("Y:Y").SpecialCells(xlCellTypeBlanks)
        .FormulaR1C1 = "my formula"
          End With
          Range("y3").Select
    Range(Selection, Selection.End(xlDown)).Select
        Selection.Copy
    Workbooks.Add
    ActiveSheet.Paste
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Application.CutCopyMode = False
      n = 1
    Do
        filename = "D:\GOBI\" & "TEST FILE" & Format(IIf(n = 1, "000001", n), "000000") & ".txt"
        n = n + 1
    Loop Until Dir(filename) = ""
    ActiveWorkbook.SaveAs filename, FileFormat:= _
        xlText, CreateBackup:=False
         ActiveWorkbook.Close False
For Each xWB In Application.Workbooks
    If Not (xWB Is Application.ActiveWorkbook) Then
        xWB.Close False
    End If
Next
Application.ScreenUpdating = True
    strF = Dir()
Loop

End Sub
Sub宏4()
作为整数的Dim n
将文件名设置为字符串
调暗strF为字符串,strP为字符串
将wb设置为工作簿
将ws设置为工作表
Dim xWB作为工作簿
'将此声明编辑为您的文件夹名称
strP=“D:\TEST\INPUT”'更改文件夹的路径
当strF为空字符串时执行
设置wb=Workbooks.Open(strP&“\”&strF)
ActiveSheet.Cells.Select
选择,复制
Windows(“My file.xlsm”)。激活
活动表。粘贴
列(“Y:Y”)。选择
范围(选择,选择。结束(xlDown))。选择
范围(选择,选择。结束(xlToRight))。选择
选择.ClearContents
范围(“Y1”)。选择
ActiveCell.FormulaR1C1=“标题”
范围(“Y2”)。选择
ActiveCell.FormulaR1C1=“标题”
范围(“Y3”)。选择
ActiveCell.FormulaR1C1=_
“公式”
带范围(“Y:Y”)。特殊单元格(xlCellTypeBlanks)
.FormulaR1C1=“我的公式”
以
范围(“y3”)。选择
范围(选择,选择。结束(xlDown))。选择
选择,复制
工作手册。添加
活动表。粘贴
Selection.Paste特殊粘贴:=xlPasteValues,操作:=xlNone,SkipBlank_
:=假,转置:=假
Application.CutCopyMode=False
n=1
做
filename=“D:\GOBI\”和“测试文件”及格式(IIf(n=1,“000001”,n),“000000”)和“.txt”
n=n+1
循环直到目录(文件名)=“”
ActiveWorkbook.SaveAs文件名,文件格式:=_
xlText,CreateBackup:=False
ActiveWorkbook.Close为False
对于应用程序中的每个xWB。工作簿
如果不是(xWB是Application.active工作簿),则
xWB.关闭错误
如果结束
下一个
Application.ScreenUpdating=True
strF=Dir()
环
端接头

该代码永远不会到达该行,但是,如果它到达了该行,您将遇到问题,因为您无法嵌套类似的
Dir
语句。如果您只是粘贴实际的完整代码会更好。亲爱的@Rory,谢谢您的回复,但是相同类型的vba成功工作了…可能是相同类型的,但不是该代码。此行:
Do While strF vbNullString
将永远不会为true,因为您尚未为
strF
赋值,因此代码将直接退出。