こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

エクセルVBAで別のファイルの値を代入する記述

いつもお世話になってます。
エクセル2002で、2つのファイルを使ってVBAを組みたいと考えています。
下記のコードを『ファイルB』に記述しています。
A列のデータを、B列の回数分、C列に表示させています。

このC列に表示させている部分を『ファイルA』に直接書き出すには、
どのような記述が必要なのでしょうか?

単純に『ファイルB』のC列を、『ファイルA』に、コピー&ペーストする方法もあるかと思うのですが、
せっかくなので複数ファイルを対象に処理する記述にチャレンジしています。
が、なかなか思うような結果が得られません。

アドバイスをお願いいたします。

----------------------
Sub tes1()
Dim i As Integer
Dim k As Integer
Dim x As Integer
Dim y As Integer

With ActiveSheet.UsedRange
lastrow = .Cells(.Count).Row
End With

x = 2
For i = 2 To lastrow
k = Cells(i, 2)
For k = 1 To k
Cells(x, 3) = Cells(i, 1)
x = x + 1
Next k
Next i
End Sub

投稿日時 - 2010-11-26 12:13:06

QNo.6344930

smi

困ってます

質問者が選んだベストアンサー

作業が複数のシート、複数のBOOKにまたがるなら、具体的に明示しなければなりません。
一例です。
マクロを記述したファイルBを、wb(0)
ファイルAをwb(1)
データがあるのがwb(0)のSheet1として、これをws(0)
書き出し先を、wb(1)のSheet1として、これをws(1) と、それぞれ定義しています。
Workbooks("ファイルA.xls")は開いているものとしますが、もし開いてないなら、開くコードを書かなければなりません。

Sub tes2()
  Dim wb(1) As Workbook
  Dim ws(1) As Worksheet
  Dim i As Integer
  Dim k As Integer
  Dim x As Integer
  Dim y As Integer
  
  Set wb(0) = ThisWorkbook
  Set wb(1) = Workbooks("ファイルA.xls")
  Set ws(0) = wb(0).Sheets("Sheet1")
  Set ws(1) = wb(1).Sheets("Sheet1")
  
  With ws(0).UsedRange
    lastrow = .Cells(.count).Row
  End With
  
  With ws(1)
    x = 2
    For i = 2 To lastrow
      k = ws(0).Cells(i, 2)
      For k = 1 To k
        .Cells(x, 3) = ws(0).Cells(i, 1)
        x = x + 1
      Next k
    Next i
  End With
End Sub

投稿日時 - 2010-11-26 13:28:17

お礼

回答ありがとうございます。
おかげさまで理想の結果を得られました。
勉強になりました。配列とSetの記述、自分で活用できるようにスキルアップしたいと思います。

投稿日時 - 2010-11-26 16:50:45

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問