作成日 2004/7/17
最終更新日 2006/1/3

Microsoft Excel X for MacのVBAでは、モジュールのインポートとエクスポートが出来ないのか?

先に結論を言うと、出来る。

1.なぜ、モジュールのインポートとエクスポートが出来ないと思ってしまったのか
2.Microsoft Excel X for MacのVBAでモジュールのインポートとエクスポートをする方法
3.モジュールをエクスポートするときの拡張子一覧
4.モジュールをインポートとエクスポートするときの注意
5.インポートとエクスポートをメニューから実行できるようにする

1.なぜ、モジュールのインポートとエクスポートが出来ないと思ってしまったのか

 Mac版エクセルVBAの場合、プロジェクトエクスプローラを右クリックしてもインポートやエクスポートが表示されない。なんで?
プロジェクトエクスプローラでのポップアップメニュー(Mac版エクセルVBAの場合)プロジェクトエクスプローラでのポップアップメニュー(Windows版エクセルVBAの場合)
 MacとWin版のエクセルVBAでプロジェクトエクスプローラ内で右クリックしたときのメニューの違い
 右がMac版で左がWindows版のとき。Mac版の場合、なぜかファイルのインポートとファイルのエクスポートがない。
このページのトップへ

2.Microsoft Excel X for MacのエクセルVBAでモジュールのインポートとエクスポートをする方法

 プロジェクトエクスプローラを右クリックするのではなく、importメソッドとexportメソッドを使えば出来る。
 例えば、UserForm1をエクスポートする場合は、
Application.VBE.ActiveVBProject.VBComponents("UserForm1").Export ("UserForm1.frm")
をイミディエイトウインドウに書くか、マクロに記述して実行すればいい。(このとき注意がいる。)
 プロジェクトにあるモジュールを全部エクスポートするなら、以下のコードを標準モジュールにコピー&ペーストして
Sub export_all_module()
    Dim module_count As Long 'モジュールの個数
    Dim i As Long 'For文のカウンタとして使用
    
    With Application.VBE.ActiveVBProject.VBComponents
        module_count = .count
        For i = 1 To module_count
            Select Case .Item(i).Type
                Case3                                      'ユーザフォームのとき
                    .Item(i).Export (.Item(i).Name + ".frm")
                Case 1                                      '標準モジュールのとき
                    .Item(i).Export (.Item(i).Name + ".bas")
                Case Else                                   'それ以外
                    .Item(i).Export (.Item(i).Name + ".cls")
            End Select
        Next
    End With
End Sub
実行、というのもありです。
 モジュールをインポートするときは、
Application.VBE.ActiveVBProject.VBComponents.Import ("UserForm1.frm")
をイミディエイトウインドウか標準モジュールのメソッドにでも書いて実行する。
このページのトップへ

3.モジュールをエクスポートするときの拡張子一覧

モジュールのタイプ 拡張子
フォームモジュール
frm
標準モジュール
bas
クラスモジュール、その他のモジュール(ThisWorkbook、Sheetなど)
cls
このページのトップへ

4.モジュールをインポートとエクスポートするときの注意

  1. フォームモジュールをエクスポートしたとき拡張子がfrxというファイルが生成されるけど、これは消しちゃダメみたい。拡張子がfrmのファイルを他のフォルダに移動やコピーするときはfrxファイルも一緒に連れて行く必要がある。(frmファイルの中身をシンプルテキスト(Mac版エクセルVBAの場合)かメモ帳(Windows版エクセルVBAの場合)で見れば理由がわかる。)
  2. シートなんかもエクスポートできるけど、インポートするとSheet1という名前のクラスモジュールが作られちゃった。
このページのトップへ

5.インポートとエクスポートをメニューから実行できるようにする

ダウンロードのページへ
Prev Up Next  Top
このページのトップへ

このページの利用によって発生した、いかなる損害について、このホームページの作成者は責任を負いません。
このページの間違いや嘘を見つけた方、このページに書いて欲しい情報がある方はメールをお願いします。

Microsoft 、Windows 、Visual Basic および Excel は米国Microsoft Corporationの米国およびその他の国における登録商標または商標です。
ここではExcel® をエクセル、Visual Basic® for Applications をVBAと表記する場合があります。
Mac 、Mac OS 、Mac OS X は米国Apple Computer,Inc.の登録商標または商標です。
その他、社名および商品名、システム名称などは、一般に各社の商標または登録商標です。

このホームページの作成者はこれらの会社とはいっさい関係がありません。