私はVBAを初めて使用し、入力ファイルを開いてそれらの内容をワークブックの非表示のシートにコピーする方法を理解しようとしています。これを行う方法の例を見ましたが、行と列の数はstatic であり、常に変化する 3 つの異なる入力ファイルを使用する必要があるため、これを行う方法について直感を使用しようとしていますが、答えが見つからないようです。
ここにあります:
Sub s()
' Get customer workbook...
Dim customerBook As Workbook
Dim filter As String
Dim caption As String
Dim customerFilename As String
Dim customerWorkbook As Workbook
Dim targetWorkbook As Workbook
' make weak assumption that active workbook is the target
Set targetWorkbook = Application.ActiveWorkbook
' get the customer workbook
filter = "Text files (*.xlsx),*.xlsx"
caption = "Please Select an input file "
customerFilename = Application.GetOpenFilename(filter, , caption)
Set customerWorkbook = Application.Workbooks.Open(customerFilename)
' copy data from customer to target workbook
Dim targetSheet As Worksheet
Set targetSheet = targetWorkbook.Worksheets(1)
Dim sourceSheet As Worksheet
Set sourceSheet = customerWorkbook.Worksheets(1)
Dim lastRow As Long
lastRow = sourceSheet.Range("A" & Rows.Count).End(xlUp).Row
Dim lastColumn As Long
lastColumn = sourceSheet.Cells(1, Columns.Count).End(xlToLeft).Column
targetSheet.Range("A1:A" & lastRow).Value = sourceSheet.Range("A1:A" & lastRow).Value
' Close customer workbook
customerWorkbook.Close
End Sub
EXCEL2007を使用しています
これがばかげた初心者の質問である場合は事前に謝罪しますが、それを機能させるために他に何をすべきかわからないので、正直にあきらめます。
問題は、最初から最後の行と最初から最後のセルを選択する方法がわからないことです(セルと行の両方が空白ではありません)
これを試しました:
targetSheet.Range("A1:A" & lastRow).End(xlUp).Value = sourceSheet.Range("A1:A" & lastRow).End(xlUp).Value
and this targetSheet.Range("A1:A" & lastRow).End(xlRight).Value = sourceSheet.Range("A1:A" & lastRow).End(xlRight).Value