- ベストアンサー
Excelマクロを削除するマクロについての質問
- Excel2003で、「パソコンボランティア活動報告書」というマクロを作成しています。しかし、マクロを有効にするためのセキュリティ警告が出るため、ホームページに載せる際にはマクロを削除したいと考えています。そこで、「新しいマクロの記録」を使用して、「マクロ削除」のためのマクロを作成しました。しかし、この方法だとマクロの削除はできますが、作成した「マクロ削除」マクロ自体を削除する方法がわかりません。どのようにすれば、「マクロ削除」マクロを削除することができるでしょうか?
- Excel2003で使用するマクロ「パソコンボランティア活動報告書」をホームページに載せる際にセキュリティ警告が出ないようにするため、「新しいマクロの記録」を使って「マクロ削除」のマクロを作成しました。この方法ではマクロは削除されますが、「マクロ削除」マクロ自体が残ってしまいます。どのようにすれば、「マクロ削除」マクロを削除することができるのでしょうか?
- Excel2003で、「パソコンボランティア活動報告書」というマクロを作成し、ホームページに載せるためにセキュリティ警告を避けるために「新しいマクロの記録」を使用して「マクロ削除」のためのマクロを作成しました。しかし、この方法だけだと「マクロ削除」マクロが残ってしまいます。どのようにすれば、「マクロ削除」マクロを削除することができるのでしょうか?
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
標準モジュールに登録したマクロを削除する最も安全な方法は, sub macro1() sheets.copy activeworkbook.saveas Filename:="C:\work\yyyymmddパソコンボランティア活動申請及び報告書.xls" activeworkbook.close false thisworkbook.saveas filename:="C:\work\yyyymmddパソコンボランティア活動申請及び報告書withマクロ.xls" end sub などになります。 もし,いまご質問で掲示されたマクロで「登録済みのマクロを削除している」明確な認識があるのでしたら,該当する箇所は Sheets("リスト項目").Visible = True Application.DisplayAlerts = False Sheets("リスト項目").Delete だけですので,これを上述マクロの先頭部分に追加します。 もし,ご質問に掲示されたのは正直なマクロの全文ではなく編集した内容でしたら,その削って示さなかった範囲にマクロを削除している肝心の内容が含まれていたかも知れません。確認して,そちらも勿論盛り込んでください. 他にも標準モジュールではなくシートにマクロを追加していたときは,同等の手当が必要です。 #シートモジュールと標準モジュールの使い分けについて理解していない時は,いま「どういう風にエクセルを操作してマクロを登録しているのか」,言い換えると削除したいマクロはどこにどういう操作手順で追加したものなのか,事実を丁寧に添えて追加ご質問を投稿してください。 「マクロを操作するマクロ」はコンピュータウィルスの作成にも通じる技なので,こういった公開の掲示板ではあまり触れないのがマナーになっています。
その他の回答 (1)
- Wendy02
- ベストアンサー率57% (3570/6232)
別のブックに入れて、アクティブ・ブックに対して実行してください。以下のマクロの入ったブックでは出来ません。先頭に$のついたファイルは、バックアッフ元ファイルです。シートのCellsをコピーします。シートのコピーではありません。ただし、以下のマクロは不十分です。ここのサイトでは、文字制限があって、完全なコードは掲示できません。 ' Sub ShCopyTestMacro() Dim sh As Object Dim shCnt As Integer Dim NewSh As Object Dim AcBook As Workbook Dim NewBook As Workbook Dim ext As String Dim sFn As String Dim myPath As String Set AcBook = ActiveWorkbook ext = Mid(AcBook.Name, InStrRev(AcBook.Name, ".")) sFn = AcBook.Name If ThisWorkbook Is ActiveWorkbook Then MsgBox "このブックには、マクロは実行出来ません。", 48 Exit Sub End If myPath = AcBook.Path & "\" '"C:\work\" AcBook.Save If Dir(myPath & "$" & sFn) <> "" Then MsgBox "既に、バックアップが存在しています。" & vbCrLf & _ "'$" & sFn & "'", 48 Exit Sub End If With Application .Calculation = xlCalculationManual shCnt = .SheetsInNewWorkbook .SheetsInNewWorkbook = 1 End With Set NewBook = Workbooks.Add NewBook.Sheets(1).Name = "z" With NewBook For Each sh In AcBook.Sheets If TypeOf sh Is Worksheet Then Set NewSh = .Sheets.Add(After:=.Sheets(.Sheets.Count)) sh.Cells.Copy NewSh.Range("A1") .Sheets(.Sheets.Count).Name = sh.Name ElseIf TypeOf sh Is Chart Then sh.Copy After:=NewBook.Sheets(.Sheets.Count) .Sheets(.Sheets.Count).Name = sh.Name End If Next End With With Application .DisplayAlerts = False NewBook.Sheets(1).Delete .DisplayAlerts = True End With ' NewBook.SaveAs "$" & sFn Workbooks("$" & sFn).Close True AcBook.Sheets(1).Select AcBook.Close False Name myPath & sFn As myPath & "$tmp" & ext Name myPath & "$" & sFn As myPath & sFn Name myPath & "$tmp" & ext As myPath & "$" & sFn Set NewBook = Nothing Set AcBook = Nothing '設定を戻す With Application .Calculation = xlCalculationAutomatic .SheetsInNewWorkbook = shCnt End With End Sub