CSVファイルからExcelワークシートにデータをコピーしたい。 11個の.csvファイルがあります。これまでのところ私はこれを持っています(これは前の投稿からの修正版です):
Sub importData()
Dim filenum(0 To 10) As Long
filenum(0) = 052
filenum(1) = 060
filenum(2) = 064
filenum(3) = 068
filenum(4) = 070
filenum(5) = 072
filenum(6) = 074
filenum(7) = 076
filenum(8) = 178
filenum(9) = 180
filenum(10) = 182
Dim sh1 As Worksheet
On Error GoTo my_handler
For lngPosition = LBound(filenum) To UBound(filenum)
'Windows(filenum(lngPosition) & ".csv").Activate
Workbooks.Add(filenum(lngPosition) & ".csv").Activate
Range("A1").Select
Range(Selection, ActiveCell.SpecialCells(xlLastCell)).Select
Selection.Copy
Windows("30_graphs_w_Macro.xlsm").Activate
Set sh1 = Worksheets(filenum(lngPosition)).Activate
Range("A69").Paste
Range("A69").Select
Next lngPositionlngPositionlngPosition
my_handler:
MsgBox "All done."
Exit Sub
End Sub
このコードは、行の範囲外エラーの添え字を私に与えます:
Set sh1 = Worksheets(filenum(lngPosition)).Activate
Set sh1 = Worksheets(filenum(lngPosition))。Activate
Subscript out of range error
ワークシートが見つからないため、エラーが発生しました。
またお願いします...お願い...使用しないでください.Select/.Activate/Selection/ActiveCell
表示したい場合があります Excel VBAマクロでの選択の使用を回避する方法 。
これは以前のバージョンより少し良く見えますが、その行で.Activateを削除して、まだそのエラーが発生するかどうかを確認してください。
Dim sh1 As Worksheet
set sh1 = Workbooks.Add(filenum(lngPosition) & ".csv")
ワークシートオブジェクトを作成します。そのオブジェクトを作成するまでは、そのオブジェクトでの作業を開始したくありません。そのオブジェクトを取得したら、次の操作を実行できます。
sh1.Range("A69").Paste
sh1.Range("A69").Select
Sh1。どのオブジェクトを操作するかを明示的にExcelに伝えます...そうでない場合、このコードの実行中に他のワークシートの選択を開始すると、データを間違った場所に貼り付ける可能性があります。