我正在尝试在 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 的
感谢您的帮助和最诚挚的问候!