さまざまな XML 入力ファイルを受け取り、それぞれをワークブックの別のワークシートにインポートするマクロを作成しました。次に、ブックを保存します。これは、何百人ものユーザーに対して 98% の確率で機能しますが、ブックを保存すると、「エラー 1004: Microsoft Office Excel はファイル 'C:\SymmPiT' にアクセスできません。
XML ファイルの 1 つが大きすぎて Excel のセクション「ImportDisks:」にインポートできない場合に関連していることがわかりました。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