【问题标题】:How to copy formatting and formulas from an Excel range into another?如何将格式和公式从 Excel 范围复制到另一个范围?
【发布时间】:2018-08-23 14:10:47
【问题描述】:

我的情况:

我有一段代码可以将数据库中的数据复制到 Excel 工作表中,我们来看看这段代码

 RangeExcelData(objWorkbook.Worksheets.Item("DATA").Range("D71"), rptLotNo)

简而言之,RangeExcelData 是我的 VB.NET 应用程序中的一个用户定义函数,它允许我将变量数据复制到 Excel 中的一个范围中

我的代码中有很多这样的内容,必须将整个数据从数据库复制到工作表中。

我还有一个格式化的 Excel 工作表,我将数据库中的数据放入其中。我想知道的是我可以将格式化的 Excel 工作表中的格式复制到工作表内的空间中吗?

这是我想要的一个小插图,这是格式化的 excel 例如:

如果数据超出Excel,我希望VB.NET将格式复制到它旁边的空间。包括它可能具有的公式:

【问题讨论】:

    标签: excel vb.net excel-interop


    【解决方案1】:

    假设您的原始值以B2 开始并以D7 结束,您可以执行以下操作:

    Dim xlSheet As Excel.Worksheet = objWorkbook.Worksheets("DATA")
    With xlSheet
        .Range("B2:D7").Copy()
        .Range("E2:G7").PasteSpecial(Excel.XlPasteType.xlPasteFormats)
        .Range("E2:G7").PasteSpecial(Excel.XlPasteType.xlPasteFormulasAndNumberFormats)
    
        ' Start adding the new values.
        .Range("E3:E6").Value = 4
        .Range("F3:F6").Value = 5
        .Range("G3:G6").Value = 6
    End With
    

    注意:由于您也在复制公式(不仅仅是格式),因此任何 固定 值(如果有)都会也会被复制,但这无关紧要,因为您将用新值覆盖它们。

    结果:

    如果您不想复制固定值,您可以查看this question 中的答案。这是关于 VBA 的,但您可以在 VB.NET 中做同样的事情。

    【讨论】:

    • 我是否理解正确,如果我复制公式,相应的参考也会被复制?我的意思是如果每列下都有一个公式,也许是第 3 行,那么我可以复制第 3 行中的公式吗?
    • 我不确定您的意思,但如果第一列中的公式类似于=SUM(B3:B6),那么第四列(第二个表中的第一个)的公式将为=SUM(E3:E6)。当然,除非您有 $B$3:$B$6 之类的东西,否则引用将保持不变。
    • 这正是我的意思,感谢您的理解,如果我让您感到困惑,请见谅。
    • 完全没有,很高兴我能提供帮助!如果您还有任何问题,请告诉我。
    • 请问可以通过变量来控制range的值吗?假设范围是.Range("B2:D7").,但我想添加 15 个单元格,通过变量本身移动它,你知道如何以编程方式而不是硬编码吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-14
    • 2022-09-23
    • 1970-01-01
    • 2020-10-19
    • 2013-10-28
    • 1970-01-01
    相关资源
    最近更新 更多