[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『複数ブックの複数シートを非表示にしたい』(ななこ)
いつも参考にさせております。VBA初心者です。
複数ブック(同じフォルダに保存)に存在する
同じ名前の複数シートを非表示にするにはどうしたらいいでしょうか?
<例>
ブック名:北海道、青森、宮城・・・沖縄
すべて同じシート名が存在する
『フォーム』『売上』『粗利』『本数』シート
この、『フォーム』シート以外(『売上』『粗利』『本数』シート)を
どのファイルも非表示にしたいのですが、うまくいきません。。
ご教示いただけませんでしょうか。
よろしくお願い致します。
< 使用 Excel:Excel2010、使用 OS:Windows7 >
念のためなんですが VBS ですね? VBA じゃなく。
(β) 2016/06/21(火) 13:09
Sub 複数シートを非表示()
Dim SName As String
'表示対象シート
SName = "フォーム"
Sheets(Array("売上", "粗利", "台数")).Select
ActiveWindow.SelectedSheets.Visible = False
End Sub
(ななこ) 2016/06/21(火) 13:18
Sub フォームシート以外非表示()
Dim Wb As Workbook Dim Ws As Worksheet Dim myfdr As String, fName As String Dim dlg As FileDialog
Application.ScreenUpdating = False
MsgBox "ファイルが格納されているフォルダを選択してください"
Set dlg = Application.FileDialog(msoFileDialogFolderPicker) 'フォルダ選択
'キャンセルボタンクリック時にマクロを終了 If dlg.Show = False Then Exit Sub
'フォルダーのフルパスを変数に格納 myfdr = dlg.SelectedItems(1)
fName = Dir(myfdr & "\*.xls") 'フォルダ内のエクセルファイルを検索
Do Until fName = Empty '全エクセルファイル検索 Set Wb = Workbooks.Open(myfdr & "\" & fName) For Each Ws In Wb.Sheets 'ブック内の全シートで If Ws.Name <> "フォーム" Then 'シート名が「フォーム」以外なら全て非表示 Ws.Visible = False End If Next Ws '次のシートへ Wb.Close SaveChanges:=True '上書き保存して閉じる fName = Dir 'フォルダ内の次のExcelブックを検索 Loop
MsgBox "完了しました"
End Sub
(通ります) 2016/06/21(火) 13:33
対象のブックには、必ず非表示対象の3つのシートが含まれる、という条件ならば、以下のように簡単に書けたりします。
(マクロの入った、自分自身のブックは除外するようにしてます)
Sub test() Dim cPath As String Dim cFile As String
cPath = ActiveWorkbook.Path & "\" cFile = Dir(cPath & "*.xls*") While cFile <> "" If LCase(cFile) <> LCase(ActiveWorkbook.Name) Then With Workbooks.Open(cPath & cFile) .Sheets(Array("売上", "粗利", "台数")).Visible = False .Save .Close End With End If cFile = Dir Wend End Sub (???) 2016/06/21(火) 14:25
???様
ありがとうございます!ただ、なぜかエラーになってしまいました。。
今回は表示するシートが一つだけですが、逆に複数表示で一つだけ非表示にしたい場合も
あると思いますので、何が悪いのか自分なりに検証してみようと思います。
(ななこ) 2016/06/21(火) 15:00
通りますさんの方は逆に、隠したくないシート以外全てを隠すので、対象が無くてもエラーにならない訳です。
コードが長くなりますが、実用的な考え方です。
(???) 2016/06/21(火) 15:15
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.