Page 698 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 通常モードに戻る ┃ INDEX ┃ ≪前へ │ 次へ≫ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ▼VBAを使用して既存ブックのモジュールやユーザーフォームシートを開放したい ゴンタ 03/2/5(水) 18:20 ┗Re:VBAを使用して既存ブックのモジュールやユーザーフォームシートを開放したい りん 03/2/5(水) 20:16 ┗Re:VBAを使用して既存ブックのモジュールやユーザーフォームシートを開放したい ゴンタ 03/2/6(木) 10:36 ┗Re:VBAを使用して既存ブックのモジュールやユーザーフォームシートを開放したい りん 03/2/6(木) 19:32 ┗Re:VBAを使用して既存ブックのモジュールやユーザーフォームシートを開放したい ゴンタ 03/2/7(金) 11:43 ─────────────────────────────────────── ■題名 : VBAを使用して既存ブックのモジュールやユーザーフォームシートを開放したい ■名前 : ゴンタ ■日付 : 03/2/5(水) 18:20 -------------------------------------------------------------------------
始めまして。ゴンタと申します。 VBAを使用して既存ブックのモジュールやユーザーフォームシートを開放したいのですが 可能ですか!?どなたか分かる方教えて頂けますか!? どうぞ宜しくお願い致します。 |
ゴンタ さん、こんばんわ。 >VBAを使用して既存ブックのモジュールやユーザーフォームシートを開放したいのですが >可能ですか!? 可能です。 UserFormとModuleとシートやブックのイベントを削除します。 Sub test() If MsgBox("マクロ削除してもいい?", vbCritical + vbYesNo) = vbYes Then Dim wb As Workbook Dim vbc As Object '現在表示しているブックのマクロを削除(このマクロのブックを除く) Set wb = ActiveWorkbook If wb.Name <> ThisWorkbook.Name Then Nmax% = wb.VBProject.VBComponents.Count For NN% = Nmax% To 1 Step -1 Set vbc = wb.VBProject.VBComponents(NN%) With vbc.CodeModule If vbc.Type < 100 Then 'モジュールは無条件で削除 wb.VBProject.VBComponents.Remove vbc Else 'イベントプロシージャは見つかったら削除 If .Countoflines > 0 Then _ .DeleteLines 1, .Countoflines End If End With Next End If Set vbc = Nothing End If End Sub ユーザーフォームシートってなんですか? XL95以前のマクロですか? |
▼りん さん: >ゴンタ さん、こんばんわ。 こんばんは。早速のご返信ありがとうごさいます。 こんな方法が有るのですね。素晴らしいです。 ありがとうございます! >ユーザーフォームシートってなんですか? >XL95以前のマクロですか? すみません。。。ユーザーフォームシートでは無くユーザーフォームの間違いです。 混同させてしまい大変申し訳有りませんでした。(謝) ちなみにXL2000を使用しています。 それから、もう一件ご質問が有るのですが、 削除したいモジュール,ユーザーフォームはプロジェクト表示をロックしています。 ロックしたままでも削除は可能ですか!? また削除したモジュール,ユーザーフォームを復元する事は可能ですか!? 私のしたい事は、モジュール,ユーザーフォーム付きのファイルを VBAで【OUTLOOKのオブジェクトを作成後、Mailを送信する事】 なのですが、(ここまではVBA作成出来ています。) Public Sub Mail_transmission1_1() 'メール送信(マイクロツール,メーカー) '*** OUTLOOKを使用してMailを送る *** Dim OLApp As Object Dim myOlApp Dim myNamespace Dim myItem '*** OUTLOOKのオブジェクトを作成後、Mailを送信する *** Set myOlApp = CreateObject("Outlook.Application") Set myNamespace = myOlApp.GetNamespace("MAPI") Set myItem = myOlApp.CreateItem(0) 'olMailItem '*** Mailの宛先・題名・本文・添付ファイルを設定する *** '宛先を複数指定する時は ; で区切る(Ex. xxx1@yyy.zzz;xxx2@yyy.zzz) 'myItem.To = "xxx1@yyy.zzz" '宛先(TO) 'myItem.CC = "xxx1@yyy.zzz" '宛先(CC) 'myItem.BCC = "xxx1@yyy.zzz" '宛先(BCC) myItem.To = Address myItem.Subject = "zzz" myItem.Body = "sss" myItem.Attachments.Add ThisWorkbook.Path + "\" + ThisWorkbook.NAME myItem.CC = M_Address '*** Mail送信 *** myItem.Send '*** Reste *** Set OLApp = Nothing Set myNamespace = Nothing Set myItem = Nothing End Sub この方法ですとモジュール,ユーザーフォーム付きのファイルを送信して しまいます。受信側に誤ってVBAを実行して貰いたく無い のでモジュール,ユーザーフォームを削除して送信したいのです。。。 今回教えて頂いた方法の他に良い方法は有りますか!? プロフェッショナルな方にお力をお借りしたいのですが。。。 |
ゴンタ さん、こんばんわ。 > この方法ですとモジュール,ユーザーフォーム付きのファイルを送信して > しまいます。受信側に誤ってVBAを実行して貰いたく無い > のでモジュール,ユーザーフォームを削除して送信したいのです。。。 ThisWorkbookの中の必要なシート(マクロなし)を新しいブックにコピーして、それを送信した方が簡単だと思いますけど。 |
▼りん さん: りんさん。こんにちは。 >ThisWorkbookの中の必要なシート(マクロなし)を新しいブックにコピーして、それを送信した方が簡単だと思いますけど。 そうですね。。。モジュールやユーザーフォームシートを削除するのではなく 逆にそういう発想もできますよね。 素晴らしいです! ありがとうごさいます! 今回、ご指導頂き大変ありがとうごさいます! |