Excel VBA質問箱 IV

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

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


4149 / 13644 ツリー ←次へ | 前へ→

【58160】複数のシートをプリントするには。 おかちゃん 08/10/6(月) 20:39 質問[未読]
【58175】Re:複数のシートをプリントするには。 にぃ 08/10/7(火) 14:04 発言[未読]
【58182】Re:複数のシートをプリントするには。 おかちゃん 08/10/7(火) 20:28 お礼[未読]
【58185】Re:複数のシートをプリントするには。 にぃ 08/10/8(水) 9:50 回答[未読]
【58191】Re:複数のシートをプリントするには。 おかちゃん 08/10/8(水) 20:34 お礼[未読]

【58160】複数のシートをプリントするには。
質問  おかちゃん  - 08/10/6(月) 20:39 -

引用なし
パスワード
   宜しくお願いします。

  Dim buf As String
  buf = Dir("C:\Documents and Settings\Owner\My Documents\Test\*.*")
  Do While buf <> ""   
    buf = Dir()
  Loop
上記のコードでフォルダ(Test)の中にある3個のファイル01001xls,01002xls,01008xlsを読み込んで01001xlsのsheet("01001")の
Range("A1:H3")を01002xlsのsheet("01002")のRange("A1:H6")を
01008xlsのsheet("01008")のRange("A1:H5")を一枚の紙にプリントするには
どうすればいいでしょうか、教えて下さい。

【58175】Re:複数のシートをプリントするには。
発言  にぃ  - 08/10/7(火) 14:04 -

引用なし
パスワード
   ▼おかちゃん さん:

こんにちは。

おかちゃんさんのイメージされているのと少し違って
また邪道ぽくなってしまいますが、

作業しているエクセルで新しいシートを作成し、(もちろんVBAを使って)
そこに指定した3つのエクセルを順番に開き新しいシートに
上から順番にコピーし、そのまま印刷作業までもっていくのはどうでしょう?
自分が考えた作業では、そのあと作成したシートは削除します。
(残してもいいですが、邪魔かと)

もし、このような作業でよければサンプルコードも作ってみましたので
ご連絡ください。

ちなみに自分ではそのまで詳しいわけではないので
この考えしか思いつきませんでしたが、ほかにも方法があるかもしれません。

【58182】Re:複数のシートをプリントするには。
お礼  おかちゃん  - 08/10/7(火) 20:28 -

引用なし
パスワード
   にぃさんこんにちは。
回答有難う御座います。
参考にしたいと思いますので送って頂けますか。
お願いします。

【58185】Re:複数のシートをプリントするには。
回答  にぃ  - 08/10/8(水) 9:50 -

引用なし
パスワード
   ▼おかちゃん さん:
おはようございます。

サンプルコードは以下のとおりです。

Sub sample()

  Dim Wrbk As Object
  Dim row As Integer

  Worksheets.Add.Name = "サンプル"
  
  Set Wrbk = Application.Workbooks.Open("C:\test用\01001.xls")
  
  Wrbk.Worksheets("01001").Range("A1:H3").Select
  Selection.Copy
  Workbooks("Book1.xls").Activate '現在使用しているエクセルの名前
  Sheets("サンプル").Range("A1").Select
  Selection.PasteSpecial
  Application.CutCopyMode = False
  
  Wrbk.Close False
  Set Wrbk = Nothing
  
  
  Set Wrbk = Application.Workbooks.Open("C:\test用\01002.xls")
  
  Wrbk.Worksheets("01002").Range("A1:H6").Select
  Selection.Copy
  Workbooks("Book1.xls").Activate '現在使用しているエクセルの名前
  Sheets("サンプル").Select
  
  row = 1
  
  Do Until Cells(row, 1) = ""
  
    row = row + 1
    
  Loop
  
  Cells(row, 1).Select
  Selection.PasteSpecial
  Application.CutCopyMode = False
  
  Wrbk.Close False
  Set Wrbk = Nothing
  
  
  Set Wrbk = Application.Workbooks.Open("C:\test用\01003.xls")
  
  Wrbk.Worksheets("01003").Range("A1:H5").Select
  Selection.Copy
  Workbooks("Book1.xls").Activate '現在使用しているエクセルの名前
  Sheets("サンプル").Select
  
  row = 1
  
  Do Until Cells(row, 1) = ""
  
    row = row + 1
    
  Loop
  
  
  Cells(row, 1).Select
  Selection.PasteSpecial
  
  
  Application.CutCopyMode = False
  
  Wrbk.Close False
  Set Wrbk = Nothing
  
  
  Worksheets("サンプル").Activate
  ActiveSheet.PageSetup.PrintArea = ""          '印刷範囲クリア
  
  ActiveWindow.SelectedSheets.PrintPreview          '印刷プレビュー表示
  
  
  Application.DisplayAlerts = False '削除確認メッセージ非表示
  ThisWorkbook.Worksheets("サンプル").Delete
  Application.DisplayAlerts = True  '削除確認メッセージ表示
  

End Sub


これで動くと思います。
もしサンプルシートを削除したくなかった場合は
最後の3行を消すかコメントにしてください。

【58191】Re:複数のシートをプリントするには。
お礼  おかちゃん  - 08/10/8(水) 20:34 -

引用なし
パスワード
   にぃさん、有難う御座いました。
試してみようと思います。
また教えてください。

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