【问题标题】:Copying Excel data and transposing to another worksheet in VB.NET在 VB.NET 中复制 Excel 数据并转置到另一个工作表
【发布时间】:2016-01-06 01:18:18
【问题描述】:
''''''''Public Variables Module'''''''

    Public oXL As Microsoft.Office.Interop.Excel.Application
    Public oWB As Microsoft.Office.Interop.Excel.Workbook
    Public oSheet As Microsoft.Office.Interop.Excel.Worksheet

''''''''End Public Variables Module''''''''


'''''''''Form1.vb'''''''''''


        oXL = New Excel.Application
        oXL.Visible = True        

 oWB = oXL.Workbooks.Add


        oSheet = oWB.ActiveSheet

        oWB.Worksheets(1).range("a1").select()
        oWB.Worksheets(1).Paste()

        oSheet.UsedRange.Copy()
        oWB.Worksheets.Add()
        oWB.Worksheets("Sheet2").range("a1").select()
        oWB.Worksheets("Sheet2").PasteSpecial(Transpose:=True)


'''''''''End Form1.vb'''''''''''

它在 pastespecial 行上崩溃并出现错误:

附加信息:HRESULT 异常:0x800A03EC

我尝试跳过范围(“a1”)。选择 sheet2 上的步骤无济于事。

我应该补充一点,我在重新复制数据并粘贴到第二个工作表之前将数据粘贴到第一个工作表的原因是因为数据已经在来自外部应用程序的剪贴板上,我假设它不是当它是来自外部源的数据时,可以在初始粘贴时对其进行转置。

如果我将 pastespecial 更改为普通粘贴,它可以正常工作。所以我假设我的 pastespecial 命令有问题。

在运行应用程序之前,我曾尝试将多种形式的数据复制到我的剪贴板,因此它与不可转置的特定数据集无关。

我还验证了它实际上是在复制之前选择了使用的范围(相对于整个工作表)。

【问题讨论】:

  • 是否有一些比 HResult 等更容易理解的错误消息?
  • 我该怎么做呢?我发现最多的是“抛出了一个 system.runtime.interopservices.COMException”,然后它显示该错误。如果错误不清楚,那该行代码中的任何内容是否会跳出可能导致问题的错误?
  • 正弦粘贴工作(与 pastespecial 相对),后者为您提供了您需要的什么?我正在使用 C# 和 Excel,我一点也不了解 VB,但是“Transpose:=True”对我来说确实很奇怪——它真的应该有类似 Pascal 的语法吗?

标签: vb.net excel


【解决方案1】:

想通了,还需要指定范围:

oWB.Worksheets("Sheet2").range("a1").PasteSpecial(Transpose:=True)

【讨论】:

    猜你喜欢
    • 2018-07-22
    • 1970-01-01
    • 1970-01-01
    • 2016-11-19
    • 1970-01-01
    • 2021-03-20
    • 1970-01-01
    • 2019-05-02
    相关资源
    最近更新 更多