昱得資訊工作室
麻辣學園
歡迎光臨, 訪客. 請先 登入註冊一個帳號.
您忘了 啟用您的帳號嗎?
2009-01-07, 11:47:30
世界展望會助學計劃
首頁 說明 登入 註冊 贊助論壇 想當作者?
新聞: 會員注意!!麻辣家族討論區[通用版規],請詳閱!!


+  麻辣家族討論區
|-+  MS Office 系列
| |-+  WORD (版主: leonchou)
| | |-+  [分享][討論] 取代日期格式
0 會員 以及 1 訪客 正在閱讀本篇主題. « 上一篇主題 下一篇主題 »
頁: [1] 向下 列印
作者 主題: [分享][討論] 取代日期格式  (閱讀 1127 次)
leonchou
版主
*
離線 離線

文章: 1204


[分享][討論] 取代日期格式
« 於: 2005-03-05, 16:37:03 »

問題:在word如何將中文日期轉成阿拉伯數字的日期格式?
如: 一九九四年七月一對夫婦
變: 1994年7月一對夫婦

面對這問題可能很直覺就想到 [搜尋/取代] 的方式。
但如果是少數幾個日期,還可一個一個取代,
否則從○~九分別取代為0~9要操作十次,
而且還可能取代到別的東西 (例如"一對夫婦"的一)。
雖然Word搜尋功能支援wildcard,但取代功能無法滿足
此問題的需求(據我所知,2000版),於是巨集就派上用場了。

試用以下的巨集,應可以省不少力氣:
程式碼:
Sub test()
Selection.HomeKey Unit:=wdStory
x = "[一二][九○][七八九○][一二三四五六七八九○]年*[一二三四五六七八九十]月"
Do
  Selection.Find.Execute x, MatchWildcards:=True
  If Selection.Type = wdSelectionIP Then Exit Do
  Selection.Text = Format(Selection.Text, "yyyy年m月")
  Selection.Collapse Direction:=wdCollapseEnd
Loop
End Sub

說明
這是萬用字元(wildcard)的應用 ,
以日期的特性來決定wildcard代碼怎麼寫:
[一二][九○][七八九○][一二三四五六七八九○]年*[一二三四五六七八九十]月
如果你不熟萬用字元,可先把每個 [ ] 看作一個字,
[ ] 裡面每個字符合文章內的就算成立。
這個代碼可以搜尋到 1970~2099 所有年月的內容,若不足還可調整。

巨集先將游標移到文件開頭 (HomeKey Unit:=wdStory),
接著跑 Do... Loop 迴圈,逐一搜尋(Find.Execute)符合上述wildcard條件的內容,
如果找到:
選取範圍(selection)會選取找到的內容(該年月反白),
程式會透過Format函數將它取代為阿拉伯數字的日期格式,
然後改變選取區(Collapse)到該年月之後,準備下一次搜尋。
如果找不到:
選取範圍不會改變,也就是無任何區域反白 (Selection.Type = wdSelectionIP),
此時就跳出迴圈 (Exit Do) 並結束程式。

我用的是2000版,只能想到這個方法...
如果你知道新版有相關的功能,或有其他不錯的點子,
歡迎分享給大家哦 Cheesy
« 最後編輯時間: 2005-03-05, 16:46:04 由 leonchou » 已記錄

頁: [1] 向上 列印 
« 上一篇主題 下一篇主題 »
自訂搜尋
跳到:  

本頁花了 0.229 秒, 以及 19 次的資料庫查詢.