- 締切済み
VBでbasファイルのインポート、xlaファイルのエクスポート
excelでVBを使用しています。 管理方法は、 (1)xxx.bas(テキスト)ファイルをオリジナル。 (2)そのファイルを新規ブックで読み込み、xxx.xlaファイルをして保存。 (3)xxx.xlaファイルをアドオンとしてexcel起動時に読み込む。 としています。 新しいVBを作る場合は(1)~(3)を繰り返すのですが、この作業が毎回面倒です。 この作業をVBで出来るようにしたいのですが、どのように出来ますでしょうか。 入出力のファイル名は固定で構いません。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- kurinkurinkurin
- ベストアンサー率72% (13/18)
VBAでbasファイルのインポート・エクスポートをするには ツール->マクロ->セキュリティ で VisualBasicプロジェクトへのアクセスを信頼する にチェックを付けておく必要があります。 以下は、VBAProjectというプロジェクト名のファイルの 各ソースをエクスポートして解放し、再インポートする例です。 Sub Main() Dim lTarget As Long With Application.VBE For i = 1 To .VBProjects.Count If .VBProjects(i).Name = "VBAProject" Then lTarget = i Exit For End If Next End With If lTarget = 0 Then End End If With Application.VBE.VBProjects(lTarget) Dim sPath As String sPath = .Filename Dim lPos As Long lPos = InStrRev(sPath, "\") Dim sFolder As String sFolder = Mid(sPath, 1, lPos) Dim clFile As Collection Dim sFile As String Set clFile = New Collection Dim lType As Long Dim sExt(1 To 3) As String sExt(1) = ".bas" sExt(2) = ".cls" sExt(3) = ".frm" For i = .VBComponents.Count To 1 Step -1 lType = .VBComponents(i).Type If 1 <= lType And lType <= 3 Then sFile = sFolder & .VBComponents(i).Name & sExt(lType) clFile.Add sFile .VBComponents(i).Export sFile .VBComponents.Remove .VBComponents(i) End If Next For i = 1 To clFile.Count .VBComponents.Import clFile(i) Next End With End Sub
- hana-hana3
- ベストアンサー率31% (4940/15541)
コードの操作はVBAで自由にできます。 下記の検索結果を参考にしてみてください。 http://www.google.co.jp/search?num=30&hl=ja&q=VBProject.VBComponents&lr=lang_ja 1~2は新規ブックへモジュールのコピーでやって仕舞えば良いのでは? アドオンフォルダへのコピーもアドオンを有効にするのもVBAで可能だったと思います。 http://www.asahi-net.or.jp/~ef2o-inue/haifu/sub06_010.html
お礼
basファイルのエクスポート、インポート確認出来ました。 ありがとうございます。
補足
ちなみにこの辺のコードの管理はみんなどういう風にしてるのか気になります。 今回の件とは違ってくるので、また今度質問してみます。