1

私は VBA を使用するのが初めてで、以下のコードを見つけました。正常に動作しますが、ソース ファイルのすべての行が必要です。毎回異なるため、行番号の使用に限定されないようにコードを変更するにはどうすればよいですか。

Private Sub Import1_Click()
' 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)

' assume range is A1 - G10 in sheet1
' 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)

targetSheet.Range("A6", "G10").Value = sourceSheet.Range("A2", "G6").Value

' Close customer workbook
customerWorkbook.Close

End Sub
4

2 に答える 2

1

シート全体を現在のワークブックの空白のシートにコピーし、値のみを保持すると仮定すると (質問ではそれが十分に指定されていません)、次の行を置き換えることができます。

targetSheet.Range("A6", "G10").Value = sourceSheet.Range("A2", "G6").Value

これとともに:

sourceSheet.UsedRange.Copy targetSheet.Range("A1")
sourceSheet.UsedRange.Value = sourceSheet.UsedRange.Value

それがうまくいくことを願っています!

アップデート


最後のコメントに基づいて、次の行を置き換えてみてください。

sourceSheet.UsedRange.Copy targetSheet.Range("A1")

この行で:

Intersect(sourceSheet.UsedRange, sourceSheet.UsedRange.Offset(1,0)).Copy targetSheet.Range("A1")

最後の部分Range("A1")を更新して、必要な場所に結果を貼り付けることができます。

これがうまくいくことを願っています!!

于 2013-11-05T17:09:22.247 に答える
0

以下に示すように、次の行だけを変更する必要があります。

targetSheet.Range("A6", "G10").Value = sourceSheet.Range("A2", "G6").Value
  1. まず、名前範囲 (セルの名前が表示される Excel の左上) を使用して、ソース シートの開始セルと終了セルに名前を付けます。たとえば、それらを「開始」と「終了」と呼びます。

  2. これで、ターゲットシートで開始セルに名前を付けることもできます。とにかくすべてを貼り付けるため、最後のセルは必要ありません。これはオプションであり、以下のように名前を付けずにそのままにすることができます。

  3. コードは次のようになります...

    targetSheet.Range("A6").Value = sourceSheet.Range("start", "end").Value
    
  4. targetSheet 開始セル (たとえば「start_target」) にも名前を付けると、次のようになります。

    targetSheet.Range("start_target").Value = sourceSheet.Range("start", "end").Value
    
于 2013-11-05T17:14:43.437 に答える