2017-06-11 8 views
0

私はこの質問に対する答えを探しましたが、誰かが答えを持っている場合、または私の方向に私を指すことができる場合、私が探しているものに正確に一致するものは見つかりませんでしたこれに答える質問は、とても感謝しています。他のワークブックにユーザーフォームをコピー

私は、ブックにデータを入力して正常にビルドしたソリューションを構築することについて話し合ってきましたが、追加する必要があるワークブックは非常にアクティブなツールであり、常に新しい/変更されたデータ、私はブックのコピーにそれを構築しなければなりませんでしたし、現在アクティブなワークブックに追加する必要があります。私は簡単にアクティブなワークブックのデータを取得し、それを私のバージョンに追加し、次に私のバージョンをアクティブなブックにするのが簡単な方法を知っていますが、これはかなり大規模な作業であり、 5分、私は簡単な方法は、私のコードとuserformをアクティブなスプレッドシートにコピーすることになると考えました。コードはコピーして貼り付けるのは簡単ですが、ユーザーフォーム(書式設定など)をワークブックにコピーする方法が見つからず、エクスポートしてライブワークブックにインポートする方法はありますか?

わかりやすかったですが、何かを明確にする必要がある場合はお知らせください。

答えて

1

両方のExcelシートのコードエディタを開くことができます。ユーザーフォームを1つのExcelから別のExcelにドラッグアンドドロップします。おかげ

+0

モジュールをドラッグアンドドロップするのと同じですか? – Drum

+0

ありがとうございます。 – Drum

+0

はい、コードエディタで両方のExcelシートが表示されたら、ソースシートからターゲットシートにUserformsをドラッグアンドドロップしてください。ありがとう – Alok

0

あなたは他のワークブックの再インポートを&輸入VBAでユーザーフォームをエクスポートし、することができますどのように私はあなたが表示されます:のために、CopyUserForm "UserForm1"

Option Explicit 

Public Function CopyUserForm(ByVal FormName$, Optional ByVal WB_Dest As Workbook) As Workbook 'copies sheets/Thisworkbook/Userforms/Modules/Classes to a new workbook 

Dim Comp As VBComponent 
Dim CompStr$ 

On Error Resume Next 'needed for testing if component already exists in destination WorkBook, and vbe minimizing 

If WB_Dest Is Nothing Then Set WB_Dest = Application.Workbooks.add 

For Each Comp In ThisWorkbook.VBProject.VBComponents 
    With Comp 

      If .Type = vbext_ct_MSForm Then '=3 

       If .Name = FormName Then 

        '// Export Form 
        CompStr = "C:\" & .Name ' & " " & Replace(Date, "/", "-") & ".frm" 
        .Export FileName:=CompStr 'this line fails if the destination Disk is protected, wich happened on my system disk :/ 

        '// Import Form to new workbook 
        WB_Dest.VBProject.VBComponents.Import FileName:=CompStr 

        '// Kill temporary Form Files 
        Kill CompStr: Kill CompStr & ".frx" 

        Exit For 

       End If 

      End If 

    End With 'comp 

Next Comp 

Err.Clear: On Error GoTo 0 

Set CopyComponentsModules = WB_Dest 

Set Comp = Nothing 
Set WB_Dest = Nothing 

End Function 

あなたは、このような関数を呼び出すことができます例。

関連する問題