[資料備份]通訊錄vcf轉csv問題解決紀錄

Spread the love

【聲明】本站任何文章都可能有聯盟行銷連結,當你透過文章內的連結購買產品,我可能獲得分潤,這不會增加你任何成本,並且我分享的都是自己實際使用過的資訊,更多細節請點這裡。 Disclosure: Any post on this site may contain affiliate links, meaning I get commission if you decide to make a purchase through my links, at no cost to you.


(希望大家能用不能用都給我些回饋,不能用的話我才能修正文章造福更多朋友喔~感恩!)
前陣子hotmail帳號被停用…
最近手上又多了支iPhone…
總之再總之的結論就是讓我意識到…
不是只有電腦裡面的檔案才要備份
手機通訊錄跟 web mail的通訊錄也是很重要的囧!
原本在處理中的檔案我會使用sugarsync的5G免費雲端空間備份(透過這個推薦連結會再多給你500MB空間),
此外還有常變動的書籤
以及要上傳到FB的照片
(用sugaysync上傳到FB很方便的,尤其使用低頻寬的時候,共享資料夾同步協作也很方便)
想不到這之下唯獨遺漏了…通訊錄…!!!
Nokia c5-00可以抓出vcf檔,或用PC Suite電腦端套件存出csv
一旦存出csv,大致上就啥問題都ok了
但如果手上的是vcf,最好轉成csv,就可以在gmail、hotmail、yahoo通行無阻了
可能會碰到幾個問題
1.電腦裡沒有outlook
→→沒關係可以用outlook express
2.檔案類型vcf沒有關聯到outlook express
→→使用cmd叫出命令提示字元→輸入「assoc .vcf=vcard_wab_auto_file」
做到這裡已經可以打開VCF檔案並且加入通訊錄了(XP)
加入通訊錄
在win7則是新增到我的聯絡人(因為我是用XP所以不清楚win7的關聯)
win7加入聯絡人
3.聯絡人名稱亂碼
→→聽說是要把VCARD轉為ASCII
→→雖然有人說VCFEncoding轉檔後再匯入就可,但我用VCFEncoding轉檔後仍然亂碼
→→改用foxmail,工具/地址簿,開啟地址簿以後→工具/導入→導入vcf後再導出的vcf就不再是亂碼了,選擇csv當然也可以,只是我使用的時候只有名稱跟電話可以順利導出,電子郵件那欄卻不見了,因此我選擇導出VCF,但是導出的數量竟然跟我導入的數量不同,這點請大家要自己檢查下,猜測或許是有不支援的字元,或是不能有空格
4.不能批次匯入outlook / outlook express
→→outlook express使用者請慢慢按
→→outlook使用者可以按照以下步驟執行
(0)在vcf檔按右鍵確認已把Vcards開啟的預設程式改成outlook
(1)把所有Vcards檔放在一個檔夾內。C:\VCARDS(這個路徑需要和代碼中的路徑相同)
(2)打開Outlook的VBA編輯器。(ALT + F11叫出)
(3)「工具/設定引用項目」,勾選“Microsoft Scripting Runtime”和“Windows Script Host Object Model ”
(4)「插入/模組」,貼上下面的程式碼
(5)「執行/執行巨集」,運行剛才保存的名字“OpenSaveVCard”
(6)注意程式碼裡的引號不可用中文引號,遇到objWSHShell.Run strVCName這行錯誤可能是檔名裡面有空格

Sub OpenSaveVCard()
Dim objWSHShell As IWshRuntimeLibrary.IWshShell
Dim objOL As Outlook.Application
Dim colInsp As Outlook.Inspectors
Dim strVCName As String
Dim fso As Scripting.FileSystemObject
Dim fsDir As Scripting.Folder
Dim fsFile As Scripting.File
Dim vCounter As Integer
Set fso = New Scripting.FileSystemObject
Set fsDir = fso.GetFolder(“C:\vcards”)
For Each fsFile In fsDir.Files
strVCName = “C:\vcards\” & fsFile.Name
Set objOL = CreateObject(“Outlook.Application”)
Set colInsp = objOL.Inspectors
If colInsp.Count = 0 Then
Set objWSHShell = CreateObject(“WScript.Shell”)
objWSHShell.Run strVCName
Set colInsp = objOL.Inspectors
If Err = 0 Then
Do Until colInsp.Count = 1
DoEvents
Loop
colInsp.Item(1).CurrentItem.Save
colInsp.Item(1).Close olDiscard
Set colInsp = Nothing
Set objOL = Nothing
Set objWSHShell = Nothing
End If
End If
Next
End Sub

或改用這個可以處理空格的語法,缺點是可能會一直刷新螢幕閃屏

Sub OpenSaveVCard()

Dim objWSHShell As IWshRuntimeLibrary.IWshShell
Dim objOL As Outlook.Application
Dim colInsp As Outlook.Inspectors
Dim strVCName As String
Dim fso As Scripting.FileSystemObject
Dim fsDir As Scripting.Folder
Dim fsFile As Scripting.File
Dim vCounter As Integer
Set fso = New Scripting.FileSystemObject
Set fsDir = fso.GetFolder(“c:\vcards”)
For Each fsFile In fsDir.Files
strVCName = “c:\vcards\” & fsFile.Name
Set objOL = CreateObject(“Outlook.Application”)
Set colInsp = objOL.Inspectors
If colInsp.Count = 0 Then
Set objWSHShell = CreateObject(“WScript.Shell”)
If InStr(fsFile.Name, ” “) > 0 Then
strVCName = “c:\vcards\” & Chr(34) & fsFile.Name & Chr(34)
objWSHShell.Run (Chr(34) & “c:\vcards\” & fsFile.Name & Chr(34))
Else
objWSHShell.Run strVCName
End If
Set colInsp = objOL.Inspectors
If Err = 0 Then
Do Until colInsp.Count = 1
DoEvents
Loop
colInsp.Item(1).CurrentItem.Save
colInsp.Item(1).Close olDiscard
Set colInsp = Nothing
Set objOL = Nothing
Set objWSHShell = Nothing
End If
End If
Next

End Sub

解決完以上所有問題,
恭喜可以匯出成CSV檔案了!!!
其中Outlook 2010的連絡人匯出在「檔案/開啟/匯入」→(最下面)匯出至檔案→逗點分隔值 (DOS)
詳情請參閱線上文件
不能執行巨集的請從「檔案/選項」→信任中心,調整安全性
得到CSV以後怎麼使用就看各位囉~
由於各家MAIL有不同的欄位對應問題,剛剛搜尋了下,僅供參考~
【茶包射手日記】Outlook 2010連絡人CSV與Windows Live
为什么 Windows Live Mail 联系人导入到 Outlook 2010 后显示为空白?

分享文章
Chaneswin
Chaneswin

【阿淳】漂流過網路行銷、組織行銷、被創業的光環迷惑過,體驗那些未曾想像的驚奇之後,最終的自由卻是擁有澄澈的雙眼、返璞歸真的看世界,我的冒險不在鎂光燈的絢麗舞台,而在迷宮中。把心路歷程化為故事、把工具筆記在雲端。在瞬息萬變的世界裡,慢慢來。
【阿淳的自由生活工具箱】前身小查的白日夢。從腦中的虛幻到真實世界,這裡記錄著一路上不同階段的想法、課程、工具、實踐、挫折,從此放下權威迷思。如果翻出你需要的工具,歡迎隨喜自取、提問討論 :)

文章: 316

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *