VB.net で、開いている別のワークブックのセルを賢く処理して Excel ワークブックを作成するアプリケーションを作成しようとしています。[注: 今のところ、2 つのワークブックは同じ Excel アプリケーション内で開かれています。もともとは 2 つの異なる Excel インスタンスを使用していましたが、後になって、2 つのインスタンス間の PasteSpecial の動作が異なることに気付きました]
Visual Studio 2012、Excel 2007 を使用しており、プロジェクト参照に Microsoft Excel 12.0 Object Library を含めています。
コードは次のようなものです。
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 インスタンスで実行される 2 つのワークブック内で機能していたことです (当時、私は appXLtarget と appXLsource を持っていました)。言うまでもなく、コードの任意の部分で「選択」、「アクティブ化」のすべての可能な組み合わせを試しました。たとえば、Copy と PasteSpecial の間などです。 VB.netの
よろしくお願いします。