[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『複数ブックの複数シートを非表示にしたい』(ななこ)
いつも参考にさせております。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.