アプリ版:「スタンプのみでお礼する」機能のリリースについて

マクロで封筒を自動印刷出来る様にファイルを作りました。
先日、そのマクロで封筒を印刷する前に
別のファイルの物を印刷しようと思い、そのファイルの印刷設定を変えて
印刷をしました。

その後、マクロで作ったファイルで封筒を印刷したところ
印刷設定がおかしくなってしまいました。
とりあえず、設定を直し何度かマクロで印刷を試みましたが
いくら直して上書きしても印刷設定が直らず・・・・。

一度、PCを再起動して再び試みると印刷がきちんとされました。


この現象はマクロを使っているからなのでしょうか??
それともマクロの使い方が悪くて起きる症状なのでしょうか?
対策方法があれば教えて頂けるとうれしいです。

使っているマクロは次のとおりです。

Sub Futo_Copy()

'//////////////////////////////
'印刷を行う
'//////////////////////////////

Dim i As Integer
Dim S_1 As String '1行目
Dim S_2 As String '2行目
Dim S_3 As String '3行目
Dim S_4 As String '4行目
Dim S_5 As String '5行目
Dim S_6 As String '6行目
Dim S_7 As String '7行目
Dim S_8 As String '8行目
Dim S_9 As String '9行目
Dim S_10 As String '10行目

Application.ScreenUpdating = False '描画をしない
'sheet_name = ActiveSheet.Name 'アクティブシート名を取得

'シートの中で使用されている最大の列を求める。
'row_count = Worksheets("印刷対象").Cells.Find("*", Range("A1"), , , xlByRows, xlPrevious).Row
'シートの中で使用されている最大の行を求める。
'col_count = Worksheets("印刷対象").Cells.Find("*", Range("A1"), , , xlByColumns, xlPrevious).Column

row_count = Worksheets("印刷対象").Range("A65536").End(xlUp).Row


For i = 3 To row_count '印刷対象の3行目からループ

Worksheets("出力").Select

'データ取得
S_1 = Worksheets("印刷対象").Cells(i, 1)
S_2 = Worksheets("印刷対象").Cells(i, 2)
S_3 = Worksheets("印刷対象").Cells(i, 3)
S_4 = Worksheets("印刷対象").Cells(i, 4)
S_5 = Worksheets("印刷対象").Cells(i, 5)
S_6 = Worksheets("印刷対象").Cells(i, 6)
S_7 = Worksheets("印刷対象").Cells(i, 7)
S_8 = Worksheets("印刷対象").Cells(i, 8)
S_9 = Worksheets("印刷対象").Cells(i, 9)
S_10 = Worksheets("印刷対象").Cells(i, 10)

Worksheets("出力").Cells(1, 1) = S_1
Worksheets("出力").Cells(2, 1) = S_2
Worksheets("出力").Cells(3, 1) = S_3
Worksheets("出力").Cells(4, 1) = S_4

'Worksheets("出力").PrintPreview 'プレビュー
Worksheets("出力").PrintOut 'プリントアウト

Next i

'Worksheets("出力").Cells.Clear 'シートのクリア
Application.ScreenUpdating = True '描画開始
Worksheets("印刷対象").Activate

End Sub


出来ればこのマクロの形をあまり変えずに
症状が直せるといいのですが・・・。
よろしくお願い致します。

A 回答 (2件)

No.1の方がおっしゃるよう、マクロは関係ないですね。


>別のファイルの物を印刷しようと思い、そのファイルの印刷設定を変えて
>印刷をしました。
この操作がどのようなものかわかりませんが、プリンターのデバイスから変更の操作を
していたら、ご指摘の様な動作になると思います。

回避の方法として
1、別のファイルを印刷した後に、プリンターのデバイスの設定を元に戻す。
2、別のファイルを印刷するときに、プリンターのデバイスは操作しない。
3、エクセルで印刷する際には、別のプリンターデバイスで印刷する。

ちょっとしたウルトラC的なテクニックですが
手順
1、同じプリンターで、プリンターの設定を2個作ります。
2、エクセルVBAで印刷するときに、プリンターの指定を行います。

提示のVBAも結構もだが多いので修正してみます(動作確認はしていません)

Sub Futo_Copy()
Dim myPrinter AS string
myPrinter = Application.ActivePrinter '現在のプリンタ名を取得
Application.ActivePrinter = "変更したいプリンタ名"
'↑の部分でプリンターを通常のプリンターから設定の変更していないプリンター切り替える

with Worksheets("出力")
row_count = Worksheets("印刷対象").Range("A65536").End(xlUp).Row
For i = 3 To row_count '印刷対象の3行目からループ
.Cells(1, 1) = Worksheets("印刷対象").Cells(i, 1)
.Cells(2, 1) = Worksheets("印刷対象").Cells(i, 2)
.Cells(3, 1) = Worksheets("印刷対象").Cells(i, 3)
.Cells(4, 1) = Worksheets("印刷対象").Cells(i, 4)
Worksheets("出力").PrintOut 'プリントアウト
Next i
End With

Application.ActivePrinter = myPrinter
'↑の指示で最初のプリンターデバイスに戻す。
End Sub

こんな感じで試してみてください。
    • good
    • 0
この回答へのお礼

やはりそうですか・・・^^;
上記プログラム参考にさせて頂きます。
ありがとうございました♪

お礼日時:2013/07/01 09:32

印刷命令は「Worksheets("出力").PrintOut」しかありません。


ただし、プリンタを指定していませんので、
OS側のデフォルト(常時使用するプリンタ)での印刷になるはずです。
マクロの問題ではないと思います。
    • good
    • 0
この回答へのお礼

お忙しいところありがとうございました。
無事に解決しました☆

お礼日時:2013/07/01 09:33

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!