PALMisLIFE 討論區

標題: Palm Desktop to Outlook 通訊錄轉換工具 [列印本頁]

作者: mfhsieh    時間: 2004-11-29 18:58
標題: Palm Desktop to Outlook 通訊錄轉換工具
不知道有沒有人跟我一樣,通訊錄主要在 Palm Desktop 上,但 Outlook 上也常要維持一份。若用 cvs 來轉檔,如果在 PALM 上把欄位順序改變後,常常會得到錯亂的結果。若用 vcard 的方式轉檔,Palm Desktop 可以一次轉出所有的聯絡人在同一個 vcf 上,可是 Outlook 卻只會匯入第一筆資料。

所以,有了下面的 VBA script。


  1. Option Explicit

  2. Sub ImportMultiVCF()
  3.     Dim strPath As String
  4.     Dim strVCF As String
  5.     Dim strTemp As String
  6.    
  7.     Dim objFSO As Object
  8.     Dim objTF1 As Object
  9.     Dim objTF2 As Object
  10.     Dim strLine As String
  11.     Dim strBuf As String

  12.     Dim objOL As Outlook.Application
  13.     Dim objInsp As Outlook.Inspectors
  14.    
  15.     Dim objWSHShell As IWshRuntimeLibrary.IWshShell
  16.    
  17.     'modify these settings
  18.     strPath = "D:\TEMP\VCARD\"
  19.     strVCF = strPath & "all.vcf"
  20.     strTemp = strPath & "temp.vcf"
  21.     'end
  22.    
  23.     Set objFSO = CreateObject("Scripting.FileSystemObject")
  24.     Set objTF1 = objFSO.OpenTextFile(strVCF, ForReading)
  25.    
  26.     Set objOL = CreateObject("Outlook.Application")
  27.     Set objInsp = objOL.Inspectors
  28.    
  29.     Set objWSHShell = CreateObject("WScript.Shell")
  30.    
  31.     strLine = objTF1.ReadLine
  32.     strBuf = ""
  33.     Do While (Not objTF1.AtEndOfStream)
  34.    
  35.         Do While (Left(strLine, 3) <> "END")
  36.             strBuf = strBuf & strLine & vbCrLf
  37.             strLine = objTF1.ReadLine
  38.         Loop
  39.         strBuf = strBuf & strLine & vbCrLf
  40.         
  41.         Set objTF2 = objFSO.CreateTextFile(strTemp, ForAppending)
  42.         objTF2.Write strBuf
  43.         objTF2.Close
  44.         Set objTF2 = Nothing
  45.         strBuf = ""
  46.    
  47.         objWSHShell.Run strTemp
  48.         
  49.         Do Until (objInsp.Count = 1)
  50.                 DoEvents
  51.         Loop
  52.         
  53.         On Error Resume Next
  54.         objInsp.Item(1).CurrentItem.Save
  55.         objInsp.Item(1).Close olDiscard
  56.         On Error GoTo 0
  57.             
  58.         strLine = objTF1.ReadLine
  59.     Loop
  60.     objTF1.Close

  61.     Set objWSHShell = Nothing
  62.     Set objInsp = Nothing
  63.     Set objOL = Nothing
  64.     Set objTF1 = Nothing
  65.     Set objFSO = Nothing

  66. End Sub
複製代碼


其中 strPath 是工作目錄 (即 "D:\TEMP\VCARD\",可自行更改),從 Palm Desktop 轉出的 vcf 檔要放在工作目錄下,檔名為 strVCF (即 "all.vcf",可自行更改)。

用法:
1. 在 Outlook 的 VB 編輯器中,加入上面那一段程式。
2. 在 Palm Desktop 把聯絡人全選後,轉存成 vcf 檔。
3. 執行上面那一段程式。

其中第一個步驟只要第一次做過就可以了。以後就重覆第 2, 3 步驟。

[ Last edited by mfhsieh on 2004-11-29 at 19:54 ]
作者: doobop    時間: 2004-11-29 19:49
標題: Re: Palm Desktop to Outlook 通訊錄轉換工具
感謝分享
您的意思是strPath = "D:\TEMP\VCARD\"這段Code可以改成自己所需的路徑嗎?
Thx!
作者: mfhsieh    時間: 2004-11-29 19:50
標題: Re: Palm Desktop to Outlook 通訊錄轉換工具
Originally posted by doobop at 2004-11-29 19:49:
感謝分享
您的意思是strPath = "D:\TEMP\VCARD\"這段Code可以改成自己所需的路徑嗎?
Thx!


Yes!
作者: mfhsieh    時間: 2004-11-29 20:04
標題: Re: Palm Desktop to Outlook 通訊錄轉換工具
忘了提,因為用到 windows script host,所以要在 vb 編輯器內,選

工具->設定引用項目

然後把 Windows Script Host Object Model 打勾後,按確定。才能正常引用 WScript.Shell。
作者: mfhsieh    時間: 2005-2-13 18:07
標題: Re: Palm Desktop to Outlook 通訊錄轉換工具
謝謝啦!

居然能找到快三個月前的文章!
作者: 5dpulo    時間: 2006-6-13 16:22
標題: Re: Palm Desktop to Outlook 通訊錄轉換工具
小弟使用時出現一個問題"找不到檔案"! 偵錯時指向這一行:
    Set objTF1 = objFSO.OpenTextFile(strVCF, ForReading)

請問要如何修改?
作者: liaolc    時間: 2008-11-12 18:12
標題: Re: Palm Desktop to Outlook 通訊錄轉換工具
嗯...這個現成的工具蟹老板就有提供過了啊
http://www.palmislife.com/viewth ... ht=OUTLOOK%2BCANCER
作者: mfhsieh    時間: 2008-11-12 18:17
標題: Re: Re: Palm Desktop to Outlook 通訊錄轉換工具
原文由 liaolc 於 2008-11-12 18:12 發表
嗯...這個現成的工具蟹老板就有提供過了啊
http://www.palmislife.com/viewth ... ht=OUTLOOK%2BCANCER

當初寫那一段 code,主要是為了在手頭沒機器或是沒連接線時用的。
作者: mfhsieh    時間: 2008-11-12 18:20
標題: Re: Re: Palm Desktop to Outlook 通訊錄轉換工具
原文由 5dpulo 於 2006-6-13 16:22 發表
小弟使用時出現一個問題"找不到檔案"! 偵錯時指向這一行:
    Set objTF1 = objFSO.OpenTextFile(strVCF, ForReading)

請問要如何修改?

順便回個兩年前的問題
    'modify these settings
    strPath = "D:\TEMP\VCARD\"
    strVCF = strPath & "all.vcf"
    strTemp = strPath & "temp.vcf"
    'end

要先指定工作目錄 (strPath)
Palmdesktop 匯出 vcf 時,要放到工作目錄下,取名 all.vcf。
--
答案應該也不重要了!




歡迎光臨 PALMisLIFE 討論區 (http://pil.tw/) Powered by Discuz! X2.5