我是VBA编码新手。 我目前正在使用Ron De Bruin先生的代码将多个表格导出到单独的工作簿中,并从以下门户附加到Outlook Mail: http://www.rondebruin.nl/win/s1/outlook/amail3.htm
此代码还包含仅发送值的选项。但是,我想将公式仅保留在几列中:例如,Sheet1中的J,E,并且只保留所有列中的值。
任何人都可以帮我编辑此代码或提出新代码吗? 在此先感谢您的帮助。
答案 0 :(得分:1)
已修改以考虑OP的不同需求
我是这样的:
如果列E,J公式限制适用于所有工作表
Dim col As Range
For Each sh In Destwb.Worksheets
For Each col In sh.UsedRange.Columns
If col.Column <> 5 And col.Column <> 10 Then col.Value = col.Value
Next
Next
如果列E,J公式限制适用于&#34; Sheet1&#34;仅限工作表
Dim col As Range
For Each sh In Destwb.Worksheets
If sh.Name = "Sheet1" Then
For Each col In sh.UsedRange.Columns
If col.Column <> 5 And col.Column <> 10 Then col.Value = col.Value
Next
Else
With sh.UsedRange
.Value = .Value
End With
End If
Next sh
答案 1 :(得分:0)
将完整工作表粘贴为值,然后将要作为公式传递的范围粘贴为完整粘贴。这将取代价值观。粘贴范围很快。你可以买双贴。
'Change all cells in the worksheets to values if you want
Dim tmpWS As Worksheet
For Each sh In Destwb.Worksheets
Set tmpWS = Destwb.Sheets.Add
sh.Select
sh.Range("E:E").copy Destination:=tmpWS.Range("E:E")
sh.Range("J:J").copy Destination:=tmpWS.Range("J:J")
With sh.UsedRange
.Cells.Copy
.Cells.PasteSpecial xlPasteValues
.Cells(1).Select
End With
tmpWS.Range("E:E").copy Destination:=sh.Range("E:E")
tmpWS.Range("J:J").copy Destination:=sh.Range("J:J")
tmpWS.Delete
Application.CutCopyMode = False
Next