Board logo

標題: 寫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


    循序開檔試試
  1. Sub nn()
  2. fd = "D:\" '檔案目錄
  3. obs = Array("ABC1.xls", "ABC2.xls", "ABC3.xls")
  4. For Each ob In obs
  5.    Workbooks.Open fd & ob
  6. Next
  7. 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
  1. Sub Eddie_OTP2()
  2.     Application.ScreenUpdating = False
  3.     fd = ThisWorkbook.Path & "\" '"C:\OTP\"'以相同目錄測試
  4.     obs = Array("OTP1.xls", "OTP2.xls") '檔案列表   
  5.     r = 6 '寫入起始列位
  6.         For i = 0 To 1
  7.         With Workbooks.Open(fd & obs(i)) '開啟檔案
  8.            For j = 13 To 15
  9.               fstr = "CH" & ThisWorkbook.ActiveSheet.Cells(3, j)
  10.                  Set a = .Sheets(1).Rows("7:7").Find(fstr, lookat:=xlWhole) '搜尋
  11.                  If Not a Is Nothing Then ThisWorkbook.ActiveSheet.Cells(r, j) = Application.Max(a.EntireColumn)
  12.            Next
  13.         .Close
  14.         r = r + 1
  15.         End With
  16.         Next
  17. 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/)