[英]Copy Word document Userform to another
我下面有這段代碼可將VBA代碼從一個Word文檔復制到另一個(我正在使用C#)。 它適用於模塊,但我似乎無法使用userforms。
VBComponent sourceVBC = GetSourceDocVB();
VBComponent targetVBC = document.VBProject.VBComponents.Add(sourceVBC.Type);
string codes = sourceVBC.CodeModule.get_Lines(1, sourceVBC.CodeModule.CountOfLines);
targetVBC.CodeModule.AddFromString(codes);
targetVBC.Name = sourceVBC.Name;
是的,用戶表單已復制到目標文檔,但其字段未復制。 就像它包含標簽和文本框一樣。 這些字段不會被復制。 我在這里錯過了什么嗎?
是的,你錯過了什么。 表單不僅在代碼文件中定義,而且還需要一個二進制文件。 您沒有告訴任何有關源文件生成方式的信息。 通常,在VBA中,您使用VBComponent對象的“Export”語句。 當然,可以通過轉到Word中的VBA編輯器手動執行此操作,右鍵單擊項目組件並選擇“導出”。 如果您查看導出文件夾,您將看到一個表單被保存為兩個文件“Form1.frm”(包含代碼)和“Form1.frx”(包含二進制表單數據,作為標簽和其他內容) 。 在另一個項目中,您可以單獨使用File,Import函數,如果您導入表單,它將處理二進制定義。
在VBA中,您可以使用類似的東西從項目中導出:
For Each vbC In ActiveDocument.VBProject.VBComponents
Select Case vbC.Type
Case vbext_ct_StdModule
strVbcExt = ".bas"
Case vbext_ct_ClassModule
strVbcExt = ".cls"
Case vbext_ct_MSForm
strVbcExt = ".frm"
Case Else
End Select
strvbCName = vbC.Name
strFilename = strPath & "\" & strvbCName & strVbcExt
vbC.Export strFilename
(omitted the rest)
並導入你將使用
ActiveDocument.VBProject.VBComponents.Import strFilename
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.