標題:
[發問]
快速copy並值化
[打印本頁]
作者:
PJChen
時間:
2018-5-19 00:17
標題:
快速copy並值化
請問以下的程式
它可以快速copy每個工作表
但copy後我要它也同時做數值化的動作,但它只會值化第一個工作表
請問要如何讓它值化每一個工作表?
Sub Qcopy()
Set Wb = Workbooks("進出口請款.2017.xlsx")
Wb.Sheets.Copy
For Each Sh In Wb.Sheets
Sh.Visible = True
Next
For Each Sh In Wb.Sheets
Cells.Select
Selection.Copy
Selection.PasteSpecial xlPasteValues '值化
Next
End Sub
複製代碼
作者:
naruto018
時間:
2018-5-19 08:08
回復
1#
PJChen
只在第一個工作表貼上值,是因為沒有指定工作表,所以只對當前的工作表作用
要改成下面這樣
For Each Sh In Wb.Sheets
Sh.Cells.Copy
Sh.Cells.PasteSpecial xlPasteValues '值化
Next
複製代碼
作者:
ikboy
時間:
2018-5-19 11:06
Sub zz()
For Each s In Sheets
With s
.UsedRange = .UsedRange.Value
End With
Next
End Sub
複製代碼
作者:
PJChen
時間:
2018-5-19 14:28
回復
2#
naruto018
您好,
但我原先的程式功能是可以將
原檔快速的完全複製
,
程式作修改後,確實能夠將每個工作表都值化,但是它是將原檔值化,而沒有另外copy成新檔.
請問可以如何修改成我要的功能?
作者:
PJChen
時間:
2018-5-19 14:35
回復
3#
ikboy
您好,
原先的程式功能是可以將
原檔快速的完全複製
,
測試過您修改的程式後,它完全沒有任何改變,我想是因為我原先的程式中有Dim的宣告,稍作修改為以下後,
確實能夠很快速的將每個工作表都值化,但與2樓的程式相同,它只是將原檔值化,而沒有另外copy成新檔.
請問可以如何修改成我要的功能?
Sub Qcopy()
Option Explicit
Dim Wb As Workbook, Sh As Worksheet, Rng As Range
Set Wb = Workbooks("進出口請款.2017.xlsx")
For Each Sh In Wb.Sheets
With Sh
.UsedRange = .UsedRange.Value
End With
Next
End Sub
複製代碼
作者:
PJChen
時間:
2018-5-19 18:25
本帖最後由 PJChen 於 2018-5-19 18:27 編輯
回復
2#
naruto018
大大好,
改成以下就達成我要的功能了,謝謝!
Sub Qcopy()
Set Wb = Workbooks("進出口請款.2017.xlsx")
Wb.Sheets.Copy
For Each Sh In Sheets
Sh.Cells.Copy
Sh.Cells.PasteSpecial xlPasteValues '值化
Next
End Sub
複製代碼
作者:
PJChen
時間:
2018-5-19 18:35
本帖最後由 PJChen 於 2018-5-19 18:38 編輯
回復
3#
ikboy
您好,
您的程式可以執行得更快速,我將程式改為以下,利用O1儲存格去指定檔名,但sheet也想用指定的方式寫在
Q2
,
例如:我想讓所有檔名包含"338"的工作表(也就是Q2=338)全部都值化,請問該如何寫這一段程式?
Option Explicit
Dim Wb As Workbook, Sh As Worksheet
Sub Qcopy()
Set Wb = Workbooks(Workbooks("VBA報表指令.xlsm").Worksheets("動作").Range("O1").Value) '儲存格的值為檔案名稱
Wb.Sheets.Copy
For Each Sh In Sheets
With Sh
.UsedRange = .UsedRange.Value
End With
Next
End Sub
複製代碼
作者:
PJChen
時間:
2018-5-20 20:12
回復
7#
PJChen
請問:
以下程式,檔名指定在O1,O1檔案全部copy後值化。
我想做另一種方式,除了O1指定檔名外,將sheet的名稱指定在Q2,讓sheet名稱可以自由變動,也就是只要sheet名稱含蓋在Q2的名稱內,都可以自動完全複製到新檔案中並值化,請問該如何修改以下程式?
Sub Qcopy()
Set Wb = Workbooks(Workbooks("VBA報表指令.xlsm").Worksheets("動作").Range("O1").Value) '儲存格的值為檔案名稱
Wb.Sheets.Copy
For Each Sh In Sheets
With Sh
.UsedRange = .UsedRange.Value '值化
Application.DisplayAlerts = False '在程序執行過程中使出現的警告框不顯示
End With
Next
End Sub
複製代碼
歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)