Excel VBA質問箱 IV

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

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


12132 / 13645 ツリー ←次へ | 前へ→

【12135】同じ様式のファイルを一括で印刷したい やまと 04/3/24(水) 18:12 質問
【12136】Re:同じ様式のファイルを一括で印刷したい ichinose 04/3/24(水) 18:27 発言
【12137】Re:同じ様式のファイルを一括で印刷したい やまと 04/3/24(水) 18:49 お礼
【12139】Re:同じ様式のファイルを一括で印刷したい やまと 04/3/24(水) 19:46 質問
【12142】Re:同じ様式のファイルを一括で印刷したい ichinose 04/3/24(水) 21:46 発言
【12147】Re:同じ様式のファイルを一括で印刷したい やまと 04/3/25(木) 1:15 お礼
【12148】Re:同じ様式のファイルを一括で印刷したい ichinose 04/3/25(木) 8:16 発言
【12169】Re:同じ様式のファイルを一括で印刷したい ichinose 04/3/25(木) 16:57 発言
【12191】Re:同じ様式のファイルを一括で印刷したい やまと 04/3/26(金) 12:22 お礼

【12135】同じ様式のファイルを一括で印刷したい
質問  やまと  - 04/3/24(水) 18:12 -

引用なし
パスワード
   お世話になっております。

ファイルが200こあります。
特定の複数シートを200こ一括で印刷したいのですがよろしくお願いします。
ファイルは全て同じ様式になっています。

よろしくお願いいたします。

【12136】Re:同じ様式のファイルを一括で印刷したい
発言  ichinose  - 04/3/24(水) 18:27 -

引用なし
パスワード
   ▼やまと さん:
こんばんは。

>お世話になっております。
>
>ファイルが200こあります。
>特定の複数シートを200こ一括で印刷したいのですがよろしくお願いします。
>ファイルは全て同じ様式になっています。
>
>よろしくお願いいたします。
例えば、アクティブブックの左からSheet1、Sheet2、Sheet3とあったとして、
Sheet1とSheet3を一括印刷しようした場合、

'============================================
Sub test()
  myarray = Array("sheet1", "sheet3")
  Sheets(myarray).PrintOut
End Sub

で印刷可能です。
この方法を応用できませんか?
Excel2000で確認しました。

【12137】Re:同じ様式のファイルを一括で印刷したい
お礼  やまと  - 04/3/24(水) 18:49 -

引用なし
パスワード
   ▼ichinose さんへ
ありがとうございます。
うまくいきました。
ただ、勉強不足のため、応用が利きませんの教えていただくと助かります。

ファイル名の一覧表a1:a200がありますので、なんとか利用して一括で印刷したいのですが、、、よろしくお願いいたします。

>例えば、アクティブブックの左からSheet1、Sheet2、Sheet3とあったとして、
>Sheet1とSheet3を一括印刷しようした場合、
>
>'============================================
>Sub test()
>  myarray = Array("sheet1", "sheet3")
>  Sheets(myarray).PrintOut
>End Sub
>
>で印刷可能です。
>この方法を応用できませんか?
>Excel2000で確認しました。

【12139】Re:同じ様式のファイルを一括で印刷したい
質問  やまと  - 04/3/24(水) 19:46 -

引用なし
パスワード
   お世話になっております。

ファイルが200こあります。
特定の複数シートを200こ一括で印刷したいのですがよろしくお願いします。
ファイルは全て同じ様式になっています。

ファイル名をae10:ae210を入力し、そのセルにハイパーリンクでジャンプするようにしました。そこで、1.ae10をクリック、2.そのファイル上で複数シートを選択、3.印刷、4.ファイルを閉じる という作業を自動記録でとりました。
それを、繰り返し次のファイルを印刷するためにfor..nextをくわえたのですが
うまく動きません。
2日前からVBAを勉強し始めた素人なのですがよろしくお願いいたします。

Sub Macro2()

Dim これは変数 As Long
For これは変数 = 1 To 200
  
  Cells(39, これは変数 + 9).Select
  Selection.Hyperlinks(1).Follow NewWindow:=False, AddHistory:=True
  Sheets(Array("表紙", "様式1-1", "様式2-1")).Select
  Sheets("様式2-1").Activate
  ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
  ActiveWindow.Close
Next これは変数
End Sub

【12142】Re:同じ様式のファイルを一括で印刷したい
発言  ichinose  - 04/3/24(水) 21:46 -

引用なし
パスワード
   ▼やまと さん:
こんばんは。

>お世話になっております。
>
>ファイルが200こあります。
>特定の複数シートを200こ一括で印刷したいのですがよろしくお願いします。
>ファイルは全て同じ様式になっています。
>
>ファイル名をae10:ae210を入力し、そのセルにハイパーリンクでジャンプするようにしました。そこで、1.ae10をクリック、2.そのファイル上で複数シートを選択、3.印刷、4.ファイルを閉じる という作業を自動記録でとりました。

ということは、ae10〜ae210のセルにはファイル名が入っていない可能性もありますね?


>それを、繰り返し次のファイルを印刷するためにfor..nextをくわえたのですが
>うまく動きません。
>2日前からVBAを勉強し始めた素人なのですがよろしくお願いいたします。
>
>Sub Macro2()
>
>Dim これは変数 As Long
>For これは変数 = 1 To 200
>  
>  Cells(39, これは変数 + 9).Select
'  ちなみに↑だとae10〜ae210を取得しませんよ!!
>  Selection.Hyperlinks(1).Follow NewWindow:=False, AddHistory:=True
>  Sheets(Array("表紙", "様式1-1", "様式2-1")).Select
>  Sheets("様式2-1").Activate
>  ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
>  ActiveWindow.Close
>Next これは変数
>End Sub


私は、こんな風にしてみました。
ae10〜ae210のセルにリンクされたブックを 開いて、印刷、閉じる
を繰り返します。
一覧シートをアクティブにした状態でmainを実行してみてください


'==============================================================
Sub main()
  Dim 一覧表シート As Worksheet
  Dim 印刷ブック As Workbook
  Dim これは変数 As Long
  Application.ScreenUpdating = False
  Set 一覧表シート = ActiveSheet
  With 一覧表シート
   For これは変数 = 10 To 210
     If .Cells(これは変数, 31).Hyperlinks.Count > 0 Then
      Set 印刷ブック = bk_open(.Cells(これは変数, 31).Hyperlinks(1).Address)
      If Not 印刷ブック Is Nothing Then
        Call bk_print(印刷ブック, Array("表紙", "様式1-1", "様式2-1"))
        印刷ブック.Close False
        End If
      End If
     DoEvents
     Next
   End With
  Application.ScreenUpdating = True
End Sub
'==================================================
Function bk_open(flnm) As Workbook
'指定されたブックをオープン
  On Error Resume Next
  Set bk_open = Workbooks.Open(flnm)
  If Err.Number <> 0 Then
   Set bk_open = Nothing
   End If
  On Error GoTo 0
End Function
'==================================================
Function bk_print(bk As Workbook, pr_sheets) As Long
'指定ブックの指定されたシートを印刷
  On Error Resume Next
  bk.Sheets(pr_sheets).PrintOut
  bk_print = Err.Number
  On Error GoTo 0
End Function


200ファイルではテストしてませんが・・・。

【12147】Re:同じ様式のファイルを一括で印刷したい
お礼  やまと  - 04/3/25(木) 1:15 -

引用なし
パスワード
   ▼ichinose さん:
ありがとうございます。
作って頂いたものをコピーし、貼り付けたのですが最初のファイルのみしか印刷されません。なぜでしょうか?

また、うまく動かないのでわからないのですが、作って頂いたものと私が作ったもの(セルの値などが間違っていたもの)どう違うのでしょうか?


>私は、こんな風にしてみました。
>ae10〜ae210のセルにリンクされたブックを 開いて、印刷、閉じる
>を繰り返します。
>一覧シートをアクティブにした状態でmainを実行してみてください
>
>
>'==============================================================
>Sub main()
>  Dim 一覧表シート As Worksheet
>  Dim 印刷ブック As Workbook
>  Dim これは変数 As Long
>  Application.ScreenUpdating = False
>  Set 一覧表シート = ActiveSheet
>  With 一覧表シート
>   For これは変数 = 10 To 210
>     If .Cells(これは変数, 31).Hyperlinks.Count > 0 Then
>      Set 印刷ブック = bk_open(.Cells(これは変数, 31).Hyperlinks(1).Address)
>      If Not 印刷ブック Is Nothing Then
>        Call bk_print(印刷ブック, Array("表紙", "様式1-1", "様式2-1"))
>        印刷ブック.Close False
>        End If
>      End If
>     DoEvents
>     Next
>   End With
>  Application.ScreenUpdating = True
>End Sub
>'==================================================
>Function bk_open(flnm) As Workbook
>'指定されたブックをオープン
>  On Error Resume Next
>  Set bk_open = Workbooks.Open(flnm)
>  If Err.Number <> 0 Then
>   Set bk_open = Nothing
>   End If
>  On Error GoTo 0
>End Function
>'==================================================
>Function bk_print(bk As Workbook, pr_sheets) As Long
>'指定ブックの指定されたシートを印刷
>  On Error Resume Next
>  bk.Sheets(pr_sheets).PrintOut
>  bk_print = Err.Number
>  On Error GoTo 0
>End Function
>
>
>200ファイルではテストしてませんが・・・。

【12148】Re:同じ様式のファイルを一括で印刷したい
発言  ichinose  - 04/3/25(木) 8:16 -

引用なし
パスワード
   ▼やまと さん:
おはようございます。
>作って頂いたものをコピーし、貼り付けたのですが最初のファイルのみしか印刷されません。なぜでしょうか?

私の方ではハイパーリンクを設定したものについては印刷されていますが・・。

ひとつひとつチェックしていきましょう!!


>
>
>>私は、こんな風にしてみました。
>>ae10〜ae210のセルにリンクされたブックを 開いて、印刷、閉じる
>>を繰り返します。
>>一覧シートをアクティブにした状態でmainを実行してみてください
>>
>>
>>'==============================================================
>>Sub main()
>>  Dim 一覧表シート As Worksheet
>>  Dim 印刷ブック As Workbook
>>  Dim これは変数 As Long
>>  Application.ScreenUpdating = False
>>  Set 一覧表シート = ActiveSheet
>>  With 一覧表シート
>>   For これは変数 = 10 To 210
>>     If .Cells(これは変数, 31).Hyperlinks.Count > 0 Then
>>      Set 印刷ブック = bk_open(.Cells(これは変数, 31).Hyperlinks(1).Address)
       Debug.Print これは変数 & "--" & .Cells(これは変数, 31).Hyperlinks(1).Address & _
       "---" & .Cells(これは変数, 31).Hyperlinks(1).Name
'↑これを入れてイミディエイトウインドウに何が表示されますか?
>>      If Not 印刷ブック Is Nothing Then
>>        Call bk_print(印刷ブック, Array("表紙", "様式1-1", "様式2-1"))
>>        印刷ブック.Close False
>>        End If
>>      End If
>>     DoEvents
>>     Next
>>   End With
>>  Application.ScreenUpdating = True
>>End Sub
>>'==================================================
>>Function bk_open(flnm) As Workbook
>>'指定されたブックをオープン
>>  On Error Resume Next
>>  Set bk_open = Workbooks.Open(flnm)
>>  If Err.Number <> 0 Then
>>   Set bk_open = Nothing
>>   End If
>>  On Error GoTo 0
>>End Function
>>'==================================================
>>Function bk_print(bk As Workbook, pr_sheets) As Long
>>'指定ブックの指定されたシートを印刷
>>  On Error Resume Next
>>  bk.Sheets(pr_sheets).PrintOut
>>  bk_print = Err.Number
>>  On Error GoTo 0
>>End Function

私が作成したサンプルにはae10〜ae12までにリンクを設定しましたが、
イミディエイトウィンドウには、

10--D:\My Documents\TESTエリア\印刷Samp1.xls---aaaa
11--TESTエリア\印刷Samp2.xls---bbbb
12--TESTエリア\印刷Samp3.xls---cccc

のように
行番号---相対パス----リンク文字列  が表示されます。

確認してみて下さい。

【12169】Re:同じ様式のファイルを一括で印刷したい
発言  ichinose  - 04/3/25(木) 16:57 -

引用なし
パスワード
   ▼やまと さん:
こんにちは。

>また、うまく動かないのでわからないのですが、作って頂いたものと私が作ったもの(セルの値などが間違っていたもの)どう違うのでしょうか?
こっちの話を忘れていました。

「うまく動かない」というのを詳しく知りたいですね。
エラーになるとか、何もおきないとか・・・・。

私は、当初、一覧表シートのセルae10〜ae210にファイル名(フルパスで)が
入っているものだと思っていたのです。

よって、オーソドックス(のつもり)にブックを開く---印刷---閉じる
の繰り返しのコードを書きました。途中でハイパーリンクしているという主旨の投稿を拝見しましたので、ファイル名をHyperlink オブジェクトから取得するようにしました。

やまとさんのコードをちょっとだけ変更して実行してみました。
'========================================================
Sub Macro2()

Dim これは変数 As Long
For これは変数 = 10 To 210
 
  Cells(これは変数, 31).Hyperlinks(1).Follow NewWindow:=False, AddHistory:=True
  Sheets(Array("sheet1", "sheet2", "sheet3")).PrintOut
  ActiveWorkbook.Close
Next これは変数
End Sub

私は、ae10〜ae12までにしかハイパーリンクを設定していない状態で実行しましたから
「これは変数」の値が13のときに

>Cells(これは変数, 31).Hyperlinks(1).Follow NewWindow:=False, AddHistory:=True

でエラー(インデックスが有効範囲にありません)になりましたが、セルae10〜ae12までは正しく印刷されていますよ!!

【12191】Re:同じ様式のファイルを一括で印刷したい
お礼  やまと  - 04/3/26(金) 12:22 -

引用なし
パスワード
   ▼ichinose さんへ

ありがとうございます。

ようやく印刷できました。

マクロの記述もっと勉強します。

またよろしくお願いいたします

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