###動作環境
Windows 10 Pro(1903)
ACCESS(Office 365(2002))
###現象
ACCESS のフォームをハードコピー印刷するVBAが特定のPCのみうまく動作しません。
→下記コードを実行すると、印刷実行の代わりにファイル保存ダイアログが表示されます。
VBA
1' 画面印刷ボタンクリック時 2Private Sub cmd印刷_Click() 3 4 Call subGetHardCopy 5 6End Sub 7 8Public Sub subGetHardCopy() 9 10 'アクティブウィンドウのみキャプチャ 11 Call keybd_event(VK_SNAPSHOT, 1, 0, 0) 12 13 'Excelを使って印刷 14 Dim oleExcel As Object 15 16 Set oleExcel = Nothing 17 Set oleExcel = CreateObject("Excel.Application") 18 19 oleExcel.ScreenUpdating = False 20 oleExcel.Workbooks.Add 21 oleExcel.ActiveSheet.Range("A1") = "出力日時:" & CStr(Now()) 'A1セルに出力日時を記入 22 oleExcel.ActiveSheet.Range("A2").Activate 'A2セルに移動し、キャプチャを貼りつける 23 oleExcel.ActiveSheet.Paste 24 With oleExcel.ActiveSheet.PageSetup 25 '横向きに印刷するように設定 26 .Orientation = xlLandscape 27 '1ページ(縦1x横1)に収まるように印刷範囲を設定 28 .Zoom = False 29 .FitToPagesWide = 1 30 .FitToPagesTall = 1 31 End With 32 oleExcel.ScreenUpdating = True 33 34 oleExcel.ActiveWindow.SelectedSheets.PrintOut ActivePrinter:=Excel.Application.ActivePrinter '即時印刷(アクティブプリンタを使用) 35 '↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑ 36 oleExcel.ActiveWorkbook.Close savechanges:=False 'ここで開いたブックを、保存せずに閉じる 37 38 Set oleExcel = Nothing 39 40End Sub
問題のPCで、oleExcel.ActiveWindow.SelectedSheets.PrintOut ActivePrinterに代入している
Excel.Application.ActivePrinter をフォーカスすると「オブジェクト変数または With ブロック変数が設定されていません。」
と表示されます。
→正しく印刷されるPCでは「プリンタ名 on NeXX:」という値が表示されます。
###試してみたこと
当初印刷失敗するPCの通常使用するプリンターが「Microsoft Print to PDF」であった為、実際に印刷するプリンタ
に変更したのですが、それでも印刷が失敗します。(設定変更後、ACCESSの再起動は行いましたが、PC再起動は未実施です)
→変更したプリンタは印刷が正常終了するPCと同じプリンタです。メモ帳のテキストなどは問題なく印刷できます。
また、Excel.Application.ActivePrinterの部分を"プリンタ名 on NeXX:"に直書き変更すると正常に印刷されました。
原因についてアドバイス頂きたく、よろしくお願い致します。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/10/05 06:16
2020/10/06 01:52