こんにちは、おかちゃんせんせいです!
今回はこれまでの内容とは一転して、VBAに関する情報です。
現在、通常Macで作業をすることが多いのですが、MacのExcelでVisual Basic for Applications Microsoft Visual Basic エディター (VBA) の Visual Basic エディター を使用して、Windowsと同じようにマクロを作成することができます。
ただ、マクロを作成することはできるんですが、MacのVBAはWindowsと比べると使い勝手が悪くて、これまでできる限りWindowsで作成していました。
ところが今回は、半ば諦めていた2つの処理がMacでもできるようになりましたので、解決方法について備忘も兼ねて共有いたします!
- Windowsで作成したマクロがMacでエラーになることで悩んでいる方
- Macでファイルを複数できるマクロを作成する方法を探していた方
目次
本題に入る前に、MacでVBAを使うのをぼくが躊躇っていた理由は以下の2つです。
- 日本語を入力しようとすると入力する箇所がズレる
- ファイルを複数選択するGetOpenFilenameメソッドが使えない
この2つが両方とも昨日解決しました!
① 日本語を入力しようとすると入力する箇所がズレる
百聞は一見にしかず、ということでまずはこの動画をご覧ください。
ご覧いただくとわかると思いますが、半角英数字の部分を選択しようとすると正常にできます。
しかし、日本語のような全角文字を選択しようとしても、該当の箇所を上手く選択できないのです。。
これはバグかと思ったのですが、ネットで検索してみてもみなさん同じ現象が起きているようで、今のところどうしようもないとのこと。
でも、納得できなくて色々解決策を探していたところ、こんな記事を発見!
自分の環境でも試してみようとしたところ、以前はバグって設定できなかったエディッター設定が変更できるようになっていました!
- エディッター設定で、フォントの種類を「MS Gothic」に変更するだけ
そこで、早速試してみたところ、なぜか状況は変わらず・・・
「設定できていなかったのかな?」
と思ってもう一度設定画面に戻ってみると、初期値の「.SF NS」に戻ってました・・・
何度変更してもダメだったので、もう一度参考リンク先を見てみるとこんな記述が。
フォントを変えればいいと言ってもなんでもいいわけではないので注意してください。 例えば、”MS gothic”は大丈夫でも”MS ゴシック”はできません。 このようにフォント名に日本語が入っているものは対応していませんので使わないようにしてください。 対応していないフォントが設定されると自動的に”system font”になってしまいます。
ルウちゃんのExcel Labo
どうやらぼくのMac環境では「MS Gothic」は対応していないフォントとして認識されてしまったようです( ; ; )
でも、対応されるフォントを探せばいいんだとすぐに気付き、Windowsの時にも設定していた「Meiryo」にしてみたところ——無事に日本語入力の位置ずれが解消されました!
これで一件落着——と思いきや、妥協できない問題が発生(T ^ T)
② ファイルを複数選択するGetOpenFilenameメソッドが使えない
①については解決したんですが、よく使うマクロがWindowsでは正常に使えていたのに、Macでは使えなくなっていました。
そのマクロとは、「ダイアログを表示させて複数ファイルを選択する」というものです。
Sub test1()
Dim openWb As Workbook
Dim openFileName As Variant, fileName As Variant
' ファイルを複数選択する
openFileName = Application.GetOpenFilename(MultiSelect:=True)
If openFileName = False Then
MsgBox "キャンセルされました"
Exit Sub
End If
' 選択したファイルを開く
For Each fileVar In openFileName
Workbooks.Open fileVar
Set openWb = ActiveWorkbook
' 処理を書く
Application.DisplayAlerts = False
openWb.Close
Application.DisplayAlerts = True
Next fileVar
End Sub
上記コードの黄色マーカーの箇所まで処理が進むと、ダイアログが表示され、Windows版では複数ファイルが選択できます。
しかし、Macでは一つのファイルしか選択できませんでした。
調べてみると、MacではGetOpenFilenameの引数として、ワイルドカードを設定するとエラーになったり、設定しても引数の内容が有効にならないようなのです。
マイクロソフトの公式ページでもこのように書かれていました。
Mac で使用できるのは ButtonText パラメーターのみです。FileFilter パラメーターと MultiSelect パラメーターは Mac では使用できません。
マイクロソフト公式ページ
他のサイトでも、Macではファイル選択ファイアログはWindowsのようには使えないですよ、という注意喚起がありました。
しかし、どうしても諦めきれず検索するキーワードについてあれこれ変えて調べていましたら、昨日ようやく解決の糸口を見つけました!