如何将input表单复制到VBA中新创build的工作簿

我意识到由于复制了一部分macros,所以不清楚。 下面的macros,从新的WB开始,给出一个错误424对象所需。 检查手动模式ProjectWB和SourceWB加载正确。

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 

在这种情况下,我调暗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 

出了什么问题?


原始问题:

在一个macros中,我正在创build一个新的工作簿,它工作正常。 现在我想从现有的工作簿复制一个input表单到新的。 检查互联网我发现一些位和部分。 为了清楚我已经复制了macros的两个部分。

 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“对象variables或未设置块”什么是正确的方法来做到这一点。

在代码的第一个版本中,您声明(通过不显式声明它们) ProjectWBSourceWB作为Variant/String ,然后尝试将它们用作Workbook对象。

在代码的第二个版本中,您将显式声明ProjectWBSourceWBInteger ,但在尝试将它们作为Workbook对象使用之前,尝试将String值赋值给它们。

根据您修改的代码示例,我相信您正在尝试:

 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" 

原始答案:

您已经声明SourceWBProjectWB作为Workbook对象,但只是分配一个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" 

我意识到由于复制了一部分macros,所以不清楚。 下面的macros,从新的WB开始,给出一个错误424对象所需。 检查手动模式ProjectWB和SourceWB加载正确。

 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 

在这种情况下,我调暗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 

出了什么问题?