彰化一整天的論壇

 找回密碼
 立即註冊
樓主: z22344566

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

[複製鏈接]
發表於 2017-3-24 15:26:33 | 顯示全部樓層
z22344566 發表於 2017-3-24 14:37
老師這段程式碼
執行之後
他就只跳出了 要我點選檔案

您張貼您原本用vlookup的公式.
看看檔案名稱是20170324.xlsx方式命名方式嗎?
回復 支持 反對

使用道具 舉報

 樓主| 發表於 2017-3-24 15:44:24 | 顯示全部樓層
imingho 發表於 2017-3-24 15:26
您張貼您原本用vlookup的公式.
看看檔案名稱是20170324.xlsx方式命名方式嗎?

老師好

我確定我的格式是20170309.xlsx這方式來命名的

以及 我後來執行變成 出現錯誤訊息 應用程式錯誤或定義上的錯誤

謝謝
回復 支持 反對

使用道具 舉報

發表於 2017-3-24 16:10:29 | 顯示全部樓層
本帖最後由 imingho 於 2017-3-24 16:26 編輯
z22344566 發表於 2017-3-24 15:44
老師好

我確定我的格式是20170309.xlsx這方式來命名的

您可以做範例excel檔案上傳.這樣比較容易找問題.
回復 支持 反對

使用道具 舉報

發表於 2017-3-24 16:43:33 | 顯示全部樓層
imingho 發表於 2017-3-24 16:10
您可以做範例excel檔案上傳.這樣比較容易找問題.

我找到問題,goodnight沒有用程式碼張貼,程式中節 : $會自動變成表情符號,所以複製時,會造成範圍中冒號跟$號會消失.
回復 支持 反對

使用道具 舉報

發表於 2017-3-24 16:50:27 | 顯示全部樓層
imingho 發表於 2017-3-24 16:43
我找到問題,goodnight沒有用程式碼張貼,程式中節 : $會自動變成表情符號,所以複製時,會造成範圍中冒號跟$ ...

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 + i) = "=vlookup(" & Chr(65 + i) & j & ",[" & Filename & ".xlsx]工作表1!$A$2:$E$6,5,FALSE)"
  9.            Next j
  10.      Next i

  11. End Sub
複製代碼


vlookup_vba.xls

28.5 KB, 下載次數: 0

售價: 1 金錢  [記錄]  [購買]

回復 支持 反對

使用道具 舉報

 樓主| 發表於 2017-3-24 17:48:34 | 顯示全部樓層
imingho 發表於 2017-3-24 16:50
goodnight的程式碼有小部分錯誤,我已修正如下.

老師好

goodnight的程式碼我一開始就有做出更改了

有時候可以執行
有時候會變錯誤
執行下去資料也沒有跑出來
檔案如上

麻煩老師
謝謝


程式.rar

219.15 KB, 下載次數: 10

回復 支持 反對

使用道具 舉報

發表於 2017-3-24 23:20:59 | 顯示全部樓層
z22344566 發表於 2017-3-24 17:48
老師好

goodnight的程式碼我一開始就有做出更改了

這個程式是抓當天日期的檔案(且必須同一個目錄),若找不到檔案就會出現要您選取檔案.從您給的檔案路徑,要把完整路徑加上才可以用在子目錄,

excel_vlookup_vba02.jpg

1.檔案在2017目錄下

excel_vlookup_vba03.jpg

2.我加上一個今天日期的xls檔案

  1. Sub 巨集1()
  2.       Dim strYear As String
  3.       strPath = Excel.ActiveWorkbook.Path & "\" & Format(Date, "yyyy")
  4.       Filename = Format(Date, "yyyymmdd")
  5.       fday = Day(Date) ' 天數
  6.       For i = 1 To 4
  7.            For j = 1 To 5
  8.                 ' fday +1 是因為你的儲存格位置, 是從 B 開始
  9.                 ' chr(65) 是 A, 因為要從 B 開始, 所以 +1
  10.                Cells(j, fday + i) = "=vlookup(" & Chr(65 + i) & j & ",'" & strPath & "\[" & Filename & ".xlsx]工作表1'!$A$2:$E$6,5,FALSE)"
  11.            Next j
  12.      Next i



  13. End Sub
複製代碼


程式.zip

234.54 KB, 下載次數: 3

售價: 2 金錢  [記錄]

回復 支持 反對

使用道具 舉報

 樓主| 發表於 2017-3-29 15:13:19 | 顯示全部樓層
本帖最後由 z22344566 於 2017-3-29 15:14 編輯

老師好
我將程式碼 改成
Sub 巨集1()
      Dim strYear As String
      strPath = Excel.ActiveWorkbook.Path & "\" & Format(Date, "yyyy")
      Filename = Format(Date, "yyyymmdd")
      fday = Day(Date) ' 天數
      For i = 1 To 1
           For j = 1 To 1
                ' fday +1 是因為你的儲存格位置, 是從 B 開始
                ' chr(65) 是 A, 因為要從 B 開始, 所以 +1
               Cells(1, 1) = "=VLOOKUP(A1,[20170328.xlsx]sheet1!$A$2: $E$6,5)"
           Next j
     Next i



End Sub


能夠執行 也將檔案放在同目錄 日期也改成今天的日期
但是執行後 卻沒有出現數值
請問是什麼問題?
回復 支持 反對

使用道具 舉報

發表於 2017-3-29 15:33:26 | 顯示全部樓層
z22344566 發表於 2017-3-29 15:13
老師好
我將程式碼 改成
Sub 巨集1()

您把程式改成這樣.迴圈只是都是做同一件事.
  1. Cells(1, 1) = "=VLOOKUP(A1,[20170328.xlsx]sheet1!$A$2: $E$6,5)"
複製代碼
所以最後您會在儲存格A1看到公式
  1. =VLOOKUP(A1,[20170328.xlsx]sheet1!$A$2: $E$6,5)
複製代碼
您要瞭解每行程式的意義,若不懂怎麼改都是錯的.
回復 支持 反對

使用道具 舉報

 樓主| 發表於 2017-4-19 10:56:38 | 顯示全部樓層
老師好
請問一下
Dim strYear As String
這句 在這段code中 有什麼意義嗎
回復 支持 反對

使用道具 舉報

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

本版積分規則

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

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

GMT+8, 2019-9-17 04:26 , Processed in 0.134697 second(s), 19 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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