So kopieren Sie ein Eingabeformular in eine neu erstellte Arbeitsmappe in VBA

Mir ist klar, dass es nicht klar war, weil ein Teil des Makros kopiert wurde. Unterhalb des Makros, das mit dem neuen WB beginnt, wird ein Fehler 424 object benötigt. Im manuellen Modus werden ProjectWB und SourceWB korrekt geladen.

Sub Copy_Form_to_new_WB() 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 

Wenn ich sowohl ProjectWB als auch SourceWB abdunkle, erhalte ich den Fehler Compile error: invalid qualifier. und das ProjectWB in Zeile 8 ist hervorgehoben

 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 

Was läuft falsch?


Ursprüngliche Frage:

In einem Makro erstelle ich eine neue Arbeitsmappe, die funktioniert. Jetzt möchte ich ein Eingabeformular aus der bestehenden Arbeitsmappe in das neue kopieren. Beim Überprüfen des Internets habe ich einige Bits und Teile gefunden. Um klar zu sein habe ich zwei Teile des Makros kopiert.

 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" 

Jetzt bekomme ich Laufzeiterrors 91 "objectvariable oder mit Block nicht gesetzt" was wäre der richtige path, dies zu tun.

Solutions Collecting From Web of "So kopieren Sie ein Eingabeformular in eine neu erstellte Arbeitsmappe in VBA"

In der ersten Version Ihres Codes deklarieren Sie sowohl ProjectWB als auch SourceWB als Variant/String (indem Sie sie nicht explizit deklarieren), versuchen dann jedoch, sie als Workbook .

In der zweiten Version Ihres Codes deklarieren Sie sowohl ProjectWB als auch SourceWB explizit als Integer , versuchen dann jedoch, ihnen SourceWB zuzuweisen, bevor Sie versuchen, sie als Workbook .

Auf der Grundlage Ihrer überarbeiteten Codebeispiele glaube ich, dass Sie Folgendes versuchen:

 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" 

Ursprüngliche Antwort:

Sie haben SourceWB und ProjectWB als Workbook deklariert, ihnen aber nur eine SourceWB zugewiesen (der Name einiger Arbeitsmappen).

 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" 

Mir ist klar, dass es nicht klar war, weil ein Teil des Makros kopiert wurde. Unterhalb des Makros, das mit dem neuen WB beginnt, wird ein Fehler 424 object benötigt. Im manuellen Modus werden ProjectWB und SourceWB korrekt geladen.

 Sub Copy_Form_to_new_WB() 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 

In dem Fall, ich Dim sowohl ProjectWB und SourceWB Ich bekomme den Fehler Kompiliererrors: ungültiges Qualifikationsmerkmal. und das ProjectWB in Zeile 8 ist hervorgehoben

 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 

Was läuft falsch?