返回列表 上一主題 發帖

[發問] excel用vba依序開啟檔案

[發問] excel用vba依序開啟檔案

不好意思想請問如何在excel用vba依序開啟檔案

原想法是用迴圈的方式去依序開啟儲存格中的路徑
路徑寫在工作表中sheet1的A1 和A2 ( C:\vbatest1.xls 和 C:\vbatest2.xls )
vba如下, 但無法順利run, 不知可否幫忙解答 / 修改錯誤的地方
感激!!!

Dim filename As String
Dim i As Integer

For i = 1 To 2

i = i + 0

Worksheets("Sheet1").Cells(i, 1) = filename

Workbooks.Open "filename"

Next

回復 1# xoofer


    試試看
  1. Sub test()
  2. Dim filename As String
  3. Dim i As Integer
  4. For i = 1 To 2
  5. filename = Workbooks("book1.xls").Sheets("sheet1").Cells(i, 1).Value
  6. Workbooks.Open filename
  7. Next
  8. End Sub
複製代碼

TOP

回復 2# owen06


    它出現  subscript out of range

   click "debug" 出現下述語法被 highlight...

  filename = Workbooks("book8.xls").Sheets("Sheet1").Cells(i, 1).Value

   謝謝

TOP

回復 3# xoofer

我另外改了下面的方式
結果是vbatest1 檔案開了 ,但迴圈跑第二次vbatest2 時失敗

可否麻煩指導一下該如何修正

謝謝

Sub fpath()

Dim total As Integer
Dim fpath As String

Do While i < 3
i = i + 1

fpath = Cells(i, 1)
MsgBox (fpath)

Workbooks.Open (fpath)

Loop

End Sub

TOP

回復 4# xoofer

略做修改,您試試!!
  1. Sub fpath()
  2.     Dim total As Integer
  3.     Dim fpath As String
  4.    
  5.     For i = 1 To 2
  6.         fpath = ThisWorkbook.ActiveSheet.Cells(i, 1)
  7.         Workbooks.Open (fpath)
  8.     Next
  9. End Sub
複製代碼

TOP

回復 4# xoofer


    先說一下workbooks("xxxxx")抓不到的原因,應該是因為你這個檔只是一個暫時新增的檔案,
    並未儲存在電腦中,所以才會造成這種狀況,如果是已經有儲存的excel表,就不會了。
    再來你每次的語法都有一個盲點,就是你都沒有指定是要哪一個檔案的某格值,所以你雖然開了第一個檔案vbatest1,
    但是系統已經跳開了你原本的檔案,而執行到vbatest1上了,但vbatest1上並沒有你想要的路徑,所以vbatest2就開不了了。
    所以你如果要在不同檔案或工作表間切換執行的時候,記得要給個明確的指令,才不會造成混亂。
  1. Sub test()
  2. Dim filename As String
  3. Dim i As Integer
  4. For i = 1 To 2
  5. filename = ThisWorkbook.Sheets("sheet1").Cells(i, 1).Value
  6. Workbooks.Open filename
  7. Next
  8. End Sub
複製代碼

TOP

回復 6# owen06

感謝指導

語法可行了

TOP

        靜思自在 : 不要小看自己,因為人有無限的可能。
返回列表 上一主題