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