0

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の

よろしくお願いします。

4

1 に答える 1