2017-04-21 4 views
0

マクロの一部をコピーしているために明確ではないことが分かりました。新しいWBから始まるマクロの下には、エラー424オブジェクトが必要です。マニュアルモードでチェックすると、ProjectWBとSourceWBが正しくロードされます。VBAで新しく作成したブックに入力フォームをコピーする方法

この場合、ProjectWBとSourceWBの両方が暗くなります。コンパイルエラー:無効な修飾子が表示されます。 8行目のProjectWBがハイライト表示されます

Sub Copy_Form_to_new_WB() 
    Dim SourceWB As Integer 
    Dim ProjectWB As Integer 
    ProjectWB = ActiveWorkbook.Name 
    SourceWB = "Interpretation Analysis 2.0.xlsm" 
    SourceWB.VBProject.VBComponents("Input_Analysis_Form").Export_ 
    "Input_Analysis_Form.frm" 
    ProjectWB.VBProject.VBComponents.Import "Input_Analysis_Form.frm" 
Kill "Input_Analysis_Form.frm" 
Kill "Input_Analysis_Form.frx" 
End Sub 

何が問題になりますか?


オリジナル質問:マクロで

、私は大丈夫働く新しいブックを作成しています。今では、既存のワークブックの入力フォームを新しいワークブックにコピーしたいと考えています。インターネットのチェック私はいくつかのビットと部品を発見した。明確にするために、マクロの2つの部分をコピーしました。

Dim SourceWB As Workbook 
Dim ProjectWB As Workbook 
SourceWB = ActiveWorkbook.Name 
'now the part to create the new workbook when this is active 
ProjectWB = ActiveWorkbook.Name 
SourceWB.VBProject.VBComponents("Input_Analysis_Form").Export_ 
"Input_Analysis_Form.frm" 
DestinationWB.VBProject.VBComponents.Import "Input_Analysis_Form.frm" 
Kill "Input_Analysis_Form.frm" 
Kill "Input_Analysis_Form.frx" 

は今、私はこれを行うには正しい方法であるもの 「を設定していないオブジェクト変数またはブロックと」時エラー91を実行します。

答えて

1

あなたのコードの最初のバージョンでは、あなたが(明示的に宣言することなく、)Variant/StringとしてProjectWBSourceWBの両方を宣言したが、その後Workbookオブジェクトとしてそれらを使用しようとしています。あなたのコードの2番目のバージョンで

、明示的IntegerとしてProjectWBSourceWBの両方を宣言したが、その後Workbookオブジェクトとしてそれらを使用しようとする前に、それらにString値を代入しようとしています。その後、あなたはWorkbookオブジェクトとしてSourceWBProjectWBを宣言した

、しかし:あなたの改訂コードサンプルに基づいて、私はあなたがやろうとしていると信じて

Dim SourceWB As Workbook 
Dim ProjectWB As Workbook 
'This line is the only difference to my previous answer 
Set SourceWB = Workbooks("Interpretation Analysis 2.0.xlsm") 
Set ProjectWB = ActiveWorkbook 
'Actually, here's a second difference - I hadn't noticed the missing space before 
' the line continuation character earlier 
SourceWB.VBProject.VBComponents("Input_Analysis_Form").Export _ 
"Input_Analysis_Form.frm" 
DestinationWB.VBProject.VBComponents.Import "Input_Analysis_Form.frm" 
Kill "Input_Analysis_Form.frm" 
Kill "Input_Analysis_Form.frx" 

オリジナルの答え一部のワークブックの名前としてStringを割り当ててください。

Dim SourceWB As Workbook 
Dim ProjectWB As Workbook 
Set SourceWB = ActiveWorkbook 
'now the part to create the new workbook when this is active 
'This doesn't make sense, because it will be the same as "SourceWB" 
Set ProjectWB = ActiveWorkbook 
SourceWB.VBProject.VBComponents("Input_Analysis_Form").Export_ 
"Input_Analysis_Form.frm" 
DestinationWB.VBProject.VBComponents.Import "Input_Analysis_Form.frm" 
Kill "Input_Analysis_Form.frm" 
Kill "Input_Analysis_Form.frx" 
+0

私はあなたの助言の後にフォローアップの質問を入れました。上記を確認してください –

+0

@CoertvanDuijnen - 私はあなたの質問に対する編集がうまくいかなかったと言っていましたが、あなたの質問を更新するのではなく、 "回答"を投稿したことを認識しました。司会者の前にその答えを削除してください。私はあなたのためにあなたの質問を編集し、あなたの新しい問題を反映するために私の答えを修正します。 – YowE3K

0

マクロの一部をコピーしているため明らかではありません。 新しいWBで始まるマクロの下には、エラー424オブジェクトが必要です。 手動モードでチェックすると、ProjectWBとSourceWBが正しくロードされます。

この場合、ProjectWBとSourceWBの両方が暗くなります。コンパイルエラー:無効な修飾子が表示されます。 8行目のProjectWBがハイライト表示されます

Sub Copy_Form_to_new_WB() 
    Dim SourceWB As Integer 
    Dim ProjectWB As Integer 
    ProjectWB = ActiveWorkbook.Name 
    SourceWB = "Interpretation Analysis 2.0.xlsm" 
    SourceWB.VBProject.VBComponents("Input_Analysis_Form").Export_ 
    "Input_Analysis_Form.frm" 
    ProjectWB.VBProject.VBComponents.Import "Input_Analysis_Form.frm" 
Kill "Input_Analysis_Form.frm" 
Kill "Input_Analysis_Form.frx" 
End Sub 

何が問題になりますか?

関連する問題