ID非公開

2020/8/6 19:31

22回答

エクセルVBA初心者です。 以下の作業をマクロで実行したいのですが、コードの書き方についてご教授お願い致します。

エクセルVBA初心者です。 以下の作業をマクロで実行したいのですが、コードの書き方についてご教授お願い致します。 エクセルブックを開く⇒保護がかかっているシートは保護を解除する⇒非表示設定になっているシートはすべて表示する⇒ブック全体に存在する単語を全て置換する⇒元々保護がかかっていたシートのみ保護を再度かける⇒元々非表示になっていたシートのみ再度非表示にする⇒保存してブックを閉じる 複数のエクセルファイルに対して置換作業を行わなければいけないのですが、 非表示になっているシートや保護がかかっているシートの名前や順番などに規則性がないのと 再度保護をかけ直したり非表示にするというコードが思いつかないためマクロ作成に行き詰っており、困っています。 お手数ですがよろしくお願いします。

Visual Basic | Excel38閲覧xmlns="http://www.w3.org/2000/svg">250

ベストアンサー

0

新しいブックを用意してシートにコマンドボタンを設置して、Clickイベントに以下を。 対象となるブックを一気に処理することも可能ですが、念のため1ブックづつ行うことにしました。 ボタンをクリックすると、ファイルを開くダイアログが表示されるので、対象となるブックを選択して下さい。 続いて、置換前の文字列を入力します。 続いて、置換後の文字列を入力します。 以上で、選択したブックを開き、置換し、保存します。 保存時は、念のため問い合わせが出るようにしています。 保護・非表示は元のままです。 Dim FilePath Dim WB As Workbook, WS As Worksheet Dim Ret, Mae, Ato, temp As Boolean Dim FlgPrtc, FlgDisp With Application.FileDialog(msoFileDialogFilePicker)    If .Show = True Then       FilePath = .SelectedItems(1)    Else       Exit Sub    End If End With Application.DisplayAlerts = False Do: DoEvents    Ret = InputBox("置換「前」の文字列を入力して下さい。" & vbCr & "(ワイルドカード使用可)")    If Ret = "" Then       Ret = MsgBox("中止しますか?", vbQuestion + vbYesNo)       If Ret = vbYes Then          Application.DisplayAlerts = True          Exit Sub       End If    Else       Mae = Ret       Exit Do    End If Loop Do: DoEvents    Ret = InputBox("置換「後」の文字列を入力して下さい。" & vbCr & "(ワイルドカード使用可)")    If Ret = "" Then       Ret = MsgBox("中止しますか?", vbQuestion + vbYesNo)       If Ret = vbYes Then          Application.DisplayAlerts = True          Exit Sub       End If    Else       Ato = Ret       Exit Do    End If Loop Application.DisplayAlerts = True Set WB = Workbooks.Open(FilePath) For Each WS In WB.Worksheets    Select Case WS.ProtectContents       Case True: FlgPrtc = True: WS.Unprotect       Case False: FlgPrtc = False    End Select    FlgDisp = WS.Visible    temp = WS.Cells.Replace(Mae, Ato)    If FlgPrtc = True Then       WS.Protect    End If    WS.Visible = FlgDisp Next WS WB.Close

ThanksImg質問者からのお礼コメント

ご丁寧にありがとうございます。お陰様で出来ました。 困っていたところを助けていただき、ありがとうございました。

お礼日時:8/7 11:27

その他の回答(1件)