マイクロソフトコミュニティは、質問を投稿したら回答を得られるサイトです。
専属エンジニアから回答がもらえる無料サービスで、対象は当然の同社の製品。
WindowsやOfficeの使い方、トラブルで相談できますが、変わった質問もある。
それは、”MacOffice2021を購入。Excelマクロが作動しません。”という質問。
実行時エラー429が出て、ActiveXコンポーネントはオブジェクト作成が無理。
そんな表示が出されるようですが、当然、MacはOSがウインドウズじゃないよ。
このActiveXは、ウインドウズに固有な技術で、通信ネットワークの制御技術。
インターネットを通じてコンピュータ上でソフトウェアを動作連携させるもの。
だから、データやプログラム部品をやり取りするための技術や製品・仕様なの。
だとしたら、OSが違えば相乗りしていない限り、使える分けがありませんな。
もっとも、このActiveXは、かなりお古な仕様なので、セキュリティがぜい弱。
なので、ネットでウイルス侵入の足掛かりを図るベースにもなったりまします。
片や、”Office for Mac"はリリースから三十年以上も経過して歴史があります。
それだけ、ビジネスツールとしてOfficeは欠かせないものだったのでしょうな。
それで、このActiveXというのをエクセルのマクロで使った場合の話をします。
開発タブをクリックさせて、次に挿入アイコンのクリックで、ActiveXの登場。
”ActiveXコントロール”の欄もありますが、上部は”フォームコントロール”だ。
もし、シートにコマンドボタンを置くだけなら、フォームコントロールが便利。
簡単に設定ができるからですが、ボタンのデザイン変更などは融通が利かない。
あくまでも、機能優先のボタンなので、使う際には割り切った方が良いだろう。
一方、ActiveXと言うのは、上述のようにプログラム部品をやり取りできます。
このため、ユーザーフォームと言う、ワークシートに付随する書式が作れるの。
これが便利でして、VBAのプログラミングに慣れた方なら多く使うはずですな。
でも、MacのPCだと、オフィスをインストールしても、これが使えないのです。
つまり、ウインドウズでこさえたマクロファイルは、Macでは使えない可能性。
これを克服するには、ユーザーフォームをワークシートで疑似的に表示させる。
そんな工夫から作ってみたのが次のコードで、ウインドウズは動作確認済みだ。
でも、小生はMacを持っていないので、動くのかどうかは皆目見当がつかない。
というわけで、それなりに動作するので、ユーザーフォームの代用になりそう。
本当は、ユーザーフォームで使うコンボボックス等の登録が、フォームコントロールではShape扱いになっており、少し挙動が違う点も書きたかったのですが、それは次回に譲るとして、参考になってくれればと思ったのでした。
※ブックにシートを二枚設け、Sheet1は作表用、Sheet2はユーザーフォーム。
<Module1の記述、各シートにユーザーフォームのコマンドボタンを置く>
Sub Button1_Click() 'Sheet1にボタン1を置き、ユーザーフォーム呼び出し
Worksheets("Sheet2").Activate
End Sub
Sub Button2_Click() ’Sheet2にボタン2を置き、作表のSheet1に戻る
Worksheets("Sheet1").Activate
End Sub
<作表用のSheet1にコード記述、Sheet2のボタン2で戻った時の表示>
Sub Worksheet_Activate()
With ActiveWindow 'タブとかグリッド線とかを再表示させる
.DisplayGridlines = True
.DisplayWorkbookTabs = True
.DisplayHeadings = True
.DisplayHorizontalScrollBar = True
.DisplayVerticalScrollBar = True
End With
With Application
.DisplayFormulaBar = True
.ExecuteExcel4Macro "SHOW.TOOLBAR(""Ribbon"",True)"
.WindowState = xlMaximized 'シートに戻った時最大表示にする
End With
End Sub
<作表用のSheet2にコード記述、Sheet1のボタン1でフォーム表示仕様>
Sub Worksheet_Activate()
With ActiveWindow 'タブとかグリッド線とかを非表示
.DisplayGridlines = False
.DisplayWorkbookTabs = False
.DisplayHeadings = False
.DisplayHorizontalScrollBar = False
.DisplayVerticalScrollBar = False
End With
With Application
.DisplayFormulaBar = False
.ExecuteExcel4Macro "SHOW.TOOLBAR(""Ribbon"",False)"
.WindowState = xlNormal 'ユーザーフォームのサイズ指定をする
.Width = 300 '数値は任意、お好みで
.Height = 300
End With
End Sub
0 件のコメント:
コメントを投稿