下面是一个选项。
- 检查用户桌面上是否存在Book1文件夹(无论操作系统路径如何)
- 该代码创建一个单张空白工作簿,然后将其保存在此目录中作为要创建的新文件的模板
- 效率
FileCopy
是用来制作新版本的,而不是反复创建、保存和关闭一个新的workook
- 空值被跳过
- 该代码使用变量数组来快速处理值
如果您的数据格式不同,可能需要进行一些进一步的小调整。例如,测试不能在文件名中使用的字符。
代码
Sub NB()
Dim X
Dim lngCnt As Long
Dim strDT As String
Dim strNewBook As String
Dim objWS As Object
Dim WB As Workbook
Dim bNewBook As Boolean
Set objWS = CreateObject("WScript.Shell")
strDT = objWS.SpecialFolders("Desktop") & "\Book1"
If Len(Dir(strDT, vbDirectory)) = 0 Then
MsgBox "No such directory", vbCritical
Exit Sub
End If
X = Range([a1], Cells(Rows.Count, "A").End(xlUp)).Value2
For lngCnt = 1 To UBound(X, 1)
If Len(X(lngCnt, 1)) > 0 Then
If Not bNewBook Then
'make a single sheet workbook for first value
Set WB = Workbooks.Add(1)
WB.SaveAs strDT & "\" & X(lngCnt, 1) & ".xls"
strNewBook = WB.FullName
WB.Close
bNewBook = True
Else
FileCopy strNewBook, strDT & "\" & X(lngCnt, 1) & ".xls"
End If
End If
Next
End Sub