Board logo

標題: [轉貼] VBA-自訂存檔方式 / 讀取文件屬性 [打印本頁]

作者: 偉婕    時間: 2010-6-30 22:35     標題: VBA-自訂存檔方式 / 讀取文件屬性

原發表者:leonchou (2005-04-18)

這是網友問我的, 提出來給大家參考 ^^
問題:在Word中保存文件時,如何一次將文件能同時以.DOC和.TXT格式進行保存?
而且還希望象Word一樣從文章中自動提取標題 (註1)。

[方法一] 做成巨集按鈕
 
•新增一個巨集, 內容如下--
 
Sub 自訂存檔()
1 With ActiveDocument: On Error GoTo 7
2 aa = .BuiltInDocumentProperties(wdPropertyTitle)
3 If aa = "" Then aa = .Range(, Len(.Sentences(1)) - 2)
4 .SaveAs aa, FileFormat:=wdFormatText
5 .SaveAs aa, FileFormat:=wdFormatDocument
6 End With: Exit Sub
7 MsgBox "檔名 " & aa & " 無效, 無法存檔!"
End Sub
 
[說明]
1 引用目前文件. 對使用中的文件作以下的動作.
 以下若發生錯誤 (檔名無效, 無法存檔) 則跳到第 7 行
2 設定變數 aa = 文件屬性 (摘要資訊) 的"標題"
3 若沒有標題則設 aa = 文件中的第一個句子 (不含句號及段落符號) (註1)
4 將文件以 aa 為檔名, 存為純文字檔案 (.txt)
5 將文件以 aa 為檔名, 存為標準 Word 文件 (.doc)
6 結束目前文件的引用, 結束巨集
7 當存檔錯誤時顯示訊息

•[工具] → [自訂..] → [指令] → [巨集]
 將此巨集拉出來成為一個按鈕 (你可以更改它的名稱) (註2)
 
•存檔時按這個按鈕即可.
 
[方法二] 使用事件巨集,自動執行
 
把上述的巨集內容放到 Application 的 DocumentBeforeSave 事件裡。
這方法的好處是不需另建按鈕,只要依平時習慣存檔,就會自動引發這個事件巨集而達到所要的功能。
 
但一開始的準備工作較麻煩 (一勞永逸^^),因為 --事件巨集必需放在所屬的物件模組之中,但由於並沒有內建的 Application 物件模組 ~(包括 Word、Excel 或其他 Office 軟体的 VBA 都是如此)
所以必需自行新增一個並宣告為 Application 物件模組,並且在每次 Word 開啟後要先引用這個模組,才能發生作用。
 
所以呢,程序有點繁瑣... 有人想了解的話再討論好了   
 
[附註]
1. 一般 Word 文件在第一次存檔時, 會以文件 "摘要資訊" 的 [標題]做為預設檔名; 若沒有標題, 則以文件的第一句作為預設檔名。
2. 按鈕必需放在任一工具列中, 可放入現有的工具列, 或是自行新增一個。按鈕拉出來後, [自訂工具] 視窗未關閉前, 可在按鈕上按右鍵以修改名稱。
3. 為說明之便而在巨集內加上行號, 一般是不需要行號的。




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)