VBでプリンターを選ぶ
- プリンターをVBで選ぶと数日後にエラーが発生する問題が発生しています。
- VBで使用しているプログラムについて、詳細なコード例を提供します。
- エラーが発生する原因と解決策についてご教示ください。
- ベストアンサー
VBでプリンターを選ぶ
プリンターが数台あり、用紙によって、プリンターをVBで選ぶことをしていますが、一度OKになったVBが、数日立つとなぜかエラーになってしまいます。プログラムは、オートで作成したのですが下記のようになっております。下記で、[']の命令は、前回はOKであったのですが、本日はエラーになった分です。どなたかどうすればよいか教えてください。 Application.ActivePrinter = _ "\\FMV-DESKPOWER\RICOH imagio Neo 452 RPCS on Ne04:" ActiveWindow.SelectedSheets.PrintOut Copies:=1, ActivePrinter:= _ "\\FMV-DESKPOWER\RICOH imagio Neo 452 RPCS on Ne04:", Collate:=True 'Application.ActivePrinter = ' "\\FMV-DESKPOWER\RICOH imagio Neo 452 RPCS on Ne03:" 'ActiveWindow.SelectedSheets.PrintOut Copies:=1, ActivePrinter:= _ ' "\\FMV-DESKPOWER\RICOH imagio Neo 452 RPCS on Ne03:", Collate:=True
- npsw
- お礼率33% (35/103)
- オフィス系ソフト
- 回答数3
- ありがとう数2
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは。 >と言うことは、この教えて頂いた命令を先に行い、ポート03を入れないといけないのでしょうか。 そのような必要はありませんが、少し、こちらでは事情を勘違いしていたのは、多数の中でプリンタの選択ではなかったのですね。 >\\FMV-DESKPOWER\RICOH imagio Neo 452 RPCS || >192.168.10.150@imagio_Neo_452@ たぶん同じ意味だと思います。メッセージボックスで、プリンタ名が表示されたら、それは繋がっているはずです。ダメだったら、変更されなかったと出ます。 ちょっとこちらを試してみてください。 その後の印刷に関しては、ActiveSheet.PrintOut で実行されます。 Sub ChangeActPrinter() Dim OldPrt As String Dim ActPrt As String Dim i As Integer Dim errFlg As Integer OldPrt = Application.ActivePrinter ActPrt = "\\FMV-DESKPOWER\RICOH imagio Neo 452 RPCS" ActPrt = Trim(ActPrt) On Error Resume Next For i = 0 To 4 Application.ActivePrinter = ActPrt & " on Ne" & Format$(i, "00") & ":" If Err.Number > 0 Then errFlg = Err.Number Err.Clear Else errFlg = 0 Exit For End If Next i ActPrt = Application.ActivePrinter On Error GoTo 0 If ActPrt = OldPrt Then If errFlg > 0 Then MsgBox "設定がうまく行きませんでした", 48 Else MsgBox "設定はそのままで、使えます。", 64 End If ElseIf errFlg = 0 Then MsgBox "正しく設定されました: " & Application.ActivePrinter End If ''印刷(Excel の場合) 'ActiveSheet.PrintOut End Sub
その他の回答 (2)
- Wendy02
- ベストアンサー率57% (3570/6232)
こんにちは。 1.> Application.ActivePrinter = ActPrt & " on Ne" & Format$(i, "00") & ":" 2.>If Err.Number > 0 Then >など、意味のわからないのが悔しいです。 >同じような質問を待たしてしまいそうです。 この前、他の方の質問の中で、同じような内容のものがありましたが、特に、2. は、あまり知られていないパターンかもしれません。 1. は、Application.ActivePrinter は、値をとるのも与えるのも出来るので、これ関しては、あまり深い意味はないと思います。 問題は、2. なのです。 このようにサンドイッチにします。 On Error Resume Next '実行 On Error GoTo 0 その時に、エラーが発生したら(If Err.Number > 0 )、次を試すというようなスタイルになるのですが、本当は、ポートを取る方法があるのだろうとは思いますが、実際に、Win32 APIを使うよりも、こんな簡単な方法で出来るわけです。 こういうものは、一種の決まりきったパターンですから、単に、一度、コツを覚えれば次からは使えます。使う場所は、そんなに多くはありません。
- Wendy02
- ベストアンサー率57% (3570/6232)
こんにちは。 他にも方法はあると思いますが、ポートを探すだけでしたら、簡単にループで探せばよいと思います。 Sub FindActPrinter() Dim ActPrt As String Dim i As Integer '選択で以下の変数に代入 ActPrt = "RICOH imagio Neo 452 RPCS on Ne04" 'スペース付きの' on 'は、まずダブりはないと思います。 ActPrt = Mid$(ActPrt, 1, InStr(1, ActPrt, " on ", vbBinaryCompare)) On Error Resume Next For i = 0 To 4 Application.ActivePrinter = ActPrt & "on Ne" & Format$(i, "00") & ":" If Err.Number > 0 Then Err.Clear Else Exit For End If Next i On Error GoTo 0 MsgBox Application.ActivePrinter End Sub
お礼
甘えてすいませんが、教えてください。 プロパティのポートですが、 192.168.10.150@imagio_Neo_452@ と入ってますが、関係ありますでしょうか?
補足
ありがとうございます。 教えて頂いた、命令を入れましたところ、メッセージBOXで、Ne03が最後に表示されます。と言うことは、この教えて頂いた命令を先に行い、ポート03を入れないといけないのでしょうか。ポート03をプリント命令にVBで挿入は可能でしょうか?(自動でプリントが出来る様にするにはどうすれば良いでしょうか?)
関連する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(エクセル)
- マクロ 連続印刷
マクロ初心者です。 ピボットテーブルでマクロを使って連続印刷をしようと思いました。 一応やってみて連続で印刷は出来たのですが番号がないときエラーになってしまします。 たとえば"562"という番号がないときエラーになって止まってしまいます。 番号がないときは飛ばして印刷するにはどのようにしたらよいでしょうか? よろしくお願いします。 Sub 連続印刷() ' ' 連続印刷 Macro ' ' ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, _ IgnorePrintAreas:=False ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("コンポコード").ClearAllFilters ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("コンポコード").CurrentPage = _ "562" ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, _ IgnorePrintAreas:=False ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("コンポコード").ClearAllFilters ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("コンポコード").CurrentPage = _ "947" ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, _ IgnorePrintAreas:=False ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, _ IgnorePrintAreas:=False ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("コンポコード").ClearAllFilters ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("コンポコード").CurrentPage = _ "950" ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, _ IgnorePrintAreas:=False ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("コンポコード").ClearAllFilters ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("コンポコード").CurrentPage = _ "952" End Sub
- ベストアンサー
- オフィス系ソフト
- エクセルマクロで教えてください。
エクセルマクロで、プリンター出力で、困ることが多々発生しています。 どなたか対処法がわかりましたら教えてください。 下記のようにマクロを組んで、印刷させることをしていますが、 最後の「Ne01」がなぜかわからないのですが、よく勝手に変わってしまうのです。 S_PRINT = "RICOH imagio Neo 452 RPCS on Ne01:" とか、 Application.ActivePrinter = "EPSON PM-G4500 on Ne03:" とマクロを組んでます。 そのため、エラーとなったときに、マクロを開き、00から順番に02.03.などを入れ替えております。 エラーとならない方法はないでしょうか?
- ベストアンサー
- その他MS Office製品
- excel vba 印刷部数設定
excel 2002を使用しています。 マクロで印刷および印刷プレビューせずに、印刷部数を設定する方法を探しています。 ActiveWindow.SelectedSheets.PrintOut Copies:=1, Preview:=True ではプレビューしてしまいます。 ActiveWindow.SelectedSheets.PrintOut Copies:=1 では印刷してしまいます。 印刷およびプレビューしない方法はないものなのでしょうか。 よろしくお願いします。
- 締切済み
- オフィス系ソフト
- Excel VBAで自動印刷プログラムの作り方を教えて下さい。
あるファイルにある全てのグラフを印刷するマクロを作りたいのですが、 どのようにすれば良いのでしょうか? Sub Macro2() ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True End Sub に何を付け足せば良いのでしょうか? 何卒よろしくお願い致します。
- ベストアンサー
- Visual Basic
- 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
- ExcelVBAでPrimoPDを制御したい
いつも楽しく勉強させていただいております。 環境はwin7でExcel2003です。 Excelのブックをマクロを使ってPDF化したいのですが、問題はOfficeのバージョンが2003なのでPDF形式でで保存という機能がありません。 そこでPrimoPDFというフリーソフトをインストールして、マクロの自動保存で下記のプログラムを作りました。 Sub Macro1() Application.ActivePrinter = "PrimoPDF on Ne08:" ActiveWindow.SelectedSheets.PrintOut Copies:=1, ActivePrinter:= _ "PrimoPDF on Ne08:", Collate:=True End Sub 問題はこれを実行するとPrimoPDFのダイアログボックスが出てきてしまうことです。 PDF化したいファイルは1000以上あるのでいちいち手動でボタンをクリックすることはできません。 できれば保存する場所やポストプロセス(PDFを開くなど)を「なし」にするなどの設定もマクロで行いたいのですが、相手がPrimoPDFでは無理でしょうか。どうしてもPrimoPDFを使いたいわけではありません。もしそれ以外でお勧めの方法があればそれでもいいのですが。 ただ、Excelはどうしても2003でやりたいのです。2007だと「PDFで保存」の機能を使用できるのですが、どういうわけか2007だとレーダーチャートの形が崩れてしまうので
- ベストアンサー
- Visual Basic
- Excel VBA 印刷設定
印刷ページ設定で ActiveWindow.SelectedSheets.PrintOut From:=1, To:=3, Copies:=2, Collate :=True の式で、何ページまで印刷するかを、A1セルに入力して決定したいのですが、数式の書き方がわかりません。 A1に2と入力すれば、To:=2と認識するやり方を教えてください。 宜しくお願いします。
- ベストアンサー
- オフィス系ソフト
- エクセでのプリンター選択・印刷・中止マクロについて
エクセルでプリンターを選択して印刷するマクロを下記で行っているのですが、プリンター選択ダイアログボックスでプリント中止のキャンセルボタンをクリックしてもキャンセルが有効とならず印刷されてしまいます。マクロ初心者で、どうしたらいいのか困っています。ご教授宜しくお願い致します。 Sub ネットカード印刷() Sheets("ネット入力").Select Application.Dialogs(xlDialogPrinterSetup).Show ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, _ IgnorePrintAreas:=False Sheets("ネット入力").Select End Sub
- ベストアンサー
- Visual Basic
お礼
ありがとうございました。 エラーになることなく[デバック]というメッセージも出なくなりました。 ただ、私は教えて頂いた各命令の記述で、 Application.ActivePrinter = ActPrt & " on Ne" & Format$(i, "00") & ":" If Err.Number > 0 Then など、意味のわからないのが悔しいです。 同じような質問を待たしてしまいそうです。(勉強が足りないのはわかっているのですが、オンラインヘルプなどのヘルプで調べて意味を少しでもつかもうとはしているのですが、トホホ)