iT邦幫忙

0

需要抓取.CSV自動匯入固定名稱data.xlsx 指定欄位,每30分鐘就要覆蓋一次該如何做?!

happy2002172 2 周前2019 瀏覽

http://ithelp.ithome.com.tw/upload/images/20170714/20102095mT4Fx7DMso.jpg

以下巨集方式匯入,但無法使用每30分鐘自動抓取新的檔案名稱匯入

Sub 巨集1()
'
' 巨集1 巨集
'

'
    Range("A1:I4").Select
    Range("I1").Activate
    Selection.QueryTable.Delete
    Selection.ClearContents
    Range("A1").Select
    With ActiveSheet.QueryTables.Add(Connection:= _
        "**TEXT;C:\備份資料\PC\network\P5GL0000_20170628123456_100.csv**", _
        Destination:=Range("$A$1"))
        .Name = "**P5GL0000_20170628123456_100**"
        .FieldNames = True
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .RefreshOnFileOpen = False
        .RefreshStyle = xlInsertDeleteCells
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = True
        .RefreshPeriod = 0
        .TextFilePromptOnRefresh = False
        .TextFilePlatform = 950
        .TextFileStartRow = 1
        .TextFileParseType = xlDelimited
        .TextFileTextQualifier = xlTextQualifierDoubleQuote
        .TextFileConsecutiveDelimiter = False
        .TextFileTabDelimiter = False
        .TextFileSemicolonDelimiter = False
        .TextFileCommaDelimiter = True
        .TextFileSpaceDelimiter = False
        .TextFileColumnDataTypes = Array(1, 1, 1, 1, 1, 1, 1, 1, 1)
        .TextFileTrailingMinusNumbers = True
        .Refresh BackgroundQuery:=False
    End With
End Sub

看更多先前的討論...收起先前的討論...
小成 iT邦高手 10 級 ‧ 2 周前 檢舉
看不懂題目...
happy2002172 iT邦新手 4 級 ‧ 2 周前 檢舉
1.我有測試CSV用巨集方式自動匯入到data.xlsx是可以,但只能固定CSV名稱
2.要如何設置從CSV匯入到data.xlsx指定欄位
3.要如何設置每30分鐘自動抓取CSV檔案匯入到data.xlsx
蟹老闆 iT邦大師 1 級 ‧ 2 周前 檢舉
檔名規則?
happy2002172 iT邦新手 4 級 ‧ 1 周前 檢舉
P5GL0000_20150628123456_12.cav,20150628123456_12部分會依照時間序號產生不同

2 個回答

0
msnman
iT邦研究生 5 級 ‧ 2 周前

開啟excel2013,使用資料頁籤-->來源:從文字檔-->設定分隔-->設定欗位-->設定資料格式-->完成後出現<匯入資料>對話視窗-->選擇內容-->勾選每幾分鍾更新一次-->確定。

happy2002172 iT邦新手 4 級 ‧ 1 周前 檢舉

這方法只能固定名稱,如果有變數的檔案名稱就抓取不到!!

msnman iT邦研究生 5 級 ‧ 1 周前 檢舉

那你的檔名有規則嗎?多久產生一次?
來源資料是如何取得?是否可從excel直接連線取得。

happy2002172 iT邦新手 4 級 ‧ 1 周前 檢舉
  1. 檔名規則P5GL0000_20150628123456_12.cav,20150628123456_12部分會依照時間序號產生不同約每30分鐘產生一次
  2. 有測試用excel直接連線取得但是只能抓固定檔名
0
tyudfg1682
iT邦新手 5 級 ‧ 1 周前

去用powershell寫一隻Script

  1. 抓取目標資料
  2. 設定今日時間
  3. 比較今日時間與目標資料時間 (用來判斷哪個CSV檔案是最新的)
  4. 將最新的檔案 匯入到你固定的新檔案
  5. 延遲30分鐘後,再跑一次
happy2002172 iT邦新手 4 級 ‧ 1 周前 檢舉

請問大哥有範例嗎??

tyudfg1682 iT邦新手 5 級 ‧ 4 天前 檢舉
  1. Get-ChildItem 對目標查詢資料
  2. 找到的資料內用creationtime排序
  3. Import-Csv 匯入最新的CSV檔
  4. Export-Csv 匯出CSV檔到data.xlsx
  5. sleep 延遲 1800秒(30分鐘)
  6. 用While迴圈把1-5的內容包起來

我要發表回答

立即登入回答