簡體   English   中英

將Word文檔用戶表單復制到另一個

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM