返回列表 上一主題 發帖

[發問] 使用儲存格設定來指定活頁

[發問] 使用儲存格設定來指定活頁

各位大大好

我有兩個檔案,
一個是"1.年度訓練總表-109",後面的109會隨年度不同而改變
另一個"2.年度訓練計畫表"
"2.年度訓練計畫表"會去抓"1.年度訓練總表-109"的資料來做整理,

目前我有重新修改一下巨集"完成_總結new()"
在"2.年度訓練計畫表"有做一個設定頁,變更年度會開啟那個年度的資料
但要執行Do While的時候我還是要一個個修改成我要的年度
舉例之前是"1.年度訓練總表-108"我就要進去改成"1.年度訓練總表-109"
這個是不是也能參照設定頁的資訊呢?

另外想請問有辦法不打開活頁簿就能抓取資料出來嗎?

巨集寫得有點亂還請見諒
  1. Sub 完成_總結new()

  2. i = 2
  3. If Range("a2") = "" Then
  4.     r = 2
  5. Else
  6.     r = Range("a1").End(xlDown).Row + 1
  7. End If

  8. Workbooks.Open Filename:=Sheets("設定頁").Range("B5")

  9. Do While Range("a" & i) <> ""
  10.     Workbooks("2.年度訓練計畫表").Worksheets("連結總表").Cells(r, 1) = Workbooks("1.年度訓練總表-109").Sheets("總表").Range("a" & i)
  11.     Workbooks("2.年度訓練計畫表").Worksheets("連結總表").Cells(r, 2) = Workbooks("1.年度訓練總表-109").Sheets("總表").Range("e" & i)
  12.     Workbooks("2.年度訓練計畫表").Worksheets("連結總表").Cells(r, 3) = Workbooks("1.年度訓練總表-109").Sheets("總表").Range("f" & i)
  13.     Workbooks("2.年度訓練計畫表").Worksheets("連結總表").Cells(r, 4) = Workbooks("1.年度訓練總表-109").Sheets("總表").Range("j" & i)
  14.     Workbooks("2.年度訓練計畫表").Worksheets("連結總表").Cells(r, 5) = Workbooks("1.年度訓練總表-109").Sheets("總表").Range("i" & i)
  15.     Workbooks("2.年度訓練計畫表").Worksheets("連結總表").Cells(r, 6) = Workbooks("1.年度訓練總表-109").Sheets("總表").Range("d" & i)
  16.     Workbooks("2.年度訓練計畫表").Worksheets("連結總表").Cells(r, 7) = Workbooks("1.年度訓練總表-109").Sheets("總表").Range("l" & i)
  17.     Workbooks("2.年度訓練計畫表").Worksheets("連結總表").Cells(r, 8) = Workbooks("1.年度訓練總表-109").Sheets("總表").Range("m" & i)
  18.     Workbooks("2.年度訓練計畫表").Worksheets("連結總表").Cells(r, 9) = Workbooks("1.年度訓練總表-109").Sheets("總表").Range("q" & i)
  19.     Workbooks("2.年度訓練計畫表").Worksheets("連結總表").Cells(r, 10) = Workbooks("1.年度訓練總表-109").Sheets("總表").Range("t" & i)
  20.     Workbooks("2.年度訓練計畫表").Worksheets("連結總表").Cells(r, 11) = Workbooks("1.年度訓練總表-109").Sheets("總表").Range("ab" & i)
  21.     Workbooks("2.年度訓練計畫表").Worksheets("連結總表").Cells(r, 12) = Workbooks("1.年度訓練總表-109").Sheets("總表").Range("y" & i)
  22.     Workbooks("2.年度訓練計畫表").Worksheets("連結總表").Cells(r, 13) = Workbooks("1.年度訓練總表-109").Sheets("總表").Range("z" & i)
  23. '    Workbooks("2.年度訓練計畫表").Worksheets("連結總表").Cells(r, 14) = Workbooks("1.年度訓練總表-109").Sheets("總表").Range("aa" & i)
  24.         If Workbooks("1.年度訓練總表-109").Sheets("總表").Range("j" & i) = "外訓" And Workbooks("1.年度訓練總表-109").Sheets("總表").Range("q" & i) <> "" Then
  25.             Workbooks("2.年度訓練計畫表").Worksheets("連結總表").Cells(r, 14) = "詳如明細"
  26.         Else
  27.             Workbooks("2.年度訓練計畫表").Worksheets("連結總表").Cells(r, 14) = Workbooks("1.年度訓練總表-109").Sheets("總表").Range("aa" & i)

  28.         End If
  29.     r = r + 1
  30.     i = i + 1
  31. Loop

  32. Workbooks("1.年度訓練總表-109").Close

  33. End Sub
複製代碼

教育訓練.zip (76.76 KB)

回復 2# samwang


這個是不是也能參照設定頁的資訊呢?
>> 這是什麼意思? 你的設定頁B1已有年度,這不是很好嗎?>>不好意思,我不太懂你的意思
另外也可以將2個檔案同時放在同一個資料夾,這樣就不用設定年度,可以直接開啟另一個檔案
>>是放在同一個年度的資料夾裡,
我寫不出來的是 Workbooks("2.年度訓練計畫表").Worksheets("連結總表").Cells(r, 1) = Workbooks("1.年度訓練總表-109").Sheets("總表").Range("a" & i)
要如何讓Workbooks("1.年度訓練總表-109")跟著設定頁變動


另外想請問有辦法不打開活頁簿就能抓取資料出來嗎?
>> 可以開啟檔案後資料裝入陣列就關閉檔案,然後最後做資料處理,這樣應該很快才對。
>>不好意思,請我該怎寫呢?

TOP

回復 4# samwang


  您好,因為我的資料夾裡面不只一個excel檔,可以用指定的方式嗎?
  Workbooks("1.年度訓練總表-109")-->>這個能隨設定頁變動嗎?

TOP

回復 6# samwang


好的,謝謝,最近比較忙我會再找時間測試
另外想請問Workbooks("1.年度訓練總表-109")-->>這個能隨設定頁變動嗎?

TOP

請問是哪裡出錯了嗎?一直出現執行錯誤
  1. Sub 完成_總結new()

  2. i = 2
  3. If Range("a2") = "" Then
  4.     r = 2
  5. Else
  6.     r = Range("a1").End(xlDown).Row + 1
  7. End If

  8. SNAME = Sheets("設定頁").Range("B5")
  9. Workbooks.Open Filename:=SNAME

  10. Do While Range("a" & i) <> ""
  11.     Workbooks("2.年度訓練計畫表").Sheets("連結總表").Cells(r, 1) = Workbooks("SNAME").Sheets("總表").Range("a" & i)
  12.     Workbooks("2.年度訓練計畫表").Sheets("連結總表").Cells(r, 2) = Workbooks("SNAME").Sheets("總表").Range("e" & i)
  13.     Workbooks("2.年度訓練計畫表").Sheets("連結總表").Cells(r, 3) = Workbooks("SNAME").Sheets("總表").Range("f" & i)
  14.     Workbooks("2.年度訓練計畫表").Sheets("連結總表").Cells(r, 4) = Workbooks("SNAME").Sheets("總表").Range("j" & i)
  15.     Workbooks("2.年度訓練計畫表").Sheets("連結總表").Cells(r, 5) = Workbooks("SNAME").Sheets("總表").Range("i" & i)
  16.     Workbooks("2.年度訓練計畫表").Sheets("連結總表").Cells(r, 6) = Workbooks("SNAME").Sheets("總表").Range("d" & i)
  17.     Workbooks("2.年度訓練計畫表").Sheets("連結總表").Cells(r, 7) = Workbooks("SNAME").Sheets("總表").Range("l" & i)
  18.     Workbooks("2.年度訓練計畫表").Sheets("連結總表").Cells(r, 8) = Workbooks("SNAME").Sheets("總表").Range("m" & i)
  19.     Workbooks("2.年度訓練計畫表").Sheets("連結總表").Cells(r, 9) = Workbooks("SNAME").Sheets("總表").Range("q" & i)
  20.     Workbooks("2.年度訓練計畫表").Sheets("連結總表").Cells(r, 10) = Workbooks("SNAME").Sheets("總表").Range("t" & i)
  21.     Workbooks("2.年度訓練計畫表").Sheets("連結總表").Cells(r, 11) = Workbooks("SNAME").Sheets("總表").Range("ab" & i)
  22.     Workbooks("2.年度訓練計畫表").Sheets("連結總表").Cells(r, 12) = Workbooks("SNAME").Sheets("總表").Range("y" & i)
  23.     Workbooks("2.年度訓練計畫表").Sheets("連結總表").Cells(r, 13) = Workbooks("SNAME").Sheets("總表").Range("z" & i)
  24. '    Workbooks("2.年度訓練計畫表").Worksheets("連結總表").Cells(r, 14) = Workbooks("SNAME").Sheets("總表").Range("aa" & i)
  25.         If Workbooks("SNAME").Sheets("總表").Range("j" & i) = "外訓" And Workbooks("SNAME").Sheets("總表").Range("q" & i) <> "" Then
  26.             Workbooks("2.年度訓練計畫表").Sheets("連結總表").Cells(r, 14) = "詳如明細"
  27.         Else
  28.             Workbooks("2.年度訓練計畫表").Sheets("連結總表").Cells(r, 14) = Workbooks("SNAME").Sheets("總表").Range("aa" & i)

  29.         End If
  30.     r = r + 1
  31.     i = i + 1
  32. Loop

  33. Workbooks(SNAME).Close
  34. 'x = WorksheetFunction.CountIf(Sheets("連結總表").Range("c:d"), Range("m:m"))
  35. End Sub
複製代碼

教育訓練.zip (70.35 KB)

TOP

回復 10# samwang


您好,謝謝您
共同作業的人員希望先改為以下的方式操作,
因太深的巨集他無法了解且之後他無法做修改,
故我們討論後只好將原本巨集做了簡單調整方便他日後做維護,
但出現執行錯誤,陣列索引超出範圍
因我們找不出錯誤原因為何,
故想請教大大幫忙

您之前所提供的巨集,我會留下作個人使用,謝謝
  1. Sub 完成_總結new()

  2. i = 2
  3. If Range("a2") = "" Then
  4.     r = 2
  5. Else
  6.     r = Range("a1").End(xlDown).Row + 1
  7. End If
  8. MsgBox (r)

  9. SNAME = Sheets("設定頁").Range("B5")
  10. Workbooks.Open Filename:=SNAME

  11. Do While Range("a" & i) <> ""
  12.     Workbooks("2.年度訓練計畫表").Sheets("連結總表").Cells(r, 1) = Workbooks("SNAME").Sheets("總表").Range("a" & i)
  13.     Workbooks("2.年度訓練計畫表").Sheets("連結總表").Cells(r, 2) = Workbooks("SNAME").Sheets("總表").Range("e" & i)
  14.     Workbooks("2.年度訓練計畫表").Sheets("連結總表").Cells(r, 3) = Workbooks("SNAME").Sheets("總表").Range("f" & i)
  15.     Workbooks("2.年度訓練計畫表").Sheets("連結總表").Cells(r, 4) = Workbooks("SNAME").Sheets("總表").Range("j" & i)
  16.     Workbooks("2.年度訓練計畫表").Sheets("連結總表").Cells(r, 5) = Workbooks("SNAME").Sheets("總表").Range("i" & i)
  17.     Workbooks("2.年度訓練計畫表").Sheets("連結總表").Cells(r, 6) = Workbooks("SNAME").Sheets("總表").Range("d" & i)
  18.     Workbooks("2.年度訓練計畫表").Sheets("連結總表").Cells(r, 7) = Workbooks("SNAME").Sheets("總表").Range("l" & i)
  19.     Workbooks("2.年度訓練計畫表").Sheets("連結總表").Cells(r, 8) = Workbooks("SNAME").Sheets("總表").Range("m" & i)
  20.     Workbooks("2.年度訓練計畫表").Sheets("連結總表").Cells(r, 9) = Workbooks("SNAME").Sheets("總表").Range("q" & i)
  21.     Workbooks("2.年度訓練計畫表").Sheets("連結總表").Cells(r, 10) = Workbooks("SNAME").Sheets("總表").Range("t" & i)
  22.     Workbooks("2.年度訓練計畫表").Sheets("連結總表").Cells(r, 11) = Workbooks("SNAME").Sheets("總表").Range("ab" & i)
  23.     Workbooks("2.年度訓練計畫表").Sheets("連結總表").Cells(r, 12) = Workbooks("SNAME").Sheets("總表").Range("y" & i)
  24.     Workbooks("2.年度訓練計畫表").Sheets("連結總表").Cells(r, 13) = Workbooks("SNAME").Sheets("總表").Range("z" & i)
  25. '    Workbooks("2.年度訓練計畫表").Worksheets("連結總表").Cells(r, 14) = Workbooks("SNAME").Sheets("總表").Range("aa" & i)
  26.         If Workbooks("SNAME").Sheets("總表").Range("j" & i) = "外訓" And Workbooks("SNAME").Sheets("總表").Range("q" & i) <> "" Then
  27.             Workbooks("2.年度訓練計畫表").Sheets("連結總表").Cells(r, 14) = "詳如明細"
  28.         Else
  29.             Workbooks("2.年度訓練計畫表").Sheets("連結總表").Cells(r, 14) = Workbooks("SNAME").Sheets("總表").Range("aa" & i)

  30.         End If
  31.     r = r + 1
  32.     i = i + 1
  33. Loop

  34. Workbooks(SNAME).Close
  35. 'x = WorksheetFunction.CountIf(Sheets("連結總表").Range("c:d"), Range("m:m"))
  36. End Sub
複製代碼

教育訓練.zip (70.35 KB)

TOP

        靜思自在 : 【時間無法遮擋】怕時間消逝,花了許多心血,想盡各式方法要遮擋時間,結果是:浪費了更多時間,且一無所成!
返回列表 上一主題