vb.net“Range类的PasteSpecial方法失败”

时间:2013-05-22 17:08:37

标签: vb.net excel exception copy-paste

我正在尝试在VB.net中编写一个应用程序,通过明智地处理来自另一个打开的工作簿的单元格来组装Excel工作簿。 [注意:就目前而言,这两个工作簿是在同一个Excel应用程序中打开的 - 最初我使用的是两个不同的Excel实例,但后来才意识到两个实例之间的PasteSpecial表现不同]

我正在使用Visual Studio 2012,Excel 2007,我在项目参考中包含Microsoft Excel 12.0对象库

代码是这样的:

Dim appXL As Excel.Application
Dim wbXLsource As Excel.Workbook
Dim wbXLtarget As Excel.Workbook

''with two different buttonclick event handlers 
''I assign wbXLsource and wbXLtarget
''the full code is omitted
...
wbXLsource = appXL.Workbooks.Open(strFileNameAndPath)
...
...
wbXLtarget = appXL.Workbooks.Add
...


''I use a third button handler for the 
''Copy and PasteSpecial Operations
    Private Sub btnAppendWorksheet_Click(sender As Object, e As EventArgs) _
    Handles btnAppendWorksheet.Click

    Dim shXLtar As Excel.Worksheet
    Dim shXLsou As Excel.Worksheet

    shXLtar = wbXLtarget.ActiveSheet
    shXLtar.Cells.Clear()
    shXLsou = wbXLsource.ActiveSheet

    shXLsou.Range("A1:H433").Copy()
    Try
        shXLtar.Range("A1:H433").PasteSpecial(Excel.XlPasteType.xlPasteAll, False, False) ''Paste special Format:=
    Catch ex As Exception
        MsgBox(ex.ToString)
    End Try

End Sub

PasteSpecial方法抛出异常“Range类的PasteSpecial方法失败”。

奇怪的是,相同的代码最初在两个在不同Excel实例中运行的工作簿中工作[当时我有appXLtarget和appXLsource]。 毋庸置疑,我在代码的任何部分都尝试了“选择”,“激活”的所有可能组合:例如,在Copy和PasteSpecial等之间。 可能有一些我非常缺乏的东西< - 我是VB.net的新手

感谢您的帮助和最诚挚的问候!

1 个答案:

答案 0 :(得分:1)

如果您是VB.Net的新手,首先应该对OptionStrict进行研究。将optionStrict设置为ON,VS将无法编译您的代码...

替换 shXLtar.Range("A1:H433").PasteSpecial(Excel.XlPasteType.xlPasteAll, False, False)

使用 shXLtar.Range("A1:H433").PasteSpecial(Excel.XlPasteType.xlPasteAll,Excel.XlPasteSpecialOperation.xlPasteSpecialOperationNone,False, False)

shXLtar.Range("A1:H433").PasteSpecial(Excel.XlPasteType.xlPasteAll)

希望这有帮助。