[[20080602164739]] 『マクロ:同一フォルダ内の複数ファイルの各シート』(がちゃ) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『マクロ:同一フォルダ内の複数ファイルの各シートをカラーコピーする方法』(がちゃ)

 まったくのマクロ初心者です。

 デ ィスクトップ上のフォルダーの中にある県別のファイルの中から
 シートA、シートB、シートCを選択しカラー出力するマクロを組みたいです。

    愛知ファイルを開く⇒シートA・シートB・シートCを選択しカラー出力
   ⇒東京ファイルを開く⇒シートA・シートBを選択しカラー出力
   ⇒大阪ファイルを開く⇒シートA・シートB・シートCを選択しカラー出力
   ⇒各都道府県繰り返し

 県別のファイルの中にはシートA・B・Cがすべてある県もあればシートA・Bしかないものもあります。

 今、自動マクロで記録をし、実行をすると「実行エラー'9': インデックスが有効範囲にありません。」となってしまいます。

 お分かりになる方がいらっしゃるようでしたら教えてください。

 ////////////////////////////////////////////////////////////////////
 Sub 印刷()
'
' 印刷 Macro
' マクロ記録日 : 2008/6/2  ユーザー名 : △△△△

'

    Application.WindowState = xlMinimized
    ActiveWindow.ScrollWorkbookTabs Position:=xlLast
    Sheets(Array("★★★★", "●●●●")).Select
    Sheets("★★★★").Activate
    ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
    Windows("愛媛.xls").Activate
    Sheets(Array("★★★★", "●●●●")).Select
    Sheets("★★★★").Activate
    Windows("宮崎.xls").Activate
    Windows("愛媛.xls").Activate
    ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
    Windows("Book1").Activate
End Sub


 エラーとなる構文も提示していただけると原因が判りやすいのですが。
ヤマカンで最初の
    Windows("愛媛.xls").Activate
ではないですか?
「??ファイルを開く」となっていますが、Activateメソッドは
「すでに開かれているブックをアクティブにする」と言うものなので、
目的のブックが閉じている場合は
「実行エラー'9': インデックスが有効範囲にありません。(そういう
名前のWindowは開かれていないから、Activeに出来ないよ!)」となり
ます。
ブックを開いた状態から記録するのではなくて、ブックを開くところも
記録してみましょう。
(みやほりん)(-_∂)b


みやほりんさんありがとうございます。

エラーとなる構文は黄色になる構文ってことでしょうか?
だとすると

   Sheets(Array("★★★★", "●●●●")).Select

です。

ブックを開くところから記録はしているんですが・・・。
質問を分割で考えたほうがいいんでしょうか?

『ディスクトップ上の同一フォルダの中にある複数ファイルを開くマクロ』
をまず解決したいのですが、方法はありますか??

がちゃ


 2つのシート:"★★★★", "●●●●"のブックがアクティブになっていないか
 又は
 2つのシート:"★★★★", "●●●●"が存在しないかのどちらかでは?

 (1or8)

 1or8さん

ありがとうございます。
ディスクトップにファイルもあって、その中にはシートもあるんですが・・・。

困りました。

ファイルを開くだけのマクロってどうしたらいいんでしょうか?


 ブックを開くコードが記録によって分かったら、必要なブック数だけ繰り返せばいいのでは?

 Workbooks.Open "愛媛.xls"
 Sheets(Array("★★★★", "●●●●")).Select
 ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
 Workbooks.Open "宮崎.xls"
 Sheets(Array("★★★★", "●●●●")).Select
 ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True

 (1or8)

 「ブックに含まれる全てのシートを印刷する」というのなら、
印刷ダイアログのオプションに「ブック全体」と言うのがあります。
これを選択して印刷するとシートを指定する必要がないでしょう。
 
    Workbooks.Open Filename:="C:\愛媛.xls"
    ActiveWorkbook.PrintOut Copies:=1, Collate:=True
    ActiveWindow.Close
    Workbooks.Open Filename:="C:\宮崎.xls"
    ActiveWorkbook.PrintOut Copies:=1, Collate:=True
    ActiveWindow.Close
    ・
  ・
  (ブックの数だけ繰り返し)
 
【フォルダ内ブック一括印刷 関連ログ】
[[20060908131836]] 『複数ファイルの一括印刷』(TMG)
[[20070117130924]] 『フォルダの中にある複数のエクセルを一度に印刷したいのです。』(石田)
 
ちなみに、「ディスクトップ(円盤上)」ではなくて、
「デスクトップ(机上)」
 
(みやほりん)(-_∂)b

1or8さん
みやほりんさん

がちゃです。
とりあえず解決しました!!!
ありがとうございました。

Workbooks.Open Filename:="C:\Documents and Settings\【社員番号】デスクトップ\【フォルダ名】\東京.xls"

    Sheets(Array("【シートA】", "【シートB】", "【シートC】")).Select
    Application.ActivePrinter = "カラープリンタ on Ne06:"
    ActiveWindow.SelectedSheets.PrintOut Copies:=1, ActivePrinter:= _
        "カラープリンタ on Ne06:", Collate:=True
    ActiveWindow.Close

上記の繰り返し。


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.