Windows 10でMS Access 2013内で作業していますが、ディスク上にExcelファイルを開き、列の書式設定や一部の列を変更するSubを作成しようとしています保存して終了します。 Subは実行されますが、問題は、.Quitコマンドの後でも "EXCEL.EXE"が実行され続け、そのSubへの後続の呼び出しによって実行時エラーが発生するという問題です。 サブを実行した後にAccessを閉じると、タスクマネージャで「EXCEL.EXE」が消えますが、データベースを「圧縮して修復する」場合は表示されません。Excel.Applicationオブジェクト.Quitを実行するとEXCEL.EXEが実行される
私は、単にディスク上にExcelファイルを開き、すべての列の幅を「自動幅」に変更した後、正常に動作し、「EXCEL.EXE」を実行しないで。
私は間違っていますか? VBAで「EXCEL.EXE」が正しく終了することを確認することは可能ですか?
DimsとNothing、Workbook Closesなどのさまざまな行順序を試しました。また、これを解決する方法についてはここや他のサイトで検索しましたが、2時間後には私が見た唯一の提案VBAはThisWorkbook.Saved = Trueのようなものを使用していますが、その前後で試してみました。効果を止めてください。 これ以外にも、私はVB.NETや他の環境のためのソリューションしか見つけられません。
お読みいただきありがとうございます。
コードは、次のとおりです。
Sub changeXLcolumnFormatting()
Dim XL As Object
Set XL = CreateObject("Excel.Application")
XL.Visible = False
XL.DisplayAlerts = False
XL.Workbooks.Open "C:\Users\640344\Desktop\rawDataTest.XLSX"
Dim sht As Worksheet
With XL
Set sht = ActiveWorkbook.Worksheets(1)
Dim rng As Range
Dim i As Integer, j As Integer
field_names = Split("datasistema|Data de Registo|Data Registo CMVM", "|")
sht.Select
end_of_table = sht.UsedRange.Columns.Count
For j = 0 To UBound(field_names)
For i = 1 To end_of_table
Set rng = sht.Cells(1, i)
If InStr(rng.Text, field_names(j)) > 0 Then
sht.Columns(i).NumberFormat = "yyyy-mm-dd HH:MM:ss"
End If
Next i
Next j
End With
Set rng = Nothing
Set sht = Nothing
XL.ActiveWorkbook.Close (True)
XL.Quit
Set XL = Nothing
End Sub
あなたがマクロを起動する前に、あなたが他の 'Excel'を持っていないことを確認していますランニング? – Vityata
'XL.Quit'の代わりに' Application.Quit'を追加すれば、どのように動作するかを見ることができます。 – Vityata
また、変更したワークブックを明示的に保存してから保存してください。 –