標題:
寫VBA依序開啟類似的excel檔
[打印本頁]
作者:
wisad
時間:
2011-8-23 02:28
標題:
寫VBA依序開啟類似的excel檔
我想寫一個VBA依序開啟檔名為ABC1.xls, ABC2.xls, ABC3.xls....的excel檔
我試過用open外加迴圈但不行,有error發生
想請板上各位大大幫忙,感激不盡
另外,我想在有VBA的excel檔某三個儲存格寫113,115,18這三個數字,然後這三個數字會對應到打開的excel檔,如ABC1.xls
然後進行搜尋,當找到這三個數字後,在它們所在的column進行篩選最大值,也想請問版上大大有什麼好意見嗎?
謝謝!!!
作者:
Hsieh
時間:
2011-8-23 11:00
回復
1#
wisad
循序開檔試試
Sub nn()
fd = "D:\" '檔案目錄
obs = Array("ABC1.xls", "ABC2.xls", "ABC3.xls")
For Each ob In obs
Workbooks.Open fd & ob
Next
End Sub
複製代碼
第二個問題看不懂描述
作者:
wisad
時間:
2011-8-24 02:06
回復
2#
Hsieh
首先謝謝Hsieh大的幫忙, 回答一可以用[attach]7556[/attach][attach]7556[/attach][attach]7556[/attach]
至於問題二,麻煩請看壓縮檔內GetData.xls module-housing裡的註解描述,謝謝
作者:
wisad
時間:
2011-8-24 02:22
Hsieh大
其實只要GetData.xls的Cell(3,13)儲存格內容能夠被1.xls的Rows("7:7")欄搜尋到,我的問題就解決一半了,我就比較有把握剩下的可以自己來,感謝你的幫忙喔!!!
作者:
Hsieh
時間:
2011-8-24 08:25
回復
4#
wisad
Sub Eddie_OTP2()
Application.ScreenUpdating = False
fd = ThisWorkbook.Path & "\" '"C:\OTP\"'以相同目錄測試
obs = Array("OTP1.xls", "OTP2.xls") '檔案列表
r = 6 '寫入起始列位
For i = 0 To 1
With Workbooks.Open(fd & obs(i)) '開啟檔案
For j = 13 To 15
fstr = "CH" & ThisWorkbook.ActiveSheet.Cells(3, j)
Set a = .Sheets(1).Rows("7:7").Find(fstr, lookat:=xlWhole) '搜尋
If Not a Is Nothing Then ThisWorkbook.ActiveSheet.Cells(r, j) = Application.Max(a.EntireColumn)
Next
.Close
r = r + 1
End With
Next
End Sub
複製代碼
作者:
wisad
時間:
2011-8-25 02:20
回復
5#
Hsieh
Hsieh大 謝謝!
想請問為什麼13行的".Close"若改成"Close",雖然還是可以取值但原始檔卻沒辦法關掉呢?
Close不就是關掉所有開啟的活頁簿,在這裡是把原始檔關掉?!
另外,可以再請教With....End with的用法嗎?
我一直不是很清楚它的功用或用法,只知道在With...End with區塊內的屬性不用再打一次物件名稱
但看範例或是其他人的好像還有其他用途
十分感謝!!!
作者:
Hsieh
時間:
2011-8-25 13:39
回復
6#
wisad
With....End With
除了不必重複使用物件敘述外,您還看到甚麼不同用法?
小弟見識淺薄,還請兄台指導
作者:
wisad
時間:
2011-8-26 03:07
回復
7#
Hsieh
是我想錯了,我以為with end with 還有其他用法,因為不熟的關係
今天再研究發現它就只是省略物件名稱方便,就像.Close一樣
sorry
另外,我還想請Hsieh大你再幫我寫兩個判斷式好嗎?在我module1裡面我有註解
再麻煩你了,我的巨集就剩這兩個地方在做一下防呆就解決了
感謝!!!
[attach]7588[/attach]
歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)