VBA-基于文件名创建新图纸的错误处理

VBA-基于文件名创建新图纸的错误处理,vba,excel,error-handling,Vba,Excel,Error Handling,我获得了下面的代码,可以根据文件夹中的文件创建和命名工作表: 链接: 下面是第二个问题的一些代码: For i = LBound(Filenames) To UBound(Filenames) Do While Filenames <> "test.xlsx" With x.Worksheets.Add .Name = Left(Filenames(i), Len(Filenames(i)) - 5)

我获得了下面的代码,可以根据文件夹中的文件创建和命名工作表:

链接:

下面是第二个问题的一些代码:

For i = LBound(Filenames) To UBound(Filenames)

        Do While Filenames <> "test.xlsx"

            With x.Worksheets.Add
            .Name = Left(Filenames(i), Len(Filenames(i)) - 5)
        Loop

    End With

    Next i
i=LBound(文件名)到UBound(文件名)的

文件名为“test.xlsx”时执行此操作
使用x.Worksheets.Add
.Name=Left(文件名(i),Len(文件名(i))-5)
环
以
接下来我
使用
Do While
If Else
语句,我不断得到错误:

不停地循环

如果没有阻止,则结束

否则没有如果

我也在以下2个链接上发布了这个问题:


我想你在寻找下面的代码:

Option Explicit

Sub test()

Dim strFilename As String
Dim strPath As String
Dim WB As Workbook

Set WB = ThisWorkbook ' define which workbook you want to add the sheets
strPath = "D:\myPath\"
strFilename = Dir(strPath & "*.xlsx")

Do Until strFilename = ""
    strFilename = Split(strFilename, ".")(0)

    ' check is strFilename already exists in existing sheets

    If sheetExists(strFilename) = False Then ' doesn't exist
        WB.Sheets.Add(After:=WB.Sheets(WB.Sheets.Count)).Name = strFilename
    Else
        ' just raise a message box
        MsgBox "Worksheet " & strFilename & " already exists.", vbInformation
    End If
    strFilename = Dir
Loop

End Sub 


你有
Do-While
With
但是你正在关闭
Loop
End-With
,它需要
End-With
然后
Loop
而不是
Do-While-Filenames“test.xlsx”
你应该使用
if
if语句
if-Filenames(i)“test.xlsx”然后
然后使用块执行你的
,然后
结束如果
你好,佩赫,是的,这确实有效谢谢!这太棒了!谢谢你@Shai Rado
For i = LBound(Filenames) To UBound(Filenames)

        Do While Filenames <> "test.xlsx"

            With x.Worksheets.Add
            .Name = Left(Filenames(i), Len(Filenames(i)) - 5)
        Loop

    End With

    Next i
Option Explicit

Sub test()

Dim strFilename As String
Dim strPath As String
Dim WB As Workbook

Set WB = ThisWorkbook ' define which workbook you want to add the sheets
strPath = "D:\myPath\"
strFilename = Dir(strPath & "*.xlsx")

Do Until strFilename = ""
    strFilename = Split(strFilename, ".")(0)

    ' check is strFilename already exists in existing sheets

    If sheetExists(strFilename) = False Then ' doesn't exist
        WB.Sheets.Add(After:=WB.Sheets(WB.Sheets.Count)).Name = strFilename
    Else
        ' just raise a message box
        MsgBox "Worksheet " & strFilename & " already exists.", vbInformation
    End If
    strFilename = Dir
Loop

End Sub 
Function sheetExists(sheetToFind As String) As Boolean

    sheetExists = False
    For Each Sheet In Worksheets
        If sheetToFind = Sheet.Name Then
            sheetExists = True
            Exit Function
        End If
    Next Sheet

End Function