返回列表 上一主題 發帖

EXCEL抓取CSV資料並即時更新

不開啟檔案下讀取資料的路徑/檔名設定為變數問題

欲讀取的EXCEL檔名中都有當天日期(ex:ooxxx1021216.xls)
想做一張彙總表存放在另一個資料夾
彙總表A欄位是我要的日期

以不開啟檔案方式來讀取資料
有試過直接用     "短期股權投資部位及評價控管表1021216.xls"  是抓到資料
但改成" 短期股權投資部位及評價控管表" &  dd  & ".xls"
用變數方式就不行
出現要我選取檔案的畫面
  
應該是變數設定錯誤
請問
1.變數要如何設定??
2.還有其他更方便的方式來讀取未開啟檔案資料??


Sub checkclosedfile1()
Dim strpath As String, strfile As String
Dim strsheet As String, strresult As String
    strpath = "X:\風管報表\短期股權投資部位及評價控管表"
    strfile = "短期股權投資部位及評價控管表1021202.xls"
    strsheet = "全公司I"
    strresult = getcellvalue(strpath, strfile, strsheet, "i1")
Cells(2, 2) = strresult
End Sub

Public Function getcellvalue(strpath As String, strfile As String, strsheet As String, stra1 As String)
    getcellvalue = ExecuteExcel4Macro("'" & "[" & strfile & "]" & strsheet & "'!" & Range(stra1).Address(, , xlR1C1))
End Function
小人物

TOP

回復 1# jasonwu0114
附上不行的程式碼看看

TOP

本帖最後由 jasonwu0114 於 2013-12-17 16:29 編輯

找到比較簡單寫法
想請教
假如sheet1A欄有一些日期
是我要抓的檔案名稱一部分(紅字部分)
[IRS交易部位評價表1021216.xls]
如果要把資料抓回放在B欄要如何寫如何設定變數??

另外
一次只能抓一個欄位嗎??

Sub nn()
[A1] = ExecuteExcel4Macro("'X:\風管報表\利率交換部位評價表\[IRS交易部位評價表1021216.xls]部位評價表'!R1C13")
End Sub
小人物

TOP

本帖最後由 jasonwu0114 於 2013-12-18 11:35 編輯

不好意思已解決如下
請問還可以寫的更SMART嗎??
另外yy = "'X:\風管報表\交換部位評價表\[IRS部位評價表" & kk & ".xls]部位評價表'!R1C13"
R1C13這裡只能是單一欄位嗎??

Sub nn4()
Dim yy As String
Dim kk As Range
Set kk = Sheets("工作表1").Range("A3")
Do While kk <> ""
    yy = "'X:\風管報表\交換部位評價表\[IRS部位評價表" & kk & ".xls]部位評價表'!R1C13"
    kk.Offset(0, 3) = ExecuteExcel4Macro(yy)
    Set kk = kk.Offset(1)
Loop
End Sub
小人物

TOP

本帖最後由 stillfish00 於 2013-12-18 12:45 編輯

回復 4# jasonwu0114
  1. Sub nn4()
  2.   With Sheets("工作表1")
  3.     With .Range(.[D3], .Cells(.Rows.Count, "D").End(xlUp))
  4.       .FormulaR1C1 = "='X:\風管報表\交換部位評價表\[IRS部位評價表" & .Parent.[A3].Value & ".xls]部位評價表'!R1C13"
  5.       .Value = .Value
  6.     End With
  7.   End With
  8. End Sub
複製代碼

TOP

回復 5# stillfish00

厲害厲害
又學到好幾招
可是還有一點問題
D3~8欄如果原本是空格執行後D1~D3會填以A3為參數找到的資料
               如果有數字執行後D3~D8會填以A3為參數找到的資料
要改哪??
還有    With .Range(.[D3], .Cells(.Rows.Count, "D").End(xlUp))  的意思??

   
小人物

TOP

本帖最後由 stillfish00 於 2013-12-18 18:30 編輯

回復 6# jasonwu0114
  1. Sub nn4()
  2.   With Sheets("工作表1")
  3.     With .Range(.[A3], .Cells(.Rows.Count, "A").End(xlUp)).offset(,3)
  4.       .FormulaR1C1 = "='X:\風管報表\交換部位評價表\[IRS部位評價表" & .Parent.[A3].Value & ".xls]部位評價表'!R1C13"
  5.       .Value = .Value
  6.     End With
  7.   End With
  8. End Sub
複製代碼
.Rows.Count  :  Excel最大行數
.Cells(.Rows.Count, "A")  :  A欄最下面一格
.Cells(.Rows.Count, "A").End(xlUp)  :  從A欄最下面一格往上找到有資料的儲存格
.Range(.[A3], .Cells(.Rows.Count, "A").End(xlUp))  :  從A3到A欄最後一筆資料形成的範圍
.Range(.[A3], .Cells(.Rows.Count, "A").End(xlUp)).offset(,3)  :  從A3到A欄最後一筆資料形成的範圍,這範圍再往右移動三欄

TOP

回復 7# stillfish00
不好意思還要再麻煩
執行後還是以A3為參數去抓資料
  1. .FormulaR1C1 = "='X:\風管報表\交換部位評價表\[IRS部位評價表" & .Parent.[A3].Value & ".xls]部位評價表'!R1C13"
複製代碼
應該是要改這.Parent.[A3]嗎
如何改??

感恩!!
小人物

TOP

回復 8# jasonwu0114
我好像誤會你的意思了,是這樣嗎?
  1. Sub nn5()
  2.   Dim x
  3.   With Sheets("工作表1")
  4.     For Each x In .Range(.[A3], .Cells(.Rows.Count, "A").End(xlUp)).Offset(, 3)
  5.       x.Value = ExecuteExcel4Macro("'X:\風管報表\交換部位評價表\[IRS部位評價表" & x.Offset(, -3).Value & ".xls]部位評價表'!R1C13")
  6.     Next
  7.   End With
  8. End Sub
複製代碼

TOP

回復 9# stillfish00

stillfish00大大
是的沒錯
非常感謝
學到不少東西
小人物

TOP

        靜思自在 : 有多少力量就做多少事,不要心存等待,等待才會落空。
返回列表 上一主題