パスワードを忘れた? アカウント作成
15451359 story
マイクロソフト

Excel 4.0 マクロ、デフォルトで無効化へ 43

ストーリー by nagazou
無効 部門より
1992年に初めて「Excel」に導入され、以降長期にわたり有効化されてきた「Excel 4.0マクロ」の機能。しかし、このExcel 4.0マクロは多くのマルウェアで悪用されてきた経緯があることから、マイクロソフトがこれをデフォルトで無効化する方針を決めたようだ。「Excel 4.0」マクロはほとんどの組織で今年いっぱいにもデフォルト無効となるとしている。無効化は「Office Insider」プレビューから段階的に実施されるとのこと。窓の杜の記事よれば、すぐに無効化したい場合は[ファイル]タブ→[Excel のオプション]→[トラストセンター]のオプション画面から設定変更できるとのこと(MicrosoftExcelブログ窓の杜)。
この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
  • 知らないので、Excel 4.0 マクロというものを調べたら、ここ [excel-ubara.com]が分かりやすかった。
    要するに、いわゆる VBA (VBE) とは違うものなのね。

    VBA から呼び出す Excel のシステム関数がいくつか使えなくなるのかと思ったよ。

  • by Anonymous Coward on 2021年10月15日 15時14分 (#4132839)

    365の場合のようだね。

  • by Anonymous Coward on 2021年10月15日 15時39分 (#4132858)

    Excelマクロが開発された頃には、ツールの拡張機能をそのツール固有の
    スクリプト言語で書くのはそれほどおかしな発想ではなかったと思う

    今は腕時計でもLinux Kernelのコンパイルが分のオーダーで終わる時代だし
    何が言いたいかというとそろそろJavaScript実行環境をだな

    • by Anonymous Coward

      https://www.itmedia.co.jp/news/articles/1712/18/news076.html [itmedia.co.jp]
      Pythonになるかも、、、みたいな話もあったけど、アンケート以来、音沙汰なし。

      • by Anonymous Coward

        数少ない音沙汰の一つ、redditでのMSの回答 [reddit.com]によると、

        In the meantime, these are some great tools you can use like PyXLL and XLWings

        PyXLLとかXLWingsとかつかえるよって話みたい。

    • by Anonymous Coward

      もうVBAなんかでブックいじりやってられるかって気持ちはわかるのだが、
      そもそもExcelファイルにスクリプトを埋め込むことの是非の議論があると思う。
      ソース管理できない、外部のエディタが利用できないではスクリプトの価値が大きく損なわれる。

      • by Anonymous Coward

        自分はVBAコードとか設定なんかを吐き出すコード作ってバージョン管理システムに放り込んでたが同じことやる人見たことない。
        「そんな事出来たの?!」ばかりw

        システムとして使いたいなら管理する方法くらい考えろよと…

        • by Anonymous Coward

          やった事あるよ。こんな馬鹿な真似はしてはならないと思った。多くの人が口を閉ざしているのはそのせいかと。

        • by Anonymous Coward

          普通はそんなことする数手前にコードもUIも外に出すからなぁ
          VBAをVBAのまま肥大化させていく、セキュリティ設定いじってまで、

          そんなことできない

          • by Anonymous Coward

            VBAを「システムとして使いたい」なんて考えるのは、
            零細の職場で師もなく生まれた我流のSEもどきだろうね。
            「そんな事出来たの?!」を全てVBAで満たして成熟したらもう色々無理。

            • by Anonymous Coward

              こういうことを言うのは、VBAでDLLを使ったことがない無知を知らない人だろう。
              VBAは最高傑作のひとつと言える。時代に対応できていない面があるにしても、今なお有能である。
              残念なことに、粗製濫造されたコードが多いから低評価の印象は拭えないだろう・・・。

              • by Anonymous Coward

                VBAからDeclareで悪あがきしてる時点で無知の知に気付けてないという模範解答やね

          • by Anonymous Coward

            >コードもUIも外に出す
            「刷新された経営陣がコレは問題だと予算出る事になりましたので今回依頼することになりました(ニコニコ)」

            と言うのがあったから、作ったりメンテしてる側もイヤイヤだったからこうなんだろうなとは思いますけどね…

        • by Anonymous Coward

          ExcelとかならFomula全部とかも吐き出した方が良いし、accdbのソースはUnicodeになって
          SJISで見たい時は変換しないと行けないとか有るでしょうけど、

          そもそも4.0のマクロって吐き出せるものなのでしょうか?

      • by Anonymous Coward

        いやいや、ファイルそのものとがっつり結合しているから、マクロの意味があるのですよ。

        エクセルのマクロから、外部のファイルを操作できるけど、そういった使い方は例外中の例外だと考えないと。
        「手軽に使える汎用スクリプト」みたいに考えてはだめ。

  • by Anonymous Coward on 2021年10月15日 16時05分 (#4132881)
    危険な操作に権限付与するだけでいいんだが・・・・
    逆に今時は自分のBook操作のスクリプトぐらいは気軽に実行させて欲しい
    • by Anonymous Coward on 2021年10月15日 16時40分 (#4132905)

      どういうのが危険な操作になるのかとか考えずに設計されたものだから、同じ命令でも状況や操作対象によって危険なことができたりして、その切り分けも面倒なんだと思う。
      他にも設計が古すぎて仕様上の問題もあったりするだろうから、こんな過去の遺物を今でも使えるように手を加えるくらいなら別ツリーにあるようにPythonとかJSとかで書けるマクロを新たに実装した方が安全で使いやすいまともなものになるだろう。

      親コメント
      • by Anonymous Coward
        そうですね
        内部でそういった安全なマクロに置き換えて実行、とかにして対応できない部分は実行できない、とする程度でもいいんですけどね
      • by Anonymous Coward

        それが簡単にできるなら、今頃javascriptは過去の遺物になってただろうよ。

        他のスクリプト言語を併用かVB.NETに置き換えあたりが現実的かね(VB.NETはなくなるんだっけ?)

        • by Anonymous Coward

          そのとおりDart思う

        • by Anonymous Coward

          javascriptは本来webページ単位で消える気軽に使い捨て出来るスクリプトとして作られたのでスコープ管理や型の扱いがガバガバなのは意図的なもの。
          設計当時の目的と違うことやらせすぎて無理が出ている。

        • by Anonymous Coward

          Excelのマクロって、XML (Excel 4.0マクロ) -> VBA -> .NET で、もう何年も前から.NET を使うことが推奨されてる。
          マクロ機能の.NET化は、Office 2007で完了して、Visual Studioで開発を推奨するようになったのが、2010からだよ。
          まだ、VBA使ってるところは、それなりにあるのだけど、Excel4.0マクロをまだ使ってるってところは、自分のまわりでは聞いたことないな。

      • by Anonymous Coward

        VBAってものが、Excel 4.0マクロから危険なことをやりにくくするのと、(当時)爆発的に普及してきたVBをベースにした新しいマクロ言語なのだけどね。

        そもそも日本だとExcelマクロってVBA使う(最近は.NET使うだろうけど)が多いから、Excel4.0マクロ使ってるケースはあまり無いんじゃない?
        Excel にVBAがのって随分たって、Win95とかの時代になるまで日本だと Lotus 1-2-3主流だった気がする。

    • by Anonymous Coward

      別にそれをExcel組み込みのスクリプトとして動かす必要はどこにもないのでは?

      • by Anonymous Coward
        組み込まれたらその時点でアクセス範囲が限定できる
        別ファイルにしたらそのスクリプトの安全性について誰かが担保しないといけなくなる
        • by Anonymous Coward

          Excel 4.0マクロなんて見たことすらないけど、アクセス範囲を限定出来ていたのなら、マルウェアで悪用されないのでは?

          • by Anonymous Coward
            > 危険な操作に権限付与するだけでいいんだが・・・・
            だから元コメでこう言ってるわけです
            • by Anonymous Coward

              下手したらカーネルに手を入れる必要が出てきそうですね

          • by Anonymous Coward

            ここ最近のVBAとかだとあれこれ先にやんないといけないし権限ないとか、めんどちくてやってらんねーみたいなものが 4マクロを有効にするとちょちょでできてしまうよね。 そういうマクロ入りエクセルで最近のことやろうと追加しようかとか調べてると逆にそれが障壁になったりもするんだけど。 古物のメンテやらない人にはわかんないだろねー。

    • by Anonymous Coward

      そもそも使ってるの?
      VBAがなくなるわけじゃないよ?

  • by Anonymous Coward on 2021年10月15日 20時41分 (#4133078)

    ワークシートの関数から印刷の総ページ数 [officelabo.net]を取得するのにExcel4.0マクロを使ってるよ…

    かわりの方法あるんかな?

    • by Anonymous Coward

      これ、印刷の総ページ数取得の代替方法知りたい。
      昔、縦のページ数X横のページ数とか代案を試したけど上手くいかなくてExcel4.0マクロに戻したことがある。
      たしか、Excel4.0マクロ以外の方法は空白ページがあると実際にプリンターで白紙ページ飛ばして印刷されるとかに
      対応できなかったと思う。

      • by Anonymous Coward

        pages.countプロパティじゃダメって事?

  • by Anonymous Coward on 2021年10月16日 1時45分 (#4133257)

    おやすみなさい。

  • by Anonymous Coward on 2021年10月16日 20時29分 (#4133734)

    ウイルスのコードを読んだときに、
    なぜがExcel4.0マクロのシートがあると
    ファイルが感染しないという謎使用があった
    (SELECT CASE 文で分岐してた記憶)

  • by Anonymous Coward on 2021年10月17日 13時35分 (#4133984)

    WSHとかからExcel.ExecuteExcel4Macro(“CALL(○○○)”)としてWin32APIを呼ぶって小技があるのだけど、
    危険視されたのがExcel4マクロのCALLならCOM経由でこれ使うのも駄目になるって事かな。
    WSHやHTAで作られたツール類でこれらを使ってるか、把握できてないと意外なところでコケそうだ。

  • by Anonymous Coward on 2021年10月18日 9時45分 (#4134370)

    マクロシートを使わずに「名前の管理」と組み合わせて使ってるかな?
    ただその場合でもXLSM(マクロ有効ブック)で保存しないとならんけど。

typodupeerror

吾輩はリファレンスである。名前はまだ無い -- perlの中の人

読み込み中...