価格表と原価表など、一緒のブックにしておくと便利なのだけれど、 人には見せたくないという時がありませんか? Excelでは、他の人に見せたくないシートを非表示にすることができるのです。 EXCEL技BEST 4回. Excel VBAでブック内の使われていない不要な非表示シートを一括削除する方法を紹介します。手動では大変な処理をVBAで一括処理します。しかも必要に応じてファイルのタイムスタンプ(更新日時)を変更しないで削除することが可能な処理方法です。 google_ad_height = 90; シートを非表示にします。ただしExcel上で再表示することが可能です。 Falseを指定した場合も同じ意味になります。 xlSheetVeryHidden: 2: シートを非表示にします。Excel上での再表示はできません。 xlSheetVisible-1. 第8回 非表示シートを必要なときだけ表示させる| 1/4 | 2/4 | 3/4 | 4/4 マクロの中身を確認する 記録したマクロのどこが誤りだったのか、また、マクロの記述を正しいコードに書き換えるため、VBエディタを起動してみましょう。 /* Unit3 */ //-->. Excel VBA:指定した列を非表示にする ... Excel VBAで、特定のシートの値をすべてコピーして、新しい別のExcelブックを生成してそのシートに貼りつけます。 なお、ブックを生成した後は、各自で保存します。 コード Worksheets(… google_ad_slot = "0887539173"; Excelワークブックは、新規で一から作っていくと大変なので、過去に使っていたものや誰かが作ったものを流用するケースが多いと思いますしかし、このようにファイルを使いまわしていたり、複数の人が編集を加えている状況の場合、知らないうちに不要なシートが隠れていたりすることが往々にしてあると思います。私は今までに何度も出くわしています(-_-;), その結果、ファイルサイズが肥大化してしまい、最悪の場合「Excelが開かない!」「作業中に固まった!」「データが保存できない!」「データが破損!」等々、ファイルが重いために作業効率が大幅に下がたりしなど悲しい経験をした方も多いのではないでしょうか, ・使っていない不要な「非表示シート」がある・隠れて見えない不要な「オブジェクト」がたくさん残っている・過去に編集したセルの状態「書式設定」が残っている・手動では消せないほど大量の使っていない「名前定義」がある, (1)シートの最下部にあるタブを 右クリック(2)「再表示」から非表示となって いるシートを選択し再表示させる(3)不要なシートタブを選択し  右クリックで「削除」を選択, ・このフローは「フォルダ指定」と「ファイル選択指定」の両方をまとめて表示しています・それぞれファイル操作の細かい動作に相違点があります(このあと解説します), ・「A2セル」にフォルダパスを表示します・「A4セル」以下に処理したファイル名を表示します・「B4セル」以下にファイル毎の削除したシート数を表示します・「C3セル」に「1」が入力されていればファイルの更新日時を変更しません・「D12~D14」は非表示シートでも削除したくないシート名を入力しておきます・実行は二つのボタンのどちらかを押下してくださいこんな感じです(^^), ・sh.Visible = xlSheetHidden で非表示かどうかを判定しています・Select Case sh.Name  で除外シートを確認するために動作を分岐しています・Case Else: sh.Delete ここで非表示シートを削除しています削除自体はこのたった一行です(^^♪, ・それでは、VBAコードを紹介します・二つともほとんど同じように見えますが微妙に違っています・ファイル選択で選択したファイルは配列でフォルダ内ファイルはオブジェクトです・なので同じ動作をさせるためにオブジェクトに変換させる作業を入れています・②のコードの45行目「fn = fso.GetFilename(f) ‘ファイル名セット」など・これでファイルオブジェクトに変換しています・「f」からファイル名だけ抜き取ったのでは動作しない部分があるためです, ・コード内にコメントを入れているので細かい部分は解説を省略します・24行目以下で、Excel.Application のオブジェクトを用意しています・Excelをインスタンス化して開くためです(画面のチラつきを防止するため)・42~46行目で対象ファイルを開いています・44行目の「If GetInputState() Then DoEvents」は重いファイル対策用です DoEventsの代わりに②コードの先頭部分で使用を宣言するコードを1行入れています Private Declare Function GetInputState Lib “USER32” () As Long・74行目以降は、Shell.Application で閉じたファイルの更新日時を元に戻す処理です, ・コード内にコメントを入れているので細かい部分は解説を省略します・①の「フォルダ内ファイル」と基本的に同じロジックのコードです・15行目のとおり、選択ファイルは配列になっています(オブジェクトでは無い)・ので、要所でオブジェクトに変換しないとうまく動作しません・45行目や47行目などがその例です。変換しないとオブジェクトエラーとなります, ・非表示シートはファイルを使いまわししているうちに、いつの間にか存在を忘れてしまい、気づいたらファイルが肥大化しているなんてことになっていたりします(^^;・その肥大化したファイルを気づかずに各部署に配布してしまうなんてことも・そんな時にこのツールを使えば、あっという間にスリム化できます・細かいところに手が届くように、「パスワード設定」や「削除対象外設定」など・思いついた部分は盛り込めたと思います・「フォルダ指定」と「ファイル選択指定」の両方ともケースによって使い分けできますので是非一度使ってみてください(^^)/, 今回の記事はいかがだったでしょうか。お役に立てたなら幸いです(^^;是非!サンプルファイルがありますのでそのまま使ってみてください(^^)/【今後の記事内容はどうしようかなぁ・・・】・今までに紹介した記事で使用したコードの改変も検討します・高速化した「VlookUp関数」のVBAでの活用法を再検討してみたいと思います・その他「小ネタいろいろ」などなど・・・・・・今後これらのどれかについて記事にしていきたいと思います。ご期待ください(^^)/, 記事で使用したサンプルファイルがダウンロードできるページを設置していますこちら(このリンク先)からご利用ください, プロフィール画像は愛犬「くるみ」 ブログ名の「くるみこ」kurumico.comはここからつけました。 このブログをとおして、自分の経験から少しでも皆さまのお役に立てる情報が発信できればと思い立ち上げました。VBAは独学ですが、過去にはVBでフリーソフトを作っていた経験と仕事でExcelVBAを酷使している中での気づきなどを発信していきます。, 気になった物とExcelVBAについて情報発信していきます/kurumico.com, 【Excel VBA】の記事内で使ったサンプルファイルを(Zipファイルで)ダウンロードできるようにしました。記事内では細かい部分の解説が不十分ですが、実際にファイルをダウンロードして実行することで使えるのかどうか見ていただけたら幸いです。, 44行目の「If GetInputState() Then DoEvents」は重いファイル対策用です, 74行目以降は、Shell.Application で閉じたファイルの更新日時を元に戻す処理です. thisYear = date.getFullYear(); 見せたくないシートを非表示にしたい. date = new Date(); 完成したexcelファイルを社内等で配布する場合に覚えておきたいテクニックです。 excelファイルの中には「完成シート」の他に「元データ」や「見せたくないシート」も含まれているはずです。vlookupなどの関数を使う場 google_ad_width = 728; ートを削除する」を参考にしてください。,