Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


1416 / 13646 ツリー ←次へ | 前へ→

【74566】エクセルファイルと中のシートをリストで指定して印刷 はんぎょじん 13/7/24(水) 17:56 質問[未読]
【74598】Re:エクセルファイルと中のシートをリスト... こたつねこ 13/8/1(木) 22:58 発言[未読]
【74623】Re:エクセルファイルと中のシートをリスト... はんぎょじん 13/8/12(月) 11:59 お礼[未読]

【74566】エクセルファイルと中のシートをリストで...
質問  はんぎょじん E-MAIL  - 13/7/24(水) 17:56 -

引用なし
パスワード
   「リスト」というシートに、開きたいエクセルファイル名を縦一列に書き、それぞれファイル名の横に、印刷したいシート名を書いたマトリックス状のリストを作ります。
これを読み取って、必要ファイルの必要シートをドキュワークス印刷(つまりはパソコン上の仮想印刷)するマクロを作りました。
ところが、これがうまく動きません。
一応全部印刷されるのですが、リストの順番どおりに出ず、最後の方のシートが先に出てきたりします。
ちなみに、紙出力する普通のプリンターだと指定順序どおり、正しく動きます。
また、リスト中にMsgboxを入れて、ブレークポイント?を作ると、うまく動くよおうです(下のリストはそうなっています)。これをコメント化して完全自動にすると(それが目的です)、ドキュ印刷のシートの順序が狂います。

これはどう改善すればいいでしょうか?あるいは、ドキュワークスでの設定の問題でしょうか?

何かのヒントでも頂ければありがたいです。

Sub 印刷()
Dim MaxRow As Integer 'その列でデータの入っている最終行(上から切れるところまで)
Dim MaxCol As Integer 'その行でデータの入っている最終列(左から切れるところまで)
Dim PrintBook As Workbook
Dim Sheet_Name As String

ThisWorkbook.Sheets("リスト").Select

'ファイルが何個あるか=ファイル名が何行目まで書いてあるか
MaxRow = ThisWorkbook.Sheets("リスト").Cells(1, 3).End(xlDown).Row

'マクロ進行状況の途中確認
MsgBox "ファイルは全部で" & MaxRow - 1 & "個です"

For i = 1 To MaxRow - 1 'ひとつのファイルごとの操作
  ThisWorkbook.Activate
  'マクロ進行状況の途中確認
  MsgBox "今から" & i & "/" & "MaxRow - 1" & "個目のファイル" & Cells(i + 1, 1).Value & "を開きます"
  Workbooks.Open Cells(i + 1, 1)
 
  '印刷対象のファイルと、マクロファイル=ThisWorkbookとを行ったり来たり出来るように、印刷対象ファイルを変数に格納する
  Set PrintBook = ActiveWorkbook
   
  'シートが何個あるか=シート名が何列目まで書いてあるか
  MaxCol = ThisWorkbook.Sheets("リスト").Cells(i + 1, 1).End(xlToRight).Column
  
  For j = 1 To MaxCol - 3 'ひとつのファイルの中のシート枚数分の操作
       
    Sheet_Name = ThisWorkbook.Sheets("リスト").Cells(i + 1, j + 3).Value
    
    'マクロ進行状況の途中確認
    MsgBox "今から「" & ThisWorkbook.Sheets("リスト").Cells(i + 1, 3).Value & "」の" & j & "枚め「" & Sheet_Name & "」を印刷します"
    
    PrintBook.Activate
    Sheets(Sheet_Name).Activate
    
    'ドキュワークスで印刷
    ActiveWindow.SelectedSheets.PrintOut Copies:=1, ActivePrinter:= _
      "DocuWorks Printer on Ne54:"
 
  Next j

  ActiveWorkbook.Close (False)

Next i
MsgBox "印刷終了"
End Sub

【74598】Re:エクセルファイルと中のシートをリス...
発言  こたつねこ  - 13/8/1(木) 22:58 -

引用なし
パスワード
   はんぎょじん さん、こんばんは

なかなか、回答がつかないようですね。
考え方のヒントのみですが、印刷順番が変わってしまうということでしたら、
印刷後にプリンタスプーラを確認してプリンタスプーラからデータがなくなっ
たことを確認して次のシートを印刷するようにしてみてはいかがでしょうか。

>何かのヒントでも頂ければありがたいです。

【74623】Re:エクセルファイルと中のシートをリス...
お礼  はんぎょじん E-MAIL  - 13/8/12(月) 11:59 -

引用なし
パスワード
   こたつねこさん、ありがとうございました。
いまだ未解決ですが、問題点はご指摘のところにあるのかもしれません。
ひきつづき、方法を考えてみます。

1416 / 13646 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free