Excelマクロを削除するマクロについての質問です。
Excelマクロを削除するマクロについての質問です。
現在Excel2003で、記入に便利なようにマクロを使って「パソコンボランティア活動報告書」(以下"活動報告書")を作っています。
この活動報告書をセキュリティ警告(マクロを有効にする等)が出ないようにしてホームページに載せたいので、私なりに「新しいマクロの記録」を使って、「マクロ削除」のマクロを作ってみました。
しかしこれでは今までのマクロは削除されますが、「マクロ削除」マクロが残ってしまいます。
今までのマクロはもちろんのこと、「マクロ削除」マクロを消すためにはどうすればいいのでしょうか?
Sub マクロ削除()
'
' マクロ削除 Macro
'
'
ActiveSheet.Unprotect
ActiveWindow.SmallScroll Down:=9
Range("Q27:R27").Select
Selection.ClearContents
ActiveWindow.SmallScroll Down:=-21
Sheets("リスト項目").Visible = True
Application.DisplayAlerts = False
Sheets("リスト項目").Delete
Cells.Select
With Selection.Validation
.Delete
.Add Type:=xlValidateInputOnly, AlertStyle:=xlValidAlertStop, Operator _
:=xlBetween
.IgnoreBlank = True
.InCellDropdown = True
.IMEMode = xlIMEModeNoControl
.ShowInput = True
.ShowError = True
End With
Range("E4:P4,J5:AG5,E6:N6,R6:AG6,F7:J7,O7:AG7,C15:AG17").Select
Range("C15").Activate
ActiveWindow.SmallScroll Down:=9
Range("E4:P4,J5:AG5,E6:N6,R6:AG6,F7:J7,O7:AG7,C15:AG17,I27:O27,C28:AG41"). _
Select
Range("C28").Activate
ActiveWindow.SmallScroll Down:=15
Range( _
"E4:P4,J5:AG5,E6:N6,R6:AG6,F7:J7,O7:AG7,C15:AG17,I27:O27,C28:AG41,C42:AG44"). _
Select
Range("C42").Activate
Selection.ClearComments
ActiveWindow.SmallScroll Down:=-36
Range("AC4:AE4,F5:I5,J5:AG5,E6:N6,R6:AG6,F7:J7,O7:AG7").Select
Range("O7").Activate
Selection.ClearContents
Range("E4:P4").Select
ChDir "C:\work"
ActiveWorkbook.SaveAs Filename:="C:\work\yyyymmddパソコンボランティア活動申請及び報告書.xls", _
FileFormat:=xlNormal, Password:="", WriteResPassword:="", _
ReadOnlyRecommended:=False, CreateBackup:=False
Range("E4:P4").Select
End Sub
お礼
早速の回答ありがとうございます。 いつもマクロ関係では勉強させていただいており、今回も勉強のつもり でお気に入りに入れていた質問内容を、いろいろ試す段階で疑問に思う ことがあり、珍しく質問しました。 >東アジアバージョンのみにしかなく、ユニバーサルに存在するフィールドコード >とのマッチング(整合性)については、考慮されていないのかもしれません。 これは確かに考えられますね。 フィールドコードそのものはユニバーサルに通じるWordの機能なので、 それを利用したルビについては PhoneticGuide を用意していても削除 することにはあまり考慮したものではないのかもしれませんね。 今回の回答も本当に勉強になりました。今後も何かとお世話になるかも しれませんがよろしくお願いします。
補足
回答している私としても反省する部分ですが、私のWordのバージョンは Office XPにあるWord2002です。 質問文に載せたURL先でのバージョンはWord2000ですが、Word2002以降 との違いはあるのでしょうか? それから >フィールドコード側が、私の勘違いでなければ、\upというスイッチ >が入りますので、それが判定できるものだと思っています。 これについて今試してみると、数式エディタの変わりに作成した数式の 一部が解除されてしまいました。\upスイッチで判別させるのは注意が 必要なようです。 そこでWord2002のルビ機能を使用したときに入る"\* jc2"を "\up"の 替わりにしても良いようですね Sub orgFuricanaClear() Dim f As Variant With ActiveDocument '一部変更 For Each f In .Fields If InStr(f.Code.FormattedText.Text, "\* jc2") > 0 Then f.Select With Selection .Range.PhoneticGuide "" End With End If Next End With End Sub これでルビだけを対象にすることは可能なようです。 ただし、ルビ部分を太字や斜体にするために"\* jc2"を削除していると 意味がないですが、私が通常使う分にはこちらのほうが使い勝手が良い ようです。 実はこの質問を立ち上げた理由の一つに、フリーで紹介しているのWord のアドインテンプレートを利用すると、ルビ以外のフィールドコードが 解除されるために、質問文のURL先で紹介しているマクロと同じもので 作成しているのではないかと思っていまして、今回のことをきっかけに 自分用のマクロを用意しておこうと思ったことがきっかけです。 もっと使い勝手が良いものを思いつきましたら、わがままな補足ですが マクロを載せていただくと嬉しいです。 今回の回答も、今後の使用においてとても役にたつものだったので回答 をしてくださり、嬉しくなりました。本当にありがとうございました。