彰化一整天的論壇

 找回密碼
 立即註冊
查看: 3035|回復: 44

Excel 如何去抓取機台每天自動產生的資料

[複製鏈接]
發表於 2017-3-9 11:43:12 | 顯示全部樓層 |閱讀模式

機台每天會自動產生資料出來
檔名為每天的日期
請問 要透過什麼樣的方式
因為報表名稱 每天都在改變
EXCEL該如何自動去抓取資料 放在報表裡


回復

使用道具 舉報

發表於 2017-4-27 16:50:05 | 顯示全部樓層
本帖最後由 imingho 於 2017-4-27 16:51 編輯
z22344566 發表於 2017-4-27 16:42
If Cells(j, i).Text = "#N/A" Then
                    Workbooks.Open Filename:=sCheck
             ...

是range的值如果是顯示#N/A,就代表要開啟檔案,因為前面您已有填入公式,
只會有二種情況,一個正常顯示,一個出現#N/A(找不到)若是空值(或空字串)的寫法是
if cells(j,1).text="" then
   Workbooks.Open Filename:=sCheck
.......
回復 支持 1 反對 0

使用道具 舉報

發表於 2017-3-10 10:15:40 | 顯示全部樓層
z22344566 發表於 2017-3-9 17:17
老師 您好
目前是使用vlookup下去抓取資料
有沒有辦法就是可以自動抓取機台產生出來的檔案

您的日期檔名可以透過日期函數去產生,要自動產生您可以去瞭解函數indirect的用法,應該就可以解決您的問題。

http://wordpress.bestdaylong.com/blog/archives/1789
如何利用函數INDIRECT來製作會計總表
回復 支持 1 反對 0

使用道具 舉報

發表於 2017-3-9 13:19:00 | 顯示全部樓層
請問您目前是怎麼抓取資料.
回復 支持 反對

使用道具 舉報

 樓主| 發表於 2017-3-9 17:17:34 | 顯示全部樓層
老師 您好
目前是使用vlookup下去抓取資料
有沒有辦法就是可以自動抓取機台產生出來的檔案
不然每天都需要自己手動更改公式才能夠抓取
有辦法透過公式就自動抓取資料?
或者需要使用到VBA

謝謝老師解答

圖片.rar

912.95 KB, 下載次數: 202

回復 支持 反對

使用道具 舉報

 樓主| 發表於 2017-3-10 11:15:39 | 顯示全部樓層
謝謝老師的幫忙
研究中...........
回復 支持 反對

使用道具 舉報

發表於 2017-3-15 08:28:04 | 顯示全部樓層
我個人建議是你應該集中放在一個共用資料夾, 然後前面用機台編號, 例如 01a-20170315
但是如果不能用此格式檔名, 可以用資料夾方式, 例如 share 資料夾下 01 表示第一台機台

然後再用 vba 的方式將資料匯進主要的 excel
有一種全自動是連人工都不用做, 直接產生完資料, 並寄發 mail, 這種我還不會
第二種叫半自動, 就是人工去按一個鍵, 才會去產生資料檔, 再用人工寄發 mail

我的做法是固定一個 excel 寫一個 vba , 定時檢查檔案有沒有產生, 有的話, 就收集進來, 等全部都收集完了, 再產生新的資料檔
這個檔案是不關閉的, 每日淩晨將前一日的檢查資料清除

如果你們的資料要保存, 我會再建議, 加設一個 express sql 2014 來存放資料

sheet1: 程式畫面
sheet2: 機台清單 + 已收集註記 (每日凌晨清除註記)
回復 支持 反對

使用道具 舉報

發表於 2017-3-15 09:18:27 | 顯示全部樓層
本帖最後由 imingho 於 2017-3-24 16:41 編輯

vba 大致上如下, 你自己靈活運用一下

sub prg()
      Filename = Format(Date, "yyyymmdd")
      fday = Day(Date) ' 天數
      For i = 1 To 4
           For j = 1 To 5
                ' fday +1 是因為你的儲存格位置, 是從 B 開始
                ' chr(65) 是 A, 因為要從 B 開始, 所以 +1
               Cells(j, fday + 1) = "=vlookup(" & Chr(65 + i) & j & ",[" & Filename & ".xlsx]工作表1!$A$2E$6,5,FALSE)"
           Next j
     Next i

end sub
   

點評

謝謝幫忙 目前還在用其他的程式 還沒正式研究 但還是很感謝 之後如果有問題 麻煩再幫幫小弟了 謝謝  發表於 2017-3-15 16:58
回復 支持 反對

使用道具 舉報

 樓主| 發表於 2017-3-24 13:38:07 | 顯示全部樓層
imingho 發表於 2017-3-10 10:15
您的日期檔名可以透過日期函數去產生,要自動產生您可以去瞭解函數indirect的用法,應該就可以解決您的問題 ...

老師好
透過INDIRECT這函數
就等於外部的檔案必須是開啟的
不然會錯誤

有沒有其他辦法
或者要使用vba?

謝謝老師
回復 支持 反對

使用道具 舉報

發表於 2017-3-24 13:52:38 | 顯示全部樓層
本帖最後由 imingho 於 2017-3-24 16:40 編輯
z22344566 發表於 2017-3-24 13:38
老師好
透過INDIRECT這函數
就等於外部的檔案必須是開啟的

您好,
      這樣您只能用vba去填入公式,您可以參考網友goodnight的程式碼.
  1. sub prg()
  2.       Filename = Format(Date, "yyyymmdd")
  3.       fday = Day(Date) ' 天數
  4.       For i = 1 To 4
  5.            For j = 1 To 5
  6.                 ' fday +1 是因為你的儲存格位置, 是從 B 開始
  7.                 ' chr(65) 是 A, 因為要從 B 開始, 所以 +1
  8.                Cells(j, fday + 1) = "=vlookup(" & Chr(65 + i) & j & ",[" & Filename & ".xlsx]工作表1!$A$2:E$6,5,FALSE)"
  9.            Next j
  10.      Next i

  11. end sub
複製代碼


回復 支持 反對

使用道具 舉報

 樓主| 發表於 2017-3-24 14:37:46 | 顯示全部樓層
imingho 發表於 2017-3-24 13:52
您好,
      這樣您只能用vba去填入公式,您可以參考網友goodnight的程式碼.

老師這段程式碼
執行之後
他就只跳出了 要我點選檔案
之後就沒有動作了

請問是版本的問題還是有其他問題

謝謝
回復 支持 反對

使用道具 舉報

您需要登錄後才可以回帖 登錄 | 立即註冊

本版積分規則

 ㄚ母滴雞湯
 員林香純滴雞精

Archiver|手機版|小黑屋|彰化一整天的論壇(Excel,Office)  |网站地图

GMT+8, 2019-9-23 21:44 , Processed in 0.153409 second(s), 23 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回復 返回頂部 返回列表