promotion image of download ymail app
Promoted
Airman
Lv 4
Airman asked in 電腦與網際網路軟體 · 1 decade ago

VBA~如何將各效果檔案有二個以上的工作表合併成一個工作表?

範例附檔︰http://www.FunP.Net/420654

需求︰

在模組1寫入副程式,將由T7公式運算後而產生的各效果檔案之工作表,

都以一個工作表呈現,即當效果檔案不論有幾個工作表,都將其合併成一個工作表。

PS︰新工作表名稱沿用第1個或最後1個原工作表名稱皆可;新檔案名稱不變。

說明︰

因為有T7公式運算及原程式碼有格式設定需求的關係,

所以無法直接由總表期數擷取製作一個符合需求的工作表,

只有以原效果檔的工作表擷取(類似剪貼)製作,以期能保留原程式碼所呈現的格式設定~

請詳見︰

定AS_10_100期-2sheet-56(新效果檔)

定AS_10_100期-12sheet-19(新效果檔)→原效果檔只有一個工作表,故新效果檔不變(相同)。

定AS_10_100期-12sheet-23(新效果檔)。

請問模組1的副程式應該如何編寫?

懇請 各位大師與先進惠予指教!!! 謝謝!!!

Update:

題意說明~純屬小弟個人的拙思~

如果有不需以『原效果檔工作表』為依據的其它更快速之方法更佳。

謝謝!!!

Update 2:

仔細思考~

似乎應該可以依據總表的S7與T7顯示之期數,在原程式碼修正擷取範圍即可。

有勞各位大師與先進費神指教!!! 謝謝!!!

Update 3:

但又想到~原有的格式設定(有需要時還會增加)是T6與S7一對一的公式,

如果依據總表將T6與T7有顯示期數值的S7期數放在一齊比對,

就變成一對多,似乎又有點感覺不對勁。

真是想的頭殼都快要爆了!!!

^ ^"

1 Answer

Rating
  • 顯栓
    Lv 7
    1 decade ago
    Favorite Answer

    主要片段

    If b <> "" Then

    If d = 0 Then

    b_num = b.Value

    Sheets.Add

    ActiveWindow.Zoom = 75 '縮放

    d = d + 1

    ReDim Preserve brr(d - 1)

    ActiveSheet.Name = Sheets(2).[T6] & "-" & Sheets(2).Range("S" & b.Row) '工作表重新命名

    brr(d - 1) = Sheets(2).[T6] & "-" & Sheets(2).Range("S" & b.Row) '工作表重新命名記錄陣列

    Sheets(2).Range("A1:T" & Sheets(2).Range("S" & b.Row) + Sheets(2).[T3] + 7).Copy

    Sheets(1).[A1].Select

    ActiveSheet.Paste

    Selection.ColumnWidth = 5 '欄寬

    Sheets(2).Range("I" & Evaluate(brr(d - 1)) + 6 & ":p" & Sheets(2).Range("S" & b.Row) + Sheets(2).[T3] + 6 + Evaluate(brr(d - 1))).Copy 'I:P 資料複製到

    Sheets(1).[I7].Select 'I7

    ActiveSheet.Paste '貼上

    Else

    Sheets(1).Range("I:P").Offset(0, d * 8 - 8).Insert Shift:=xlToRight

    Sheets(1).Range("A6:H6").Copy

    Sheets(1).[I6].Offset(0, d * 8 - 8).Select

    ActiveSheet.Paste

    Sheets(2).Range("I" & b.Value - b_num + 6 & ":p" & b.Value + 6).Copy

    Sheets(1).[I7].Offset(0, d * 8 - 8).Select

    ActiveSheet.Paste

    d = d + 1

    End If

    詳細參考

    解題範例 : http://tco.cseintltd.com.tw/applerot/VBA/AS.xls

    • Commenter avatarLogin to reply the answers
Still have questions? Get your answers by asking now.