Vba VB宏-运行时错误';13';为每个循环启用
我知道可能会有这样的问题。但是我真的不熟悉VB,所以我需要帮助。以下是代码的一部分:Vba VB宏-运行时错误';13';为每个循环启用,vba,excel,Vba,Excel,我知道可能会有这样的问题。但是我真的不熟悉VB,所以我需要帮助。以下是代码的一部分: Sub Convert_to_Digi() Dim SrcWkb As Workbook Dim csvWkb As Workbook Dim srcSheet As Worksheet Dim StartRow As Long Dim wkbname As Variant Dim xlsFiles As Variant Dim MyRange
Sub Convert_to_Digi()
Dim SrcWkb As Workbook
Dim csvWkb As Workbook
Dim srcSheet As Worksheet
Dim StartRow As Long
Dim wkbname As Variant
Dim xlsFiles As Variant
Dim MyRange As Range
Dim NewName As Variant
Dim csvName As String
StartRow = 2
' Get the workbooks to open
xlsFiles = Application.GetOpenFilename(FileFilter:="Excel files (*.xls), *.xls", MultiSelect:=True)
If VarType(xlsFiles) = vbBoolean Then Exit Sub
' Loop through each workbook and copy the data to this CSV
For Each wkbname In xlsFiles
Set SrcWkb = Workbooks.Open(Filename:=wkbname, ReadOnly:=False)
Set srcSheet = SrcWkb.Worksheets("export_label_conf")
' Get used range on sheet
Set MyRange = srcSheet.UsedRange
' Adjust to exclude top row
Set MyRange = MyRange.Offset(1, 0).Resize(MyRange.Rows.Count - 1)
NewName = srcSheet.Cells(2, 10) & ".csv"
If MyRange.Row + MyRange.Rows.Count - 1 >= StartRow Then
Set csvWkb = Workbooks.Open(Filename:="C:\DIGITAL\template.csv", ReadOnly:=False)
' copy column A
MyRange.Columns(1).Copy
' paste into CSV template file, column I
csvWkb.ActiveSheet.Cells(2, 9).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
' and save template as new CSV with barcode as name
csvName = "C:\DIGITAL\" & NewName
csvWkb.SaveAs Filename:=csvName, FileFormat:=xlCSV, CreateBackup:=False
End If
SrcWkb.Close
Next wkbname
End Sub
对于xlsFiles行中的每个wkbname,我在上都会遇到此错误。wkbname为空,而xlsFiles包含要打开的文件名(但只有1个,而它应该只有少量…)
就在不久前,它还工作得很好!我尽我所能撤销了我所做的一切,但没有解决问题……我建议您按以下步骤操作:
- 试着编译你的代码。听起来很假,但可能会在其他地方指出一个可能会影响这段代码的问题
- 更改变量名。如果Excel因任何原因出现问题(变体混淆),则可以解决该问题
- 检查项目的参考资料。如果缺少引用,VBA将无法正常工作
开始使用版本控制系统(Git、Mercurial、Bazaar、SVN等),您将永远不会再遇到“而且就在不久前它还可以正常工作”这种形式的问题。运行时错误13是一种类型不匹配,我想您的其余代码在哪里?对于每个循环,它似乎在
结束之前被切断。我每年只写一次宏。。我没有机会在工作时在电脑上安装任何程序。。。感谢您的理解我运行了这个(根据需要更改路径),并且在Excel2007中运行良好[状态norepro]
Public Sub OpenExcelFiles()
Dim vFiles As Variant
Dim vFile As Variant
Dim oXLFile As Excel.Workbooks
vFiles = Application.GetOpenFilename(FileFilter:="Excel files (*.xls), *.xls", MultiSelect:=True)
If VarType(xlsFiles) = vbBoolean Then Exit Sub
For Each vFile In vFiles
Set oXLFile = Workbooks.Open(vFile)
Next vFile
End Sub