2022年4月24日 星期日

VBA:寫CSV檔案遇到資料有逗號怎辦??

因為需要,小編透過Scripting.FileSystemObject做了一個寫CSV的模組,沒有用純文字檔處理的方式:

VBA CODE:



Sub file_save(sFileName, SAVE_STR)
'sFileName 設定的寫入檔案名稱
'SAVE_STR 資料來源
On Error GoTo line1
Set fs = CreateObject("Scripting.FileSystemObject")
'On Error Resume Next
EXIT_FILE_out = EXIT_FILE(sFileName) '檢查檔案是否存在(重複)
If EXIT_FILE_out = 1 Then
fs.DeleteFile sFileName
End If
Set A = fs.CreateTextFile(sFileName, True)
temp = Split(SAVE_STR, Chr(13)) ' STEP BY FILE AVOID IN BIG FILE
For l = LBound(temp) To UBound(temp)
A.WriteLine temp(l)
Next
A.Close
SAVE_STR = ""
Exit Sub
line1:
MsgBox "存檔錯誤,請使用中斷+pause 做debug"
End Sub
Function EXIT_FILE(S)
Set fs = CreateObject("Scripting.FileSystemObject")
If fs.FileExists(S) Then
EXIT_FILE = 1
Else
EXIT_FILE = 0
End If
End Function
view raw gistfile1.txt hosted with ❤ by GitHub



以上

主要是寫入資料>檢查有無重複>有刪除/無寫入新檔>DONE

為避免單一次寫入資料過大,透過迴圈逐行寫入。

後來發現資料中會帶逗號,思考兩條路。

1.不要寫CSV,因為CSV就是用逗號區分資料的 ,用其他格式然後給EXCEL讀檔這樣???

2.直寫EXCEL檔案,因為用CSV主要目的是給EXCEL用,就直接寫EXCEL八

定案方案2直接衝:


VBA CODE

Sub file_excel_save(file_path, str_comm, SHEET_NAME)
Dim sFolder As String
Set xlApp = CreateObject("Excel.Application")
Set xlBook = xlApp.Workbooks.Open(file_path)
xlApp.Visible = True
xlBook.Application.Run "autorun2", str_comm, SHEET_NAME
xlBook.Close (True)
xlApp.Quit
Set xlApp = Nothing
End Sub
view raw gistfile1.txt hosted with ❤ by GitHub

以上
直接將整理資料方法寫在EXCEL上,然後透過OUTLOOK或WORD的 VBA去傳送資料跟乎交。
主要VBA>生成EXCEL物件>生成WORKBOOKS物件>開啟檔案>執行SUB>SUB 接收資料並處理

缺點:會占用使用時間較久,原方案是透過VBA>VBS>背景作業,無奈資料本身有逗號 XD

內容看起來沒啥,也利用了假日5小時做測試。一定要記錄一下。

沒有留言:

張貼留言

指數變化(2025.03.28)

 指數變化(2025.03.28) 上周焦點: 美國消費者信心指數 3/25 92.9 美國耐久財訂單月增率 3/26 1.4 PCE 月增 0.4 年增 2.8 (不多阿,最高還有5.5ㄝ)   本周愛看: 美國非農業就業人數變化 美國ISM製造業採購經理人指數 美國芝加哥FE...