Microsoft Access 掲示板

クラスモジュールについて / 1

17 コメント
views
4 フォロー
1

このコードを実行すると、

どのコードですか。
Excel_Close() のことですか。
これは、クラスモジュール内に記述しているのですか。

だとしたら、ex変数はモジュールレベルで宣言する必要があります。

Option Compare Database

'プロパティ設定
Public QryName As String        '開くクエリ名の設定
Public SaveBookName As String  '保存するブック名の設定

'オブジェクト変数
Dim QryBook As Excel.Workbook
Dim ex As Excel.Application 'ここで宣言

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
    Else
        MsgBox "保存するブック名をSaveBookNameプロパティで設定してください"
    End If
    
'    Set ex = Nothing これも削除
End Sub

Public Sub Excel_Close()
    If ex Is Nothing Then Exit Sub 'これを追加 

    'excelを終了する
    ex.Quit
    
    Set QryBook = Nothing
    Set ex = Nothing
End Sub
通報 ...