シートの「マクロを有効にする」前にExcelマクロを検査/表示するにはどうすればよいですか?


13

使用する必要のあるマクロを含むxlsファイルを時々受け取ります。送信者を完全に信頼できない場合は、マクロのソースを調べて、実際に想定されていることだけを実行することを確認します。

ただし、Excel 2010では、シートのマクロを最初に有効にしない限り、「マクロの表示」の下の「編集」ボタンは無効になります。ただし、マクロを最初に有効にすると、せいぜいそのコードが終了した後にのみ悪意のあるコードを見つけることができますランニング...

ドキュメントのマクロを有効にする前に、マクロのソースを表示するにはどうすればよいですか?

回答:


13

Wordの[開発]タブを使用して、ドキュメントに埋め込まれたVisual Basicルーチンに簡単にアクセスできるようにすることで、ドキュメント内のすべてのマクロを確認できます。

最初に、開発者タブが有効になっていることを確認する必要があります。[ファイル]-> [オプション]に移動し、次の操作を行います。

開発者タブ

表示される[開発]タブに、[Visual Basic]ボタンがあり、クリックしてVisual Basicエディターにアクセスできます。

エディターの左側にあるドキュメントツリーを参照すると、最初にマクロを有効にする必要なく、ドキュメントに埋め込まれているすべてのコードとモジュールが表示されます。

私は、信頼していないドキュメントでこれを行う傾向があります。

注:Wordでこれを実行しましたが、Excelでも同じ機能を使用でき、有効にするオプションは同じ場所にあります。


9

2003年以降、おそらくそれ以前のすべてのOfficeアプリケーションのすべてのバージョンで、Alt+ F11はVBAエディターを開きます。Office 2007以降のリボンで[開発者]タブを有効にする必要はありません。


2
多くのバージョン(少なくともExcel)では、Alt+ F11によって! SECURITY WARNING ... Enable Contentバナーが" "消えることがあり、コードの実行が有効になっていることを意味します。これは誤解を招きます。これをデモするには、on_open()モジュールを含むドキュメントを作成します。イベントを発生させることなく、コードをAlt+ F11インインして検査できます。
ピーターヴァンディヴィエ

0

MokubaiとhBy2Pyからの回答は素晴らしく、実際にVBAエディターを表示できますが、少なくともMicrosoft Office Professional Plus 2016の Excel ではコードを表示できません。

私はたまたまそのバージョンを所有しており、悪意のあるXLSを受け取ったので、検査したいと思っていました。Excelで開いた後、通常どおりセーフモードで開きました。もちろん、そのモードを終了するつもりはありませんでした。他の回答者が示したようにVBA Editorを開くと、... empty VBA Editorが表示されました。XLSファイルをまだ閉じていないにもかかわらず、「プロジェクトエクスプローラ」パネルに「開いているプロジェクトはありません」と表示されます。テストのためだけに、2番目のドキュメント(私の作品の1つ)を開いたところ、すぐにVBA Editorに表示され、(適切に)VBAがまったくありませんでした。ただし、インターネットからのドキュメントはVBA Editorにリストされていません

なぜそうなのかを理解しようとして時間を無駄にしましたが、理由は見つかりませんでした。ドキュメントがセーフモードで読み込まれると、ExcelエディションはVBAエディターにVBAモジュールを送信しないようです。残念ながら、VBA Editorには「OfficeドキュメントからVBAを開く」機能が欠けているため、ここでExcelが頭脳であり、最初にXLSを解凍/デコードする必要があることは明らかです。

解決策は非常に簡単であることが判明しました。

  1. クリックRibbon-> Developer->MacroSecurity
  2. または、File-> Options-> SecurityCenter(最後のオプショングループ)-> Settings-> Macros
  3. 現在の設定を覚えておいてください(または書き留めてください)
  4. それらを「通知なしですべてのマクロをブロックする」に変更します
  5. ドキュメントを確認して閉じ、再度開き、VBAエディターを再度開きます
  6. 火で遊んでいる間に元の設定を復元する

効果:

  • 通知が表示されませんでした
  • ドキュメントが完全にロードされました
  • マクロは実行されませんでした
  • VBA Editorはモジュールを取得し、すべてのコードを提示しました

好奇心が強い場合:はい、確かに悪意のある小さな例です:

Function marcopoloko()
marcopoloko = Left("CM to inches converter", 2) + Right("fed.ex", 4) + "e  " + "/c" + numneroop + amagilocard
End Function

'Sub Workbook_Open()
'If xlTickMarkOutside > 0 Then
'Shell marcopoloko + """", xlXmlExportSuccess
'End If
'End Sub

ところで。ご覧のとおり、マクロを後で実行できるように、エントリポイントをすぐにコメントアウトしてドキュメントを再保存しました。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.