プロが教えるわが家の防犯対策術!

excel VBAで作ったフォームをエクスポートした後インポートした場合
コードもコピーされますがフォームのプロパティー(コードなし)のみ
インポートする方法はないでしょうか?
手作業でコードを削除するしかないのでしょうか?

A 回答 (2件)

#1です


VBAで作業していないのかもと思い追記します。
>フォーム(コードなし)のみインポートする方法はないでしょうか?

当然、コードの無いフォームをエクスポートしてあれば出来ます。
コードを削除してエクスポートすれば良いかと。

フォームモジュール内にコードがあれば出来ません。

この場合、手作業でコードを削除するかVBAで削除する必要があると思います。
インポート後なら、VBEでモジュールの内容を操作する。
インポート前なら、UserFormを除くコントロールのデザイナモードで設定されたプロパティは、.frxにあるようなので、.frmの内容をメモ帳などで操作する。 かな。
    • good
    • 0
この回答へのお礼

ありがとうございます
本当ですね、コードを削除してエクスポート インポートすればいいんですよね
フォーム上にたくさんのコントロールを配置していたのですが、コードを作り直そうとしたときオブジェクトのみ、インポートできないかと質問しました、ありがとうございました。

お礼日時:2021/03/22 10:18

こんにちは


>フォームのプロパティー(コードなし)のみ
プロパティーはコードだと思うのですが、オブジェクトの事でしょうか?

オブジェクトのみのインポートは知らないのですが、
インポート自体をVBAで行っているのなら、Microsoft Visual Basic for Applications Extensibilityの参照もされていると思いますので、
不要コードをVBAで削除する方法なら、VBProject.VBComponentsなどを使用すれば可能だと思います。

下記は他のサイトで回答したものです。参考になるかもなので

Dim oVBC As VBComponent

Set Target = Workbooks.Open(Folder_Path & File_Name)
For Each oVBC In Target.VBProject.VBComponents
If oVBC.Type = 3 Then '3はフォームモジュール
With Target.VBProject.VBComponents(oVBC.Name).CodeModule
For i = 1 To .CountOfLines
strCo = .Lines(i, 1)
' If InStr(strCo, "C:\Users\user01\Documents") > 0 Then
' strCo = Replace(strCo, "C:\Users\user01\Documents", "\")
' .ReplaceLine i, strCo
' End If
.ReplaceLine i, ""
Next i
End With
End If
Next oVBC

コメント部は、内容を書き替える時に使用した残骸(敢えて残しました)
書き替えに使用したものなので1行ずつ行っていますが、一気に出来る?と思います。
変数は、変数名でなんとなく理解できればと。。

情報が少ない為、頓珍漢な回答であれば、スルーしてください。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!