2017-04-21 110 views
0

由於複製了部分宏,我意識到它並不清楚。下面的宏,從新的WB開始,給出了所需的錯誤424對象。檢查手動模式ProjectWB和SourceWB加載正確。如何在VBA中將輸入表單複製到新創建的工作簿

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 

什麼問題出在哪裏?


原題:

在宏中,我創建一個新的工作簿,其工作正常。現在我想將輸入表單從現有的工作簿複製到新的。檢查互聯網我發現了一些位和部分。爲了清楚我已經複製了宏的兩個部分。

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

在代碼中的第一個版本,您聲明(由未明確聲明他們)都ProjectWBSourceWBVariant/String,但隨後嘗試使用它們作爲Workbook對象。

在你的代碼的第二個版本,你就明確地聲明這兩個ProjectWBSourceWB作爲Integer,但隨後試圖嘗試使用它們作爲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" 

原來的答覆:

您已經聲明SourceWBProjectWBWorkbook對象,但隨後只需爲他們分配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加載正確。

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 

什麼問題出在哪裏?

相關問題