XML数据导入后Excel 2003 VBA错误1004

时间:2009-11-23 13:37:41

标签: xml excel excel-vba excel-2003 vba

我构建了一个宏,它接受不同的XML输入文件,并将每个文件导入工作簿中的不同工作表。然后它保存工作簿。 98%的用户在数百名用户中使用这种方法,但有时在使用“错误1004:Microsoft Office Excel无法访问文件'C:\ SymmPiT'保存工作簿时失败。

我发现它与其中一个XML文件太大而无法在“ImportDisks:”部分中导入Excel有关。尝试手动将SYMDISK.XML文件导入空白工作簿(使用“数据 - 导入 - XML”)会导致Excel错误“XML导入错误:某些数据无法导入”。

我正在尝试让Excel VBA忽略此XML导入错误。这在该阶段的宏中工作,但在代码中进一步保存工作簿时会失败(标记为红色)。

即使出现导入错误,如何在保存文件时避免Excel“barfing”?或者可以在导入之前以某种方式检查XML文件,以便我可以避免尝试导入?

代码异常如下,非常感谢您的回复! : - )

Sub ImportData()
On Error GoTo SPErrorHandler    
Application.DisplayAlerts = False
Sheets("SymmPiT").Select
Range("F15").Select

Dim SaveName As String
Dim Section As Integer

ImportDisks:
Section = 7
On Error GoTo ImportLocks
Sheets.Add.Name = "Disks"
Application.ScreenUpdating = False

Range("A2").Select
    ActiveCell.FormulaR1C1 = "from symdisk list -v"
If (Dir("C:\SymmPiT\SYMDISK.XML") > "") Then
    ActiveWorkbook.XmlImport URL:="C:\SymmPiT\SYMDISK.XML", ImportMap:=Nothing,  overwrite:=True, Destination:=Range("$A$4")
    ActiveWorkbook.XmlMaps("SymCLI_ML_Map").Delete
    Set Contents = Worksheets("Disks").Range("A5")
    If Contents.Text = "" Then
        MsgBox "Information" & vbNewLine & vbNewLine & "Disks data file has not imported, too many rows of data for Excel 2003"
    End If
Else
    Range("A4").Select
    ActiveCell.FormulaR1C1 = "No Disk Data file SYMDISK.XML found"
End If
Range("A2").Select

Application.ScreenUpdating = True

ImportLocks:
‘ Code continues here, removed from this post….
Application.ScreenUpdating = True

SaveAsExcelFile:
' SaveAsExcelFile
Section = 43
On Error GoTo SPErrorHandler

SaveName = Worksheets("SymmPiT").Range("F19").Text
' Clear any outstanding error
Err.Clear
' Save output file
ActiveWorkbook.SaveAs Filename:="C:\SymmPiT\" & SaveName & ".xls"
Range("F15").Select

0 个答案:

没有答案