0

マクロで作業して、別のブックからデータをコピーし、マクロを使用してブックのシートに貼り付けます。私はここで別のスレッドから適応したこの関数を使用して、外部ワークブックへのファイルパスを取得しています。

    Public Function RetrieveFileName() As String

    'Show the open dialog and pass the selected file name to the String variable "sFileName"
    RetrieveFileName = Application.GetOpenFilename

    'They have cancelled.
    If RetrieveFileName = "False" Then
        Exit Function
    End If

End Function

それは機能し、ワークブックを開くことができますが、外部ワークブック(以下のスニペットの最後の行)から範囲を保存しようとすると、vbaは実行時エラー「13」をスローします:タイプの不一致。

Sub CreateSystemExtracts()
Dim thisRow As Long, wbkCheck As Long
Dim countryFilter As String, systemFilter As String
Dim sourceBook As Workbook
Dim sourceHeaders As Range

'Ask user where source data sits
Set sourceBook = Workbooks.Open(RetrieveFileName())

'Make sure they provided a source
If sourceBook Is Nothing Then
    MsgBox "You must select a source file to continue, macro halted."
    Exit Sub
End If

'Check if number of rows in the selected file matches what we expect
sourceHeaders = Workbooks(sourceBook).Worksheets(Sheet1).Range("A2:X2")

どこが悪いのか教えてもらえますか?最後の行で範囲を宣言する方法と関係があると思いますが、さまざまな方法を試しましたが、すべて実行時エラー13が発生します。

前もって感謝します!

4

1 に答える 1

0

オブジェクト変数を割り当てるときは、使用する必要がありますSet

'Check if number of rows in the selected file matches what we expect 
Set sourceHeaders = Workbooks(sourceBook).Worksheets("Sheet1").Range("A2:X2")
于 2012-07-06T22:31:45.247 に答える