• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Excelマクロを削除するマクロについての質問です。)

Excelマクロを削除するマクロについての質問

このQ&Aのポイント
  • Excel2003で、「パソコンボランティア活動報告書」というマクロを作成しています。しかし、マクロを有効にするためのセキュリティ警告が出るため、ホームページに載せる際にはマクロを削除したいと考えています。そこで、「新しいマクロの記録」を使用して、「マクロ削除」のためのマクロを作成しました。しかし、この方法だとマクロの削除はできますが、作成した「マクロ削除」マクロ自体を削除する方法がわかりません。どのようにすれば、「マクロ削除」マクロを削除することができるでしょうか?
  • Excel2003で使用するマクロ「パソコンボランティア活動報告書」をホームページに載せる際にセキュリティ警告が出ないようにするため、「新しいマクロの記録」を使って「マクロ削除」のマクロを作成しました。この方法ではマクロは削除されますが、「マクロ削除」マクロ自体が残ってしまいます。どのようにすれば、「マクロ削除」マクロを削除することができるのでしょうか?
  • Excel2003で、「パソコンボランティア活動報告書」というマクロを作成し、ホームページに載せるためにセキュリティ警告を避けるために「新しいマクロの記録」を使用して「マクロ削除」のためのマクロを作成しました。しかし、この方法だけだと「マクロ削除」マクロが残ってしまいます。どのようにすれば、「マクロ削除」マクロを削除することができるのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.1

標準モジュールに登録したマクロを削除する最も安全な方法は, 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)
回答No.2

別のブックに入れて、アクティブ・ブックに対して実行してください。以下のマクロの入ったブックでは出来ません。先頭に$のついたファイルは、バックアッフ元ファイルです。シートの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

関連するQ&A