![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
質問番号:5548045の関連質問です。
EXCEL2003VBA で、セキュリティ設定で『Visual Basic プロジェクトへのアクセス』にチェックを入れて、Module1に下記のように「モジュール解放」マクロを作成しましたが、Module1が削除されません。(1)を削除して、手動操作で変更を保存でファイルを閉じるとModule1も削除されます。
Module1の削除も全てマクロで行うやり方を教えてください。
With ThisWorkbook.VBProject.VBComponents
.Remove .Item("Module1")
.Remove .Item("Module2")
.Remove .Item("Module3")
End With
ActiveWorkbook.SaveAs Filename:="D:\TEST"
ActiveWorkbook.Close ・・・(1)
No.4ベストアンサー
- 回答日時:
>自分のファイルは残して、シート部分のみ別ファイルにしたかったので
それなら
ThisWorkbook.Worksheets.Copy
With ActiveWorkbook
.SaveCopyAs "D:\TEST.xls"
.Close False
End With
再度の回答有難うございました。
ちゃんと動作しました。
たった4行で処理できるなんて、驚きました。
年末の忙しい時に回答頂き、有難うございます。
時々「教えて!goo」は、利用させて貰っています。
今年も宜しくお願いします。
No.3
- 回答日時:
すみません
set oVBE as Application.VBE
これは
set oVBE = Application.VBE
の間違えです orz
マクロの最後
' 変更を反映
Workboos("Sample02.xls").Save
End Sub
の部分を
' 変更を反映
Workbooks("Sample02.xls").Close True
' Sample02.xlsがVBE上で残ってしまうため …
ActiveWorkbook.Save
End Sub
としたほうがいいようです
再度の回答有難うございました。
今度は、ちゃんと動きました。
年末の忙しい時に回答頂き、有難うございます。
時々「教えて!goo」は、利用させて貰っています。
今年も宜しくお願いします。
No.2
- 回答日時:
>EXCEL2003VBA で、セキュリティ・・・
EXCEL2003の環境が無いので確認できず別案
全シートを新ブックにコピーして元のブックと入れ替えれば
Sub Test()
Dim myName As String
With ThisWorkbook
myName = .FullName
.SaveAs Filename:="J:\Tmp.xls"
.Saved = True
.ChangeFileAccess Mode:=xlReadOnly
.Worksheets.Copy
Application.DisplayAlerts = False
ActiveWorkbook.SaveAs myName
Application.DisplayAlerts = True
Kill "J:\Tmp.xls"
.Close False
End With
End Sub
回答有難うございます。
実際に動かしてみましたが、自分のファイルのマクロが削除されてしまいました。やろうと思っていたのは、自分のファイルは残して、シート部分のみ別ファイルにしたかったので、保存するときにD:\TESTを指定してやれば良いですね。
Moduleを削除するのではなくて、シート部分を別ファイルにコピーする。考えてみれば、その方法が確かに簡単ですね。
どうも、有難うございました。
No.1
- 回答日時:
自分自身を削除するのは無理かと思いますよ
最初に ActiveWorkbook.SaveCopyAs でマクロ抜きのブックを保存しておいてから 保存したブックを開き このブックを操作してマクロを抜いて もう一度変更を更新してみましょう
Sub DeleteMacro
' 変更後のマクロがわかるように変更
Application.VBE.VBProjects(1).Name = "Sample02"
ActiveWorkbook.SaveCopyAs "D:\Sample02.xls"
' 元に戻す
Application.VBE.VBProjects(1).Name = "VBAProject"
' マクロを削除するブックを開く
Workbooks.Open "D:\Sample02.xls"
dim oVBE as VBE, oProj as VBProject, oMod as VBComponent
dim n as Integer
set oVBE as Application.VBE
' 変更するブックのプロジェクトを取得
set oProj = oVBE.VBProjects("Sample02")
With oProj
for n = .VBComponents.Count to 1 step -1
set oMod = .VBComponents(n)
' 削除するモジュールの検査
if InStr( oMod.Name, "Module" ) then
.VBComponents.Remove oMod
end if
next
End With
' 変更を反映
Workboos("Sample02.xls").Save
End Sub
といった具合で …
ブックを開いたとき自動実行されるマクロなどがあって不具合があるなら
ブック名などの違いを検出してマクロが起動しないようにしておきましょう
回答有難うございます。
上記マクロを動かしてみましたが、下記の部分で「構文エラー」が出ました。
set oVBE as Application.VBE
エラーの原因が分かりませんので、教えて下さい。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
フォルダ内の全ブックのシート...
-
フォルダ内の全ブックのシート...
-
エクセルVBA Workbook変数に変...
-
ExcelVBAで今開いているユーザ...
-
VB2010でExcelの行をコピーして...
-
EXCELマクロでxlsとxlsxを開く方法
-
フォルダ内の全てのBookに同じ...
-
すでに開いているブックのマク...
-
VBA セル入力された日付データ...
-
EXCELマクロで上書きメッ...
-
他のBookのユーザー定義関数を使う
-
[Excel VBA] フォルダ内の複数...
-
【ExcelVBA】指定の書式で、マ...
-
VBAでEXCELのワークシートを削...
-
エクセルでツールバーに「縮小...
-
excelインポート時の「実行時エ...
-
エクセルマクロ実行中に別ファ...
-
複数のデータ系列の線の太さを...
-
VBAを一度起動するとずっと出て...
-
「開いているすべてのブック」...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
フォルダ内の全ブックのシート...
-
ExcelVBAで今開いているユーザ...
-
エクセルVBA Workbook変数に変...
-
【ExcelVBA】指定の書式で、マ...
-
VB2010でExcelの行をコピーして...
-
フォルダ内の全ブックのシート...
-
【Excel VBA】ブックを複数開い...
-
すでに開いているブックのマク...
-
フォルダ内の全てのBookに同じ...
-
EXCELマクロでxlsとxlsxを開く方法
-
VBA、Excelのworkbook.open に...
-
excelマクロ、任意セルの値で名...
-
Excel VBAを後ろで動かす方法
-
[Excel VBA] フォルダ内の複数...
-
Excelの一括印刷で通し番号をつ...
-
personal.xlsの削除方法
-
VBA セル入力された日付データ...
-
EXCEL VBA起動時の処理
-
コマンドボタンでマクロを起動...
-
他のBookのユーザー定義関数を使う
おすすめ情報