hatena
hatena
2021/12/14 (火) 11:08:23
ToExcelでなぜエラーが出るかを解説(コメント)しておきますと。
Public Sub ToExcel()
Dim ex As Excel.Application
Set ex = CreateObject("excel.Application")
ex.Visible = True
'↑ここでエクセルアプリケーションが新規に開く
'ただし、ブックは開いてないので空っぽの状態。
DoCmd.OpenQuery QryName, , acReadOnly
DoCmd.RunCommand acCmdOutputToExcel
'↑エクセルへクエリデータを出力するが、上で開いているエクセルではなく
'別に新規のエクセルを開いてそこに出力する。
DoCmd.RunCommand acCmdClose
If SaveBookName <> "" Then
ex.ActiveWorkbook.SaveAs SaveBookName
'exは最初に開いた空っぽのエクセルで、ブック自体存在しないので、エラーになる
Else
MsgBox "保存するブック名をSaveBookNameプロパティで設定してください"
End If
Set ex = Nothing
End Sub
対処法としては、CreateObjectで新規エクセルを開くのではなく、
GetObjectで開いているエクセルを取得して操作することになると思います。
前にも言いましたが、DoCmd.TransferSpreadsheetメソッドで1行でできることをわさわざクラスモジュールですることはないし、上記のような間違いもあるし、古い記事なので、クラスモジュールの学習サンプルとしては適切ではないです。
通報 ...