仅使用几列中的公式导出表格,并将其作为值

时间:2017-02-12 06:56:32

标签: excel vba excel-vba outlook

我是VBA编码新手。 我目前正在使用Ron De Bruin先生的代码将多个表格导出到单独的工作簿中,并从以下门户附加到Outlook Mail: http://www.rondebruin.nl/win/s1/outlook/amail3.htm

此代码还包含仅发送值的选项。但是,我想将公式仅保留在几列中:例如,Sheet1中的J,E,并且只保留所有列中的值。

任何人都可以帮我编辑此代码或提出新代码吗? 在此先感谢您的帮助。

2 个答案:

答案 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