|
■No101591 (一二三 さん) に返信 > 掲題の通りなのですが、特定のフォルダ内にある、大量のEXCELファイルがあり、 > そのEXCELを開いた時に最初に開かれるシートがバラバラな状態です。 > 全て1番目のシートに変更したいのですが、どのようにすればよろしいでしょうか。
(案1) アクティブシートを手動で変更して上書き保存する運用にする。
(案2) ファイルを順次開いて、アクティブシートを変更して上書き保存していくプログラムを書く。
(案3) 元ファイルは更新せず、ファイルが開かれたとき(例:WorkbookOpen イベント)にて 先頭シートをアクティブにするアドインを作成する。
今回は案2ですよね。 やりたいことは分かりましたが、肝心の「何が分からないのか」が書かれていない…。
・フォルダ内のファイルを列挙するには? → Dir 関数を使う。もしくは Directory オブジェクトの Files プロパティでも可。
・ファイルを開くには? → Application.Workbooks.Open メソッド。戻り値は Workbook 型の変数に Set すべし。
・第一シートをアクティブにするには? → 単純には「Workbook変数.Sheets(1).Activate」なのだけれど、一つ注意。 第一シートが非表示になっている可能性があるので、実際は For ループで 1 〜 .Sheets.Count まで列挙していき、そのシートの .Visible プロパティが 最初に xlSheetVisible を指し示すものを Activate する必要がある。
・アクティブシートを変更した後、それを保存するには? → 上書き保存なら、基本的には「Workbook変数.Save」だけで OK 。 別名で保存したいなら .SaveAs メソッド。
・保存時に確認メッセージを表示したくない → 「Application.DisplayAlerts = False」にしておけばメッセージが抑制される。 処理が終わった後は True に戻しておくこと。
・保存が終わったブックを閉じるには? → 「Workbook変数.Close」で OK 。保存後、Workbook 変数には Nothing を Set しておきましょう。 ちなみに、変更後に未保存で .Close する場合、「.Close True」や「.Close True, filePath」などとして 保存と閉じる動作を同時に行わせることもできます。
今回の要件にはなかったですが、仮に第一シートを仮にアクティブにできたとしても、 アクティブセルの位置がブックによって違っている(スクロールされた場所になっている) …という可能性はありそうですね。
|