問題: 如何不開啟*.xls而直接讀取其資料?
可用ExecuteExcel4Macro函數!
以下VBA可直接讀入[A1:E16]所有的資料到目前的工作表.
Sub GetExcelCell()
Dim arg As String
fl = Application.GetOpenFilename("*.xls (*.xls), *.xls", MultiSelect:=False)
If fl = False Then End
p = Left(fl, InStrRev(fl, "\"))
f = Right(fl, Len(fl) - InStrRev(fl, "\"))
s = "Sheet1" '請自行修改sheet名稱!
For r = 1 To 16
For c = 1 To 5
a = Cells(r, c).Address
Cells(r, c) = GetValue(p, f, s, a)
Next c
Next r
End Sub
Private Function GetValue(path, file, sheet, ref)
Dim arg As String
arg = "'" & path & "[" & file & "]" & sheet & "'!" & Range(ref).Range("A1").Address(, , xlR1C1)
GetValue = ExecuteExcel4Macro(arg)
End Function
2007年10月4日 星期四
訂閱:
張貼留言 (Atom)
1 則留言:
版大您好:
因為需要,所以爬了許多文章,見您分享的這程式是最特別也是最實用、有效率的做法(不需開啟檔案就可複製),因我不懂VBA,我套用您的程式,但發生一些問題~~
(1)不被開啟的B檔,『資料會不斷往下延伸』
(2)我套用您的程式,並修改了For r = 1 To 65536,For c = 1 To 15,結果資料要跑很久。
(3)假設我B檔的資料目前只登錄到A300,但執行此程式後,A301以下到A65536,未有記錄資料的儲存格,全部都會出現 『0 』的數值。
(4)當我執行程式時,會出現要我『選擇資料夾』的視窗。
(A) 問該如何:
(1)『Copy整個 Sheet1』包含格式。
(2)未有記錄資料的儲存格,是『空白』的,不會出現『0』
(3)直接就有B資料夾路徑,不用再出現選擇視窗。
我有搜尋到您 http://tw.knowledge.yahoo.com/question/question?qid=1508011600400 但是我不會改!
(B) 問該如何:
(1)您的這『選取部分儲存格的Copy』其實也是經常會使用到的,如果您願意撥空賜教的話!
期盼能得到您的回覆,謝謝!
張貼留言