- 帖子
- 49
- 主題
- 18
- 精華
- 0
- 積分
- 154
- 點名
- 0
- 作業系統
- windows
- 軟體版本
- XP
- 閱讀權限
- 20
- 性別
- 男
- 註冊時間
- 2010-6-16
- 最後登錄
- 2024-8-5
|
我目前每天都有 8000 多個 csv 檔案需要修改格式
目前我的方法是寫一個程式,一個檔案一個檔案開啟修改然後儲存
但這樣的方法我發現有個問題,就是程式可能修改了五六個檔案後就會自己停下來頓一下,
過個幾秒鐘甚至一分鐘之後又繼續,導致整個程式跑完可能要花好幾個小時。
另外就是,不知道這樣的操作方式,是否會影響到整個作業系統,導致作業系統會有許多小問題
請版上各位高手是否可以建議比較有效及正確的方式,以下是我的程式碼請參考,謝謝!
Sub 資料轉檔()
Dim i As Integer
Dim mypath As String
Dim myfile As String
Dim LastRow As Integer
Dim CompanyName As String
Application.ScreenUpdating = False
date = Format(Date, "yyyymmdd")
'date = "20150112" '指定專屬日期
mypath = "D:\record\" & date & "\"
myfile = Dir(mypath & "*.csv")
Do While myfile <> ""
'開啟檔案
Workbooks.Open Filename:=mypath & myfile
With ActiveWorkbook.Sheets(1)
'調整資料格式
CompanyName = CStr(.Cells(2, 2))
.UsedRange.Rows("1:3").Delete
.UsedRange.Columns("G:K").Cut
.Range("A" & .Rows.Count).End(xlUp).Offset(1).Insert Shift:=xlDown
With .UsedRange.Range("A:A")
On Error Resume Next
.SpecialCells(xlCellTypeBlanks).EntireRow.Delete
End With
.UsedRange.Sort key1:=.Range("A1"), Order1:=xlAscending, Header:=xlNo
.UsedRange.Columns(1) = date
.UsedRange.Columns("B:B").Insert Shift:=xlToRight
For i = 1 To .UsedRange.Rows.Count
.Cells(i, 3) = Left(.Cells(i, 3), 4)
.Cells(i, 5) = .Cells(i, 5).Value / 1000
.Cells(i, 6) = .Cells(i, 6).Value / 1000
Next
.UsedRange.NumberFormatLocal = "G/通用格式"
.UsedRange.Columns("B:B").NumberFormatLocal = "@"
.UsedRange.Columns(2) = CompanyName
myfile = Dir()
End With
'檔案儲存後關閉
ActiveWorkbook.Close True
DoEvents
Loop
Application.ScreenUpdating = True
End Sub |
|