■ 現在のこのページの役立ち度:
表示されない場合こちらのリンクからもご覧になれます。
|
■ このページの役立ち度を評価する:
役立ち度を評価してください。
(1(左):あまり役立たない - 5(右):大変役立った): |
■ ページの共有: |
[ サイト内検索 ]
![]()
カスタム検索
|
#44173-0マクロを無効にしファイルを開きたいたえ2001-06-19(火) 09:25
#44174-0RE#44173:マクロを無効にしファイルを開きたいみゃお2001-06-19(火) 09:51
#44178-0RE#44174:マクロを無効にしファイルを開きたいたえ2001-06-19(火) 10:21
#44191-0RE#44178:マクロを無効にしファイルを開きたいみゃお2001-06-19(火) 14:17
#44174-0RE#44173:マクロを無効にしファイルを開きたいみゃお2001-06-19(火) 09:51
#44178-0RE#44174:マクロを無効にしファイルを開きたいたえ2001-06-19(火) 10:21
#44191-0RE#44178:マクロを無効にしファイルを開きたいみゃお2001-06-19(火) 14:17
たえ2001-06-19(火) 09:25
いつも利用させていただいております。 現在のPGでコード上でエクセルファイルにマクロが含まれているか判断しています。 マクロを含まないと判断した時に、マクロを無効にしてファイルをOPENしたいのです。 (マクロ警告メッセージで「マクロを無効する」ボタンをクリックした状態と同じ。) 度々の質問で申し訳ありませんが、宜しくお願いします。
みゃお2001-06-19(火) 09:51
こんにちは、たえさん。新規質問になさったんですね。こちらに続けます。 > マクロを含まないと判断した時に、マクロを無効にしてファイルをOPENしたいのです。 > (マクロ警告メッセージで「マクロを無効する」ボタンをクリックした状態と同じ。) マクロを含むときですよね? 含まないときに警告は出ないので。(^_^;;) イベントプロシージャなら、 オブジェクト変数.EnableEvents = False とすればいいのですが、 ボタンに登録した、、、とか言うマクロだったら、押されれば動いてしまいますね。 マクロ側で判断できればいいのですが(って本末転倒ですね)。
たえ2001-06-19(火) 10:21
みゃおさん早速のレスありがとうございます。 > マクロを含むときですよね? 含まないときに警告は出ないので。(^_^;;) そうです。マクロを含むときです(^^;)失礼しました! 現在のPGを下に貼り付けておきます。 > イベントプロシージャなら、 > オブジェクト変数.EnableEvents = False とすればいいのですが、 この場合でも使えるのでしょうか? なんせエクセルのことあんまり深くやったことがないもんで... 質問攻めですみません! なにか良いアドバイスがあれば宜しくお願いします。 '__エクセルインスタンスを新規作成します。 Set G_Excel_New = CreateObject("Excel.Application") '__対象ワークブックを開きます。 Set G_ExcelBook_New = G_Excel_New.Workbooks.Open(pPath) CheckModule = False With G_ExcelBook_New.Application.VBE.ActiveVBProject '__.VBComponents.Count←エクセルファイルに含まれるコンポーネントの数を数えます。 For i = 1 To .VBComponents.Count '__.VBComponents(i).CodeModule.CountOfLines←各コンポーネントの行数を数えます。 If .VBComponents(i).CodeModule.CountOfLines > 0 Then CheckModule = True End If Next i End With If CheckModule Then iRet = FPub_DSP_MSG_ANS("開こうとしている文書には、マクロが含まれています。マクロには、" & vbCrLf & _ "コンピュータに問題を引き起こすウィルスが含まれていることがあります。" & vbCrLf & _ "この文書が安全であることがあらかじめわかっている場合は" & vbCrLf & _ "[はい] をクリックしてください。すべてのマクロを実行" & vbCrLf & _ "しないようにする場合は [いいえ] をクリックしてください。", vbYesNo + vbQuestion, lANS) If lANS = 6 Then '__「マクロを有効」 '__Auto_Openを実行します。 G_ExcelBook_New.RunAutoMacros (xlAutoOpen) ElseIf lANS = 7 Then '__「マクロを無効」 '__ここでマクロを無効にしたい。 End If End If
みゃお2001-06-19(火) 14:17
> > イベントプロシージャなら、 > > オブジェクト変数.EnableEvents = False とすればいいのですが、 > この場合でも使えるのでしょうか? イベントプロシージャとは、ExcelのSheetモジュールやThisworkbookモジュールで、 オブジェクト名_Open とか、オブジェクト名_Activate とか記述します。 オブジェクト名の部分は、ドロップダウンリストで出てくるものを指します。 (実際に見てみた方が早いです) > If lANS = 6 Then '__「マクロを有効」 > '__Auto_Openを実行します。 > G_ExcelBook_New.RunAutoMacros (xlAutoOpen) > ElseIf lANS = 7 Then '__「マクロを無効」 > '__ここでマクロを無効にしたい。 > > End If 開くブックは限定されていて、そのブックにはAuto_Openプロシージャしかないのであれば 何も書く必要はありません。 VB側からそのマクロを起動しない限り走らないので。 もし、そのほかにマクロがあり、ユーザー側が実行するおそれがあるのなら(マクロを登録した ボタンをクリックするとか)、それは難しいと思います。 その場合はSHELL起動して、本来の警告メッセージにお任せした方がいいでしょう。 > If .VBComponents(i).CodeModule.CountOfLines > 0 Then > CheckModule = True > End If なお、私の環境では上の3行ではマクロの有無を判断できません。 「変数の宣言を強制する」にチェックを入れているので、自動的にOption Explicitが 1行入ってしまいますので。2行以上、と前に書いたのはそういうわけです。 ただ、Option Base 1 とか他にも、行数が増えてもマクロと見なされないものがあると、 2行以上でもわかりません。 それなら、SubとかFunctionとかいう単語を検索した方がいいかもしれません。
このページと関連する記事:
#9272-0Excelで他ブックのマクロ参照時のパスについて2000-04-04(火) 08:56#31363-0Excelマクロのシートコピーについて2000-10-07(土) 18:51
#147-3VBからExcelを起動後、マクロの自動実行2003-07-31(木) 16:06
#44047-0マクロを含むエクセルファイルのOPEN2001-06-15(金) 14:47
#24248-0Shell関数を使用して、マクロ付きExcelファイルを開きたいのですが。2001-10-31(水) 18:21
#376-4Excelをマクロを有効にして起動するには?2003-05-15(木) 00:15
#1636-0Excel・VBAでModuleを削除・コピーするには?1999-09-16(木) 18:32
#9402-0Excelのボタンにコメントをつける事は可能ですか?2000-04-07(金) 12:28
#4033-2VBからエクセルの操作する方法2002-01-18(金) 17:35
#18783-0VBからExcel Bookを開くと...2000-03-29(水) 15:14