Excel 4.0 マクロ、デフォルトで無効化へ 43
ストーリー by nagazou
無効 部門より
無効 部門より
1992年に初めて「Excel」に導入され、以降長期にわたり有効化されてきた「Excel 4.0マクロ」の機能。しかし、このExcel 4.0マクロは多くのマルウェアで悪用されてきた経緯があることから、マイクロソフトがこれをデフォルトで無効化する方針を決めたようだ。「Excel 4.0」マクロはほとんどの組織で今年いっぱいにもデフォルト無効となるとしている。無効化は「Office Insider」プレビューから段階的に実施されるとのこと。窓の杜の記事よれば、すぐに無効化したい場合は[ファイル]タブ→[Excel のオプション]→[トラストセンター]のオプション画面から設定変更できるとのこと(MicrosoftExcelブログ、窓の杜)。
今まで使ったことがなかった (スコア:3)
知らないので、Excel 4.0 マクロというものを調べたら、ここ [excel-ubara.com]が分かりやすかった。
要するに、いわゆる VBA (VBE) とは違うものなのね。
VBA から呼び出す Excel のシステム関数がいくつか使えなくなるのかと思ったよ。
バージョンが (スコア:0)
365の場合のようだね。
Re:バージョンが (スコア:1)
4.0はしてんおーの中でも最弱!
Re: (スコア:0)
残りの3人は誰?
Re: (スコア:0)
そりゃ、4.0はし(4)てん(.)おー(0)の中に1つしかいないからなあ。最弱かつ最強なのは自明でしょうよ。
なんで独自言語なの? (スコア:0)
Excelマクロが開発された頃には、ツールの拡張機能をそのツール固有の
スクリプト言語で書くのはそれほどおかしな発想ではなかったと思う
今は腕時計でもLinux Kernelのコンパイルが分のオーダーで終わる時代だし
何が言いたいかというとそろそろJavaScript実行環境をだな
Re: (スコア:0)
https://www.itmedia.co.jp/news/articles/1712/18/news076.html [itmedia.co.jp]
Pythonになるかも、、、みたいな話もあったけど、アンケート以来、音沙汰なし。
Re: (スコア:0)
数少ない音沙汰の一つ、redditでのMSの回答 [reddit.com]によると、
In the meantime, these are some great tools you can use like PyXLL and XLWings
PyXLLとかXLWingsとかつかえるよって話みたい。
Re: (スコア:0)
もうVBAなんかでブックいじりやってられるかって気持ちはわかるのだが、
そもそもExcelファイルにスクリプトを埋め込むことの是非の議論があると思う。
ソース管理できない、外部のエディタが利用できないではスクリプトの価値が大きく損なわれる。
Re: (スコア:0)
自分はVBAコードとか設定なんかを吐き出すコード作ってバージョン管理システムに放り込んでたが同じことやる人見たことない。
「そんな事出来たの?!」ばかりw
システムとして使いたいなら管理する方法くらい考えろよと…
Re: (スコア:0)
やった事あるよ。こんな馬鹿な真似はしてはならないと思った。多くの人が口を閉ざしているのはそのせいかと。
Re: (スコア:0)
普通はそんなことする数手前にコードもUIも外に出すからなぁ
VBAをVBAのまま肥大化させていく、セキュリティ設定いじってまで、
そんなことできない
Re: (スコア:0)
VBAを「システムとして使いたい」なんて考えるのは、
零細の職場で師もなく生まれた我流のSEもどきだろうね。
「そんな事出来たの?!」を全てVBAで満たして成熟したらもう色々無理。
Re: (スコア:0)
こういうことを言うのは、VBAでDLLを使ったことがない無知を知らない人だろう。
VBAは最高傑作のひとつと言える。時代に対応できていない面があるにしても、今なお有能である。
残念なことに、粗製濫造されたコードが多いから低評価の印象は拭えないだろう・・・。
Re: (スコア:0)
VBAからDeclareで悪あがきしてる時点で無知の知に気付けてないという模範解答やね
Re: (スコア:0)
>コードもUIも外に出す
「刷新された経営陣がコレは問題だと予算出る事になりましたので今回依頼することになりました(ニコニコ)」
と言うのがあったから、作ったりメンテしてる側もイヤイヤだったからこうなんだろうなとは思いますけどね…
Re: (スコア:0)
ExcelとかならFomula全部とかも吐き出した方が良いし、accdbのソースはUnicodeになって
SJISで見たい時は変換しないと行けないとか有るでしょうけど、
そもそも4.0のマクロって吐き出せるものなのでしょうか?
Re: (スコア:0)
いやいや、ファイルそのものとがっつり結合しているから、マクロの意味があるのですよ。
エクセルのマクロから、外部のファイルを操作できるけど、そういった使い方は例外中の例外だと考えないと。
「手軽に使える汎用スクリプト」みたいに考えてはだめ。
有効か無効かじゃなくて (スコア:0)
逆に今時は自分のBook操作のスクリプトぐらいは気軽に実行させて欲しい
Re:有効か無効かじゃなくて (スコア:1)
どういうのが危険な操作になるのかとか考えずに設計されたものだから、同じ命令でも状況や操作対象によって危険なことができたりして、その切り分けも面倒なんだと思う。
他にも設計が古すぎて仕様上の問題もあったりするだろうから、こんな過去の遺物を今でも使えるように手を加えるくらいなら別ツリーにあるようにPythonとかJSとかで書けるマクロを新たに実装した方が安全で使いやすいまともなものになるだろう。
Re: (スコア:0)
内部でそういった安全なマクロに置き換えて実行、とかにして対応できない部分は実行できない、とする程度でもいいんですけどね
Re: (スコア:0)
それが簡単にできるなら、今頃javascriptは過去の遺物になってただろうよ。
他のスクリプト言語を併用かVB.NETに置き換えあたりが現実的かね(VB.NETはなくなるんだっけ?)
Re: (スコア:0)
そのとおりDart思う
Re: (スコア:0)
javascriptは本来webページ単位で消える気軽に使い捨て出来るスクリプトとして作られたのでスコープ管理や型の扱いがガバガバなのは意図的なもの。
設計当時の目的と違うことやらせすぎて無理が出ている。
Re: (スコア:0)
Excelのマクロって、XML (Excel 4.0マクロ) -> VBA -> .NET で、もう何年も前から.NET を使うことが推奨されてる。
マクロ機能の.NET化は、Office 2007で完了して、Visual Studioで開発を推奨するようになったのが、2010からだよ。
まだ、VBA使ってるところは、それなりにあるのだけど、Excel4.0マクロをまだ使ってるってところは、自分のまわりでは聞いたことないな。
Re: (スコア:0)
VBAってものが、Excel 4.0マクロから危険なことをやりにくくするのと、(当時)爆発的に普及してきたVBをベースにした新しいマクロ言語なのだけどね。
そもそも日本だとExcelマクロってVBA使う(最近は.NET使うだろうけど)が多いから、Excel4.0マクロ使ってるケースはあまり無いんじゃない?
Excel にVBAがのって随分たって、Win95とかの時代になるまで日本だと Lotus 1-2-3主流だった気がする。
Re: (スコア:0)
別にそれをExcel組み込みのスクリプトとして動かす必要はどこにもないのでは?
Re: (スコア:0)
別ファイルにしたらそのスクリプトの安全性について誰かが担保しないといけなくなる
Re: (スコア:0)
Excel 4.0マクロなんて見たことすらないけど、アクセス範囲を限定出来ていたのなら、マルウェアで悪用されないのでは?
Re: (スコア:0)
だから元コメでこう言ってるわけです
Re: (スコア:0)
下手したらカーネルに手を入れる必要が出てきそうですね
Re: (スコア:0)
ここ最近のVBAとかだとあれこれ先にやんないといけないし権限ないとか、めんどちくてやってらんねーみたいなものが 4マクロを有効にするとちょちょでできてしまうよね。 そういうマクロ入りエクセルで最近のことやろうと追加しようかとか調べてると逆にそれが障壁になったりもするんだけど。 古物のメンテやらない人にはわかんないだろねー。
Re: (スコア:0)
そもそも使ってるの?
VBAがなくなるわけじゃないよ?
マクロの例 (スコア:0)
ワークシートの関数から印刷の総ページ数 [officelabo.net]を取得するのにExcel4.0マクロを使ってるよ…
かわりの方法あるんかな?
Re: (スコア:0)
これ、印刷の総ページ数取得の代替方法知りたい。
昔、縦のページ数X横のページ数とか代案を試したけど上手くいかなくてExcel4.0マクロに戻したことがある。
たしか、Excel4.0マクロ以外の方法は空白ページがあると実際にプリンターで白紙ページ飛ばして印刷されるとかに
対応できなかったと思う。
Re: (スコア:0)
pages.countプロパティじゃダメって事?
お先、まっくろ (スコア:0)
おやすみなさい。
XM/Laroux (スコア:0)
ウイルスのコードを読んだときに、
なぜがExcel4.0マクロのシートがあると
ファイルが感染しないという謎使用があった
(SELECT CASE 文で分岐してた記憶)
Win32APIの利用 (スコア:0)
WSHとかからExcel.ExecuteExcel4Macro(“CALL(○○○)”)としてWin32APIを呼ぶって小技があるのだけど、
危険視されたのがExcel4マクロのCALLならCOM経由でこれ使うのも駄目になるって事かな。
WSHやHTAで作られたツール類でこれらを使ってるか、把握できてないと意外なところでコケそうだ。
時々 (スコア:0)
マクロシートを使わずに「名前の管理」と組み合わせて使ってるかな?
ただその場合でもXLSM(マクロ有効ブック)で保存しないとならんけど。
Re: (スコア:0)
Re: (スコア:0)
仕様を作りまくって大きな修正も頻繁のが問題だと思っていたんだが。
これも大きな修正の一例の話だよな?
なんで目の前に提示されているモノを見ないのだろうか??