我需要在Word 2003中使用VBA創建主要來自先前存在的片段和本地數據庫的文檔(約150個報表,字母)。然後,我需要更改這些代碼片段中的特定部分如日期,短語,用戶信息,& c。顯然,我也會在程序中生成一些內容。使用VBA創建Word或XML文檔
當前,這個相同的任務是由一些可怕的傳統VBA完成(排序)。 (嵌套的IF和FOR,以及超過200個文本框都稱爲TextBox#)它通過向Word應用程序發送指令(例如Selection.MoveDown Unit:wdLine, Count:=1
)完成作業。因此,即使生成一個簡單的字母也需要30秒,並鎖定Office。
我完全能夠對範圍和書籤和改進的邏輯做同樣的事情,但我的直覺是,這應該很容易用XML來實現,而且這樣做在未來會有優勢,因爲這些報告/信件將被訪問,並可能被許多不同的用戶和應用程序多次編程讀取。
我一直在閱讀關於XML和WordML架構,但感覺就像我失去了一些東西。
我想要的代碼上做發佈這是什麼:
- 抓鬥預定義的XML片斷(頁眉,頁腳等)
- 生成新的字符串並連接預定義的XML字符串
- 另存爲XML
- 在XML文件(日期,用戶名等)
現有的標籤,我可以做到這一點的變化值。
我的問題是:
我一直有麻煩我周圍的架構和命名空間的頭。數據已經由VBA代碼驗證過,那麼我需要一個模式用於什麼?
通過創建一個包含整個文檔的XML的長連接字符串來創建文檔比較好,銘記在我的模型中,大部分XML將來自現有片段,或者使用XML Dom並創建它編程:
20 Set oElementName = oDOM.createElement("Name")
30 oElement.appendChild oElementName
40 oElementName.Text = "This is the text of name"
- 如何打印文檔? (從概念上講,這給我造成了最大的麻煩。)我並不是特別想從Word生成的WordML中進行逆向工程。我需要它,我需要先將其轉換爲HTML?我可以在Word中創建樣式表,以便自動格式化它嗎?
這是否有任何意義?我應該只使用範圍和書籤嗎?
XML對我來說似乎很強大,但它可能是一個扭曲的錘子和指甲問題,即「我想學習錘子,所以每個問題看起來像釘子,給我一個很好的理由來學習錘子。」
(我知道我不應該學習如何做,因爲我是做這些事情的!但我只是一個盲目的無人機,抱怨我們的文檔生成系統的質量,他們說:「閉嘴並修復它那麼!哦,你不知道任何VBA?那麼,我們不能給你任何課程或任何東西,所以你要學習。「這是我工作生活中最好和最差的2個月。)
我很感謝你閱讀所有這些,如果你有,並且你可能有任何幫助/建議!
感謝您的回答。我一直在閱讀Open XML,它看起來不錯,並且有人談到Office 2007將在今年晚些時候推出到辦公室,但是我最近已經證實,這至少要到2010年中期纔會發生。所以這是我不幸的地方。 – user51498 2009-02-26 02:08:51