• 締切済み

VBAエクセルにて印刷

こんにちわ。教えてください。VBAでActiveXコントロールをクリック したのち、印刷のプレビューを表示したら、MegBoxメッセージを表示 させ ”はい””いいえ”を選択したいのですがうまくいきません。 ちなみに下記のプログラムです。 Private Sub 印刷_Click() ActiveWindow.SelectedSheets.PrintPreview Dim ans As Integer ans = MsgBox("印刷しますか?", vbInformation + vbYesNo, "確 認") Select Case ans Case vbYes Application.ActivePrinter = "Canon iR C3080/C3580 LIPSLX on Ne05:" ExecuteExcel4Macro "PRINT(2,1,1,1,,,,,,,,2,,,TRUE,,FALSE)" Case vbNo MsgBox "故障履歴印刷をキャンセルします。" End Select End Sub 以上なんですがプレビュー後に”印刷しますが”が聞いてきません。 どうすればいいですか?

みんなの回答

  • Avirex
  • ベストアンサー率33% (1/3)
回答No.2

こんばんは。 簡単ですが↓でどうでしょうか? Sub Macro1() Dim ans As Integer Sheet1.Select ans = MsgBox("印刷しますか?", vbInformation + vbYesNo, "確 認") Select Case ans Case vbYes Sheet1.PrintOut copies:=1 Case vbNo MsgBox "故障履歴印刷をキャンセルします。" End Select End Sub 印刷範囲指定したい場合はマクロで記録して、不要部分をトリムください。

  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.1

PrintPreviewしたら、エクセルはプレビュー画面で「印刷」か「閉じる」等の指示待ちになりますからそこで止まってしまいますよ。

dirtyflogs
質問者

お礼

やはりそうなんですね。いろいろ試したのですが自動実行できなくて ありがとうございました。

関連するQ&A

  • 連続印刷中のMsgBox

    エクセルVBAで作業をしています iをFor・・・Nextで回し50枚程度の印刷を行うのですが、 途中15枚程度で続行か中止かをMsgBoxで振り分けを行いたいのですが プリントOUT処理の後 If i = 10 Then     ans2 = MsgBox("15枚印刷しましたまだ続けますか?", vbYesNo + vbInformation, "印刷実行")     Select Case ans2      Case vbYes     Select Case ans2      Case vbNo      Exit For      End Select Next i  End With  End Select End Sub 書くとNextに対するFORがありませんと出ました どうすれば良いでしょうか

  • シートのマクロについて

    sheet1 をアクティブすると下記のマクロが実行されるようにしたのですが なかなかうまくいきません。 どなたか教えて下さい。 Sub クリア() Dim ans As Integer ans = MsgBox("全てクリアをしてもいいですか?", _ vbYesNoCancel + vbInformation, "クリア実行") Select Case ans Case vbYes Sheets("sheet1").Select Range("B4:W43,Z4:Z43,AA4:AA43").Select Selection.ClearContents Range("B4").Select Sheets("sheet1").Select Case vbNo MsgBox "NO" Case Else MsgBox "中止します" End Select End Sub

  • Private sub の使い方

    Private Sub Worksheet_Activate() Dim ANS As Integer ANS = MsgBox("Bをクリアしてもいいですか?", _ vbYesNo + vbInformation, "クリア実行") If Sheets("B").Range("D6").Value <> "" Then Select Case ANS Case vbYes Sheets("営業確認").Range("D6:E1000").Select Selection.ClearContents Sheets("入力").Select MsgBox "クリアしました" Case vbNo MsgBox "キャンセル" End Select Else End If End Sub 質問 『A』のシートを開いた時に『B』のシートのD6に値があれば、MsgBoxを出すようにしたく上記のマクロを組みましたが、値が無くてもMsgBoxが表示されてしまいます。 どこがおかしいのかアドバイスをお願いします。

  • エクセルVBAの不思議な挙動?

    エクセル2003です。 ThisWorkbookには以下の記述があります。 Private Sub Workbook_BeforePrint(Cancel As Boolean) If ActiveSheet.Name <> "Sheet1" Then Exit Sub If Range("A1").Value = "" Then MsgBox "A1が未入力です" Range("A1").Select Cancel = True End If Application.OnTime Now(), "ページ移動" End Sub 標準モジュールには以下の記述があります。 Sub ページ移動() Sheets("Sheet2").Select Range("A1").Select End Sub Sub プリント() ActiveWindow.SelectedSheets.PrintPreview End Sub これでSheet1を開いた状態でツールバーから印刷プレビュー指示をすると、A1セルが入力済みであればプレビュー画面を出し、プレビューを閉じればSheet2が表示されます。 ところが、同じ状態でツールバーからではなく、マクロ Sub プリント を実行すると、プレビュー画面にはなりますが、プレビューを閉じてもSheet1のままです。 なぜ、 Application.OnTime Now(), "ページ移動" が、有効にならないのでしょうか?

  • マクロでネットワーク経由の印刷をしたいのですが

    Excel2002を使用しています。2人の人間が各々のPCから 指定のプリンター(通常使うプリンターではない)で 印刷出来るようにしたいのですが、うまくいきません。 プリンターが接続されている「山田太郎」は印刷出来るのですが、 ネットワークを介している「田中花子」は、通常使うプリンターから 出力されてしまいます。 何が原因なのか、ご教授願います。 Sub 印刷確認() タイトル = "印刷確認" メッセージ = "今日の日付で印刷してよろしいですか?" スタイル = vbYesNo + vbQuestion + vbDefaultButton1 + vbApplicationModal yesno = MsgBox(メッセージ, スタイル, タイトル) If yesno = vbYes Then ユーザー名 = Application.UserName Select Case ユーザー名 Case "山田太郎" プリンター = "EPSON PM-840C on Ne03:" Case "田中花子" プリンター = "\\yamada\EPSON PM-840C on Ne0:5" End Select   Application.ActivePrinter = プリンター   ActiveWindow.SelectedSheets.PrintOut Copies:=1, ActivePrinter:= _   プリンター, Collate:=True ThisWorkbook.Worksheets("住所録").Select Range("A3:A10000").ClearContents End If    Range("G14,I14").ClearContents Exit Sub End Sub

  • IFの使い方

    Private Sub Worksheet_SelectionChange(ByVal Target As Range) Dim ANS As Integer ANS = MsgBox("Aをクリアしてもいいですか?", _ vbYesNoCancel + vbInformation, "クリア実行") If Sheets("A").Range("6D").Value <> "" Then Select Case ANS Case vbYes Sheets("営業確認").Range("b6:e1000,g6:k1000").Select Selection.ClearContents Sheets("入力").Select MsgBox "クリアしました" Case vbNo MsgBox "キャンセル" Case Else MsgBox "中止します" End Select Else End If End Sub 説明 (1)『A』というシートのセル『D6』に値が残っていれば メッセージボックスを出す。 (2)メッセージボックスはyes,no,cancelボタンがある (3)YESなら指定したセルの値を消す (4)NOなら消さない (5)キャンセルなら(3)、(4)以外 (6)『A』の『D6』に値がなければメッセージは出ない 上記のようにマクロを組みましたが、IFの所がエラーになってしまいます。

  • マクロで印刷ができません

    簡単な表を作成し、デザインモードでフォームコントロールでボタンを作成し、マクロの作成をしました。 印刷するためにボタンをクリックしても 印刷プレビューで画面が止まってしまいます。 ところがプレビュー画面を閉じると印刷が始まります。 何度やりかえてもマクロで最後まで印刷ができません。 記述は次のようになっています。 プリントも記述されているようなのですが・・・・ エクセル2007を使っています。 どなたか助けてください Sub ボタン3_Click() ' ' ボタン3_Click Macro ' ' ActiveSheet.Shapes("Button 3").Select Selection.Characters.Text = "ボタン 3" Range("B3:E12").Select ActiveSheet.PageSetup.PrintArea = "$B$3:$E$12" ActiveWindow.SelectedSheets.PrintPreview ActiveWindow.SelectedSheets.PrintOut Copies:=1 End Sub

  • エクセルVBAのBeforePrintで

    ThisWorkbookモジュールで Private Sub Workbook_BeforePrint(Cancel As Boolean) If ActiveSheet.Name <> "Sheet1" Then Exit Sub MsgBox "BeforePrintイベント発生" End Sub を使って、Sheet1での印刷のイベントを取得できます。 ただ、指示がPrintなのかPrintPreviewなのかが取得できません。 印刷またはプレビューされる前にどちらの指示なのかを取得する方法がありますか?

  • メッセージボックス vbYesNoCancel

    こんにちは。 EXCEL VBA初心者です。 メッセージボックス vbYesNoCancelを以下のように使用したいのですが 行き詰ってしまいました。 ・はいの場合===>通常使うプリンタで印刷 ・いいえの場合===>ファイル名を指定して保存(保存先は、使用する人が指定) ファイル名は、AAAと設定したい ・キャンセルの場合は、マクロの実行をキャンセルするのみ Sub sumple() Dim vConf vConf = MsgBox("印刷しますか?保存の場合は、NOをクリックして下さい", vbYesNoCancel) Select Case vConf Case vbYes Sheets("Agreement(1)").Select ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True Case vbNo ここがわかりません。 Case Else Exit Sub End Sub Windows XP EXCEL 2003を使用しています。 どうぞ宜しくお願い致します。

  • エクセル2007 メッセージボックスについて教えて下さい

    セルA1に"1"が入れば"b10~m60"を印刷(1ページ分)、 同様に、"2"が入れば"b61~m110"(2ページ分)、"3"が入れば"b111~m160"(2ページ分)を印刷する マクロボタンがあります。 現在、印刷を実行する前にメッセージボックスで「印刷します」→「OK」「キャンセル」の確認をしていますが このメッセージに、セルA1に入れた数値で確認したいのですができるでしょうか?? 例)セルA1="1"→MsgBox「1ページ印刷します」    セルA1="2"→MsgBox「2ページ印刷します」 分かりづらい説明で申し訳ありません。よろしくお願いします。 ↓現在の記述↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ Sub test() If MsgBox("印刷します", vbOKCancel) = vbCancel Then Exit Sub End If Select Case Range("a1").Value   Case "1" ActiveSheet.PageSetup.PrintArea = "b10:m60" ActiveWindow.SelectedSheets.PrintOut Copies:=1  Case "2" ActiveSheet.PageSetup.PrintArea = "b61:m110" ActiveWindow.SelectedSheets.PrintOut Copies:=1   Case "3" ActiveSheet.PageSetup.PrintArea = "b111:m160" ActiveWindow.SelectedSheets.PrintOut Copies:=1  End Select End Sub

専門家に質問してみよう