VBAで印刷の成功判定
- Excel2003でVBAを使い、印刷の成功判定を行いたい。実行エラーが発生してしまうため、原因を知りたい。
- 印刷する処理で実行エラーが発生し、印刷の成功判定ができない。Excel2003でVBAを使用している。
- VBAを使ってExcel2003で印刷の成功判定を行いたいが、実行エラーが発生してしまう。原因を教えてほしい。
- ベストアンサー
VBAで印刷の成功判定
Excel2003でVBAをくんでいます。 印刷の成功判定を行いたくて、以下のFunctionをくみました。(印刷失敗時にFalseを返したい)しかし、印刷する処理で、実行エラーが発生してしまいます。 原因がわかりません。どなたかお教えください。よろしくお願いします。 '決裁処理用自動印刷機能 印刷処理の成功失敗を知りたい Function PrintAuto() PrintAuto = True '通常使うプリンタで印刷 Arrayに複数シート設定 Sheets(Array(SHEET_DETAIL1, SHEET_DETAIL2, SHEET_DETAIL3)).Select Sheets("ほげほげ").Activate ↓ここでコンパイルエラー発生(Functionまたは変数が必要です) PrintAuto = ActiveWindow.SelectedSheets.PrintOut(Copies:=1, Collate:=True) Sheets(SHEET_DETAIL1).Select Sheets(SHEET_DETAIL1).Activate End Function
- PINK_EGG
- お礼率40% (29/72)
- Visual Basic
- 回答数1
- ありがとう数1
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
>PrintAuto = ActiveWindow.SelectedSheets・・・ もともと戻り値の無いものなので、どのようにしてもプリンター(印刷処理)からのステータスを受取る事は出来ません。 なので「印刷処理の成功失敗を知りたい」という希望をかなえる事は出来ません。 正確な結果を受取るには、APIでプリンタードライバーの結果を受取るしか無いようです。(Win32API などを使って行うしか無いでしょう。) http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=28234&forum=7
関連するQ&A
- エクセルVBA実行後にファイルを自動で閉じるVBA
Sub 印刷() ' ' Macro1 Macro ' マクロ記録日 : 201X/X/X ユーザー名 : AAAA ' ' If MsgBox("実行する場合はOK、間違ってこのボタンをクリックした場合はキャンセルをクリックしてください。(日付確認後、印刷のこと。)", vbOKCancel) = vbCancel Then End End If 'A印刷 ChDir "L:\フォルダB\X\新規" Workbooks.Open Filename:="L:\フォルダB\X\新規\記録表\工程分析.xls" Sheets("毎日印刷").Select ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True Sheets("月曜日印刷").Select ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True Sheets("火曜日印刷").Select ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True Sheets("水曜日印刷").Select ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True Sheets("木曜日印刷").Select ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True Sheets("金曜日印刷").Select ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True Sheets("土曜日印刷").Select ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True Sheets("日曜日印刷").Select ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True ActiveWorkbook.Save ActiveWindow.Close あるエクセルファイルのボタンに上記のVBAが記入されています。 そのボタンを押すと「工程分析.xls」ファイルを呼び出し各シートを自動印刷して保存して閉じるVBAです。 質問ですがボタンの配置されたあるエクセルファイルの上記VBAの処理を全て完了した後に上書き保存を自動で実行し、自動であるエクセルファイルを閉じるVBAはどの様に追加すれば良いでしょうか?
- ベストアンサー
- Excel(エクセル)
- 指定する曜日の時に特定のエクセルファイルを印刷
Sub 印刷() ' ' Macro1 Macro ' マクロ記録日 : 201X/X/X ユーザー名 : AAAA ' ' If MsgBox("実行する場合はOK、間違ってこのボタンをクリックした場合はキャンセルをクリックしてください。(日付確認後、印刷のこと。)", vbOKCancel) = vbCancel Then End End If 'A印刷 ChDir "L:\フォルダB\X\新規" Workbooks.Open Filename:="L:\フォルダB\X\新規\記録表\工程分析.xls" Sheets("毎日印刷").Select ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True Sheets("月曜日印刷").Select ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True Sheets("火曜日印刷").Select ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True Sheets("水曜日印刷").Select ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True Sheets("木曜日印刷").Select ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True Sheets("金曜日印刷").Select ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True Sheets("土曜日印刷").Select ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True Sheets("日曜日印刷").Select ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True ActiveWorkbook.Save ActiveWindow.Close あるエクセルファイルのボタンに上記のVBAが記入されています。 そのボタンを押すと「工程分析.xls」ファイルの各シートを自動印刷して保存するVBAです。 ボタンが設置されているシートのK1には「TODAY()」の式が入っています。これは当日の日付を自動で表記する様になっています。 質問ですがボタンを押すと毎日印刷シート+K1に記入されている日付の曜日のシートのみを印刷するVBAはどの様にすれば良いでしょうか? 例えば今日(2016年9月10日)で言うと土曜日なのでボタンを押すと工程分析.xlsファイルの毎日印刷シート+土曜日印刷のみ出力されると言う事です。 明日(2016年9月11日)は日曜日なのでボタンを押すと工程分析.xlsファイルの毎日印刷シート+日曜日印刷シートのみが出力される形です。 よろしくお願いします。
- ベストアンサー
- Excel(エクセル)
- ワークシート上で印刷設定をしたい。
印刷の設定をワークシート上で行うようにしたいのですが、 やり方を教えてください。 下の場合、 [シート]Sheet1、Sheet2 [枚数]2 ですが、ワークシートに例えば B2から下(つまりB3、B4・・・)にシート名、 A2から下(つまりA3・A4・・・)に「印刷」とあれば、B列のシート名のを 印刷対象にする。 C2から下(つまりC3、C4・・・)にそれぞれのシートの枚数を指定して 下記のようなコードにして印刷するようにしたいと思っています。 下の場合Array("Sheet1", "Sheet3")となっていますが、場合によってはシートは1枚かもしれません。こういった具合ですが、どのような コードにすればよいでしょうか?よろしくお願いします。 Sub insatsu() Sheets(Array("Sheet1", "Sheet3")).Select Sheets("Sheet1").Activate ActiveWindow.SelectedSheets.PrintOut Copies:=2, Collate:=True End Sub
- ベストアンサー
- オフィス系ソフト
- エクセル マクロ 印刷指定
マクロが解りません。色々調べてマクロの記録を使って、下記のマクロを作りました。 1枚目の印刷を2枚目、3枚目印刷として書き足してみました。 しかしエラーが出て2番目のシートからの印刷ができません。 Sub 連絡票印刷() ' ' Macro1 Macro ' ' Keyboard Shortcut: Ctrl+p ' Sheets("連絡票").Select ActiveWindow.SelectedSheets.PrintOut From:=Sheets("連絡票").Range("p1").Value, To:=Sheets("連絡票").Range("q1").Value, Collate:=True, IgnorePrintAreas:=False Sheets("予定表").Select ActiveWindow.SelectedSheets.PrintOut From:=Sheets("予定表").Range("y1").Value, To:=Sheets("予定表").Range("z2").Value, Collate:=True, IgnorePrintAreas:=False Sheets("配車表").Select ActiveWindow.SelectedSheets.PrintOut From:=Sheets("配車表").Range("s1").Value, To:=Sheets("配車表").Range("t2").Value, Collate:=True, IgnorePrintAreas:=False Dim str As String str = Worksheets("連絡票").Range("r1") Worksheets(str).Select End Sub いろいろ解らないなりに書き換えをしてみましたが、やっぱり2番目のシートから印刷ができません。 教えていただけませんでしょうか。
- ベストアンサー
- Excel(エクセル)
- VBAでA3サイズに印刷したい
Sub Macro4() ' ' Macro4 Macro ' マクロ記録日 : 2007/5/23 ユーザー名 : Administrator ' ' Sheets("印刷").Select ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True End Sub マクロの自動作成でこのように作りました これをA4からA3に拡大印刷したいのですが、どのようにしたら良いのでしょうか教えてください、よろしくお願いします。
- ベストアンサー
- オフィス系ソフト
- エクセルVBAで全シートをアクティブにするには?
ブック内の全シートを選択するのはSheets.Selectですね。 そうやって選択した全部のワークシートをアクティブにするにはどう記述するのでしょうか? SelectedSheets.Activateや Sheets.Activateではエラーになってしまいました。 何をしたいかといえば、全シートをアクティブにしてページ設定(横向きに)したいのです。
- 締切済み
- オフィス系ソフト
- エクセル VBA
印刷ページを指定して印刷したいのですが 以下の文章だと何処が間違いなのでしょうか。 Windows("あああ.xls").Activate Sheets("かかか").Select Dim c As Integer c = Range("A1").Value Sheets("さささ").Select ActiveWindow.SelectedSheets.PrintOut From:=1, To:=c, Copies:=1, Collate _ 仕事で詰まってしまいました。 自分のPC(エクセル2000)だと動くのですが、 他のPCへメールで飛ばしたら 最後の文章でエラーが出るそうなんですが。
- ベストアンサー
- オフィス系ソフト
- エクセル2000VBAからの印刷で実行時エラー1004発生
エクセル2000のVBAマクロ中で印刷をしよう として、実行時エラー1004が発生し、原因が分からず 苦慮しています。 (前略) Sheets("ラベル印刷").Select ... ActiveSheet.PageSetup.PrintArea = "$A$1:$B$2" ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True を実行すると、WorksheetクラスのPrintOutメソッドが 失敗しましたというエラーがでます。 色々試して、 Worksheets("ラベル印刷").Activate ActiveSheet.PrintOut とやってみたり、シートの名称をデフォルトのSheet1に 戻したりしても同様でした。 同じモジュール中で、 Sub printtest() Worksheets("ラベル印刷").PrintOut End Sub というのを記述して、VBAエディター中で実行ボタン (▼)で実行したり、ワークシートのツール/マクロの 実行から実行すると問題なく印刷できます。 ところが、マクロを改造してこのサブルーチンをコールする ようにすると、上と同様の現象が出ます。 別のPCで試みても再現されました。 他の部分は完成したつもりなのに、印刷が出来ず困っております。 アドバイスお願いします。
- ベストアンサー
- オフィス系ソフト
- Microsoft Visual Basicについて質問します。
シート名「委託内訳」でAN70がスペースの時に1ページのみ印刷し,スペースでない時に1~2ページを印刷したい時,下記のマクロでは2ページ目が印刷出来ません。 印刷できる方法は何かありますか? よろしくお願いします。 Sheets("委託内訳").Select Range("AN70").Select ActiveCell = ATAI If ATAI = "" Then ActiveWindow.SelectedSheets.PrintOut From:=1, To:=1, Copies:=1, Collate _ :=True Else ActiveWindow.SelectedSheets.PrintOut From:=1, To:=2, Copies:=1, Collate _ :=True End If
- 締切済み
- Windows系OS
- エクセルVBA、MsgBOXで入力した2つのシート番号で挟まれたシートをすべて消去したい。
マクロ自動記録で複数シートのDeleteを試してみると、 Sheets(Array("Sh20", "Sh19", "Sh18")).Select Sheets("Sh18").Activate ActiveWindow.SelectedSheets.Delete となって、シート名を個別に指定する必要が出てくる。 シートの左から18枚目から20枚目とか、15枚目から40枚目とか MsgBOXで入力した2つの数字で指示したいのですが、良い方法はありませんか? ちなみに、MsgBoxでA=15,B=40を入力して、 mysh = A For Sh=1 to B-A+1 Sheets(Array(mysh)).Select ActiveWindow.SelectedSheets.Delete next とやったら、シート1枚消すごとに、 「データがあります。消してよいですか?」のメッセージが出てきて、 作業が面倒です。 一括して消す方法がないでしょうか?
- ベストアンサー
- オフィス系ソフト
お礼
すばやいご回答ありがとうございます。 とても参考になりました。 初心者の私には、ちょっと手ごわそうなので運用側で代案を 考えてみようと思います。 ありがとうございました。