JustAnswer のしくみ:
  • 専門家に質問
    知識豊富な専門家があらゆる質問にお答えするために常に待機しています。
  • 専門家が丁寧に対応
    E メールやサイト内オンラインメッセージなど、さまざまな手段で回答を通知。必要に応じてフォローアップの質問をすることもできます。
  • 満足度 100% 保証
    専門家からの回答を確認し評価をすることで、支払うかどうかを決めます。
DKK2002に今すぐ質問する
DKK2002
DKK2002, ITエンジニア
カテゴリ: オペレーティングシステム
満足したユーザー: 6371
経験:  NTTコミュニケーションズ .com Master★★
60772406
ここに オペレーティングシステム に関する質問を入力してください。
DKK2002がオンラインで質問受付中

教えてください!家のPCはWIN7でExcel2010です。会社のPCはWIN8でExcel2007です。「連続差込印刷」のマクロを作りブッ

質問者の質問

教えてください!家のPCはWIN7でExcel2010です。会社のPCはWIN8でExcel2007です。
「連続差込印刷」のマクロを作りブックに保存し、家では印刷出来ました。コピーファイルAを会社に持って行きました。「マクロを有効にする」とセキュリティーセンタ-で変更し、 F8を押した時もマクロの名前は変わっていませんでした。画面にマクロが動く時独特のチラツキもなく、エラーメッセージも出ません。プリンターBもつながっています。セキュリティーもその時ためしにゆるくしてもらいましたが同じでした。
他のPCにファイルAをペーストして実行したところ画面にマクロが動く時独特のチラツキが見えたので印刷できるのかと期待したら印刷はできませんでした。
そのAファイルを家に持ち帰り再度実行すると印刷できます。もとから会社では、プリンターの選択はBになっていましたが、再度コントロールパネルで「常時接続するプリンター」をBとしたらたまたま動きました。どのような原因が考えられますでしょうか?解決法はありますか?以下のものです。よろしくお願いします。
Sub 振休()
Dim 最終行 As Long
Dim 行 As Long
最終行 = Range("A2").End(xlDown).Row
For 行 = 2 To 最終行
Worksheets("振休元").Select
If Cells(行, 2).Value = "〇" Then
With Worksheets("振休先")
.Range("CQ3").Value = Cells(行, 1).Value
.PrintOut
End With
End If
Next
End Sub
投稿: 3 年 前.
カテゴリ: オペレーティングシステム
専門家:  katoq2001 返答済み 3 年 前.
katoq2001 :

ご質問の投稿

katoq2001 :

ありがとうございます

katoq2001 :

お手数をおかけしますが、ワークシート 振休元 と 振休先 はどのようなデータ内容だったのでしょうか

JACUSTOMER-yiczp3vv- :

振休元に名簿の列が1列入っておりその横列に印刷したい人に○印を入れると振休先シートのセルに名前が入り印刷するのを繰り返すデータです

JACUSTOMER-yiczp3vv- :

エクセルの印刷でプリンターの選択はBになっていました。

JACUSTOMER-yiczp3vv- :

エイトには2台のプリンターがつながっています。単純ですが常時接続するプリンターをBにしてからマクロを実行すれば解決するのでしょうかよろしくお願いします

専門家:  katoq2001 返答済み 3 年 前.
チャットでのやり取りは終了しましたが、疑問点がある場合や補足の説明が必要であれば、引き続きお答えします。このページにお戻りいただければ、チャットでやりとりした内容の確認および疑問点をお問い合わせいただけます。

次のステップ

回答の評価はお済みですか?まだであれば今すぐ回答を評価してください。もし評価の前にまだ疑問点があれば、下記のテキストボックスから返信してください。
質問者: 返答済み 3 年 前.

失礼しました。シート振休元の1列に名簿が入っておりその横列に○を表記しマクロを実行すると○の付いた人の名前がシート振休先の1つのセルに印刷される、その繰り返しのマクロです。

エイトには2台のプリンタがつながっています。

お世話になりますがよろしくお願いします。

質問者: 返答済み 3 年 前.

お世話になります。10/15 今日会社でマクロを実行する前にコントロールパネルで常時接続するプリンタをBにして実行してみましたが動きませんでした。この場合やはりプロシージャでプリンタを設定したらよいのでしょうか。印刷プレビュだと差し込み印刷の意味がなくなりそうですし。家でプリンタを指定する方法はないかとやってみましたが、マクロのエラーが出ます。会社のPCとプリンタはUSBケーブルでつながっていています。

質問者: 返答済み 3 年 前.
再投稿:回答が遅い.
答えがかえってきていない
質問者: 返答済み 3 年 前.
再投稿:その他.
回答が一度も帰ってこない
専門家:  DKK2002 返答済み 3 年 前.
dkk2002と申します。前任者に替わり対応させていただきます。

家と会社で使用するプリンターが異なるために,印刷がうまくできないという可能性が考えられますが,マクロの中でどのプリンターを使用するかという指定がまず必要だと思われます。

いずれの環境でも,通常使うプリンターで印刷を行なうという事が前提となりますが,まずはこのプリンターの名前を取得て印刷するという内容を加えていただければ良いのではと思いますが,いかがでしょうか?

サンプルは以下のサイトで案内されていますので,ご参考になさってみてください。

http://www.excel.studio-kazu.jp/kw/20121205183847.html

またついでですが,.PrintOutの前に,「Application.ScreenUpdating = False」を加えていただければ,印刷前の画面のちらつきがなくなるはずです。

参考:http://officetanaka.net/excel/vba/sheet/sheet08.htm

(24時間この画面の前で待機している訳ではなく本業・食事・睡眠・所用のためにいつでもすぐに回答できるとは限りません。回答をお待たせすることがございますが,あらかじめご了承願います。)
質問者: 返答済み 3 年 前.

ご回答有難うございます。私も会社のプリンタBを指定しようと思い調べてみました。キャノンPIXUS MP540でポートを見るとLTP1とかのところではなくUSB002のところにチェックが入っていました。よくわからず悩んでマクロを以下のようにプリンターを選択するようにしてみました。

Sub 振休()

Dim xPrt As String

With Application

xPrt=.ActivePrinter

.Dialogs(xlDialogPrinterSetup).Show

Dim 最終行 As Long
Dim 行 As Long
最終行 = Range("A2").End(xlDown).Row
For 行 = 2 To 最終行
Worksheets("振休元").Select
If Cells(行, 2).Value = "〇" Then
With Worksheets("振休先")
.Range("CQ3").Value = Cells(行, 1).Value
.PrintOut
End With
End If
Next

.ActivePrinter=xPrt

End With

End Sub

するとプリンタを選択するダイアログボックスが出て選択でしました。マクロが動く前触れのチラツキもあったので、一瞬喜んだのですが

エラーメッセージ400(実行不可能)が出ました。コンパイルエラーは出ないのですがマクロの記述が間違っているのでしょうか?

別件でこのPCエイトに最近入れた一太郎のソフトで差込印刷をしようとしたら、印刷プレビューができませんでした。エクセルの普通の印刷ならできるのですが、差し込み印刷がダメなようです。どこに問題があるのでしょうか?これらの不具合を考えるとプリンタのドライバの問題なのでしょうか?

専門家:  DKK2002 返答済み 3 年 前.

以下のページの情報を参考になさっておられるように見受けられますが,そうでしょうか?

http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q12120398867

エラーメッセージについては,省略せずにお伝えいただければ助かりますが,「アプリケーション定義またはオブジェクト定義のエラーです。」というメッセージでしょうか?どこでエラーが発生しているのかを突き止めていただかないと,対処は難しいと思われます。

一応,お知らせいただいた情報を基に,こちらでもExcelファイルを作成して再現してみました。やはりお知らせいただいているマクロの表記に幾らか怪しい部分があるように思えます。以下のマクロで差し込み印刷が当方では行なえましたので,お試しになってみてください。

Sub 振休()
Dim xPrt As String
Dim i As Long

With Application
xPrt = .ActivePrinter
.Dialogs(xlDialogPrinterSetup).Show

With Worksheets("振休元")

For i = 2 To Range("A2").End(xlDown).Row
If .Range("B" & i).Value = "○" Then
Worksheets("振休先").Range("CQ3").Value = .Range("A" & i).Value
Worksheets("振休先").PrintOut
End If
Next i

End With

.ActivePrinter = xPrt

End With

End Sub

質問者: 返答済み 3 年 前.

早々の御解答有難うございます。あいにく 明日は非番ですが23日にご伝授頂いたマクロでトライしてみます。エラーメッセージは「400」しか記憶がないのですが、それももう一度試してみます。ドライバをチェックしてもらいましたが最新のドライバだとの事でした。参考になるページまで教えていただき本当に有難うございます。勉強します。会社の人はマクロや差し込み印刷もあまり分かっておられないので協力してくれる人がいなくて辛かったところです。お返事頂いただけでも元気出ました。

専門家:  DKK2002 返答済み 3 年 前.
サンプルはあくまでもサンプルです。実ファイルの構成がよくわかりませんので,ご自身で必要に応じて編集をなさっていただけるようにお願いします。

またご不明な点はお尋ねください。うまくいくように願っております。

オペレーティングシステム についての関連する質問