2013-08-28 85 views
1

文本Word文檔這就是我要做的:使用Excel 2010 VBA來創建一個包含從多個Word文件

  • 我有一個Excel工作表中,用戶可以選擇一些關鍵字。
  • 對於每個關鍵字,都有一個單獨的Word文檔,其中包含一些與該關鍵字有關的文本。
  • 做出選擇後,我希望用戶點擊一個命令按鈕,然後創建一個新的Word文檔。
  • 這個新的Word文檔將包含從對應的Word文檔中選擇的關鍵字和文本。樣式和格式化生成的Word文檔並不重要。將不同文本與不同文檔分開的空白行就足夠了。
  • 我想我已經麻煩VBA添加引用(錯誤訪問系統註冊表)

我應該如何開始,到哪裏找例子來做到這一點與後期綁定?我有中級Excel VBA經驗,但完全不熟悉跨應用程序和Word屬性。

+1

「中級Excel VBA體驗」,您可以自行編寫50%的代碼。做到這一點,並回到這裏與你會遇到的問題。作爲'Excel-Word interop'的一個良好開端,請在SO:'[excel-vba] [word-vba]'這裏的搜索引擎中輸入以下內容,然後按回車。一半的結果將是一個好的開始點。 –

回答

1

正如KazJaw上面所說的,作爲一名中級VBA用戶,您應該能夠創建用戶窗體和相關代碼,以便您的用戶按照您的描述選擇Word文檔。一旦開始使用Word文檔,與Excel編碼有些不同。

讓我分享我知道這個小:

首先,確保你已經激活Word對象庫:在工具菜單上,單擊引用。在可用引用列表中,找到並選擇適當的Microsoft Word對象庫

據我所知,遲綁定只是在分配值時聲明對象類型。我不知道這是否會解決您的'錯誤訪問系統註冊表'問題。我已經使用後期綁定,當我打電話Word文檔通過先定義一個變量作爲一個通用對象:

Dim wdApp As Object 
Dim wd As Object 

然後確定我創建的對象(S):

On Error Resume Next 

    Set wdApp = GetObject(, "Word.Application") 'establishing the word application 

    If Err.Number <> 0 Then 
     Set wdApp = CreateObject("Word.Application") 
    End If 

On Error GoTo 0 

    Set wd = wdApp.Documents.Open("C:\YourFilePath") 'establishing a file to use 

一旦你做到了這一點,您可以使用可用的命令開始操作Word,所有這些命令都可以在網絡上的其他位置找到,或者使用編譯器的提示(例如,首先輸入Word.Application.ActiveDocument.,您將看到可用於操作的功能列表該文件)。這裏有幾個,與我用一個預先定義的變量wd指特定的文檔:

   wd.Activate 'activate the word doc 
       wd.PrintOut 'printout the word doc 
       wd.FormFields("BundleNumber1").Result = sBundleNumber 'fill in a pre-established form field with data stored in the variable 'sBundleNumber' 
       wd.Close 'close the word doc 

如果您選擇文檔的全部內容,我認爲應該是相當兩岸前進(類似Word.Application.ActiveDocument.SelectAllEditableRanges,但如果必須選擇文檔的子部分,則應該知道可以在Word中定義範圍,這與在Excel中定義的方式非常相似,但邊緣不如Excel中的單元格整齊。我相信他們是由段落和中斷來定義的,但是你必須研究這是如何完成的:我從來沒有做過。

希望這對你有幫助,可以創建一個代碼,然後b e由社區爭辯(如有必要)。

相關問題