|
国語力が貧相なJakaです。
やっぱり質問の意味がよく解りませんでした。
提示されたシートレイアウト通りに?BOOK1.xls、BOOK2.xlsを作り、
BOOK1、2のデータがあるであろうシート名を「データ」とし、
実行ファイルのシートの1つを「一覧」にして、最初に提示されたコードを
走らせて見ましたが、動きませんでした。
質問の中では動いているそうですが...??
で、データレイアウトを下記のように変え、
BOOK1.xls (シート名データ)
B C D
1 4月 5月 6月
2 100 200 300
BOOK2.xls
B C D
1 4月 5月 6月
2 300 400 500
コードを下記に変えて動かしてみました。、
Sub kousin()
Dim thename As String
Dim thedir As String
Dim thebook As Workbook
Dim AROW As Integer
Dim myarray As Variant
Dim i As Integer
Application.ScreenUpdating = False
thedir = CreateObject("WScript.Shell").SpecialFolders("Desktop") & "\dddd"
thename = Dir(thedir & "\*.xls")
Do While thename <> ""
If thename <> ThisWorkbook.Name Then
Set thebook = Workbooks.Open(thedir & "\" & thename)
AROW = ThisWorkbook.Worksheets("一覧").Range("A65536").End(xlUp).Row
ThisWorkbook.Worksheets("一覧").Cells(AROW + 1, 1).Value = _
Left$(thename, Len(thename) - 4)
With thebook.Worksheets("データ")
myarray = Array(.Range("B2"), .Range("C2"), .Range("D2"))
For i = 0 To 2
ThisWorkbook.Worksheets("一覧").Cells(AROW + 1, 2 + i) _
.Value = myarray(i)
Next i
End With
thebook.Close savechanges:=False
End If
thename = Dir()
Loop
Application.ScreenUpdating = True
End Sub
実行1回目、一覧シートの結果
A B C D
1 4月 5月 6月
2 Book1 100 200 300
3 Book2 300 400 500
BOOK1の内容を↓この様に変えて
B C D
1 4月 5月 6月
2 100 200 300
実行2回目、一覧シートの結果
A B C D
1 4月 5月 6月
2 Book1 100 200 300
3 Book2 300 400 500
4 Book1 150 200 300
5 Book2 300 400 500
このようになります。
>書き換えられてしまいました
とはなりません。
また、最初に提示してあったコードのこれ、エラーになりませんでしたか?
myarray = Array(.Range("B2"), .Range("C2"), .Range("D2"))
For i = 1 To 3
i = 0 to 2
では。
それと、
>4月 5月 6月
>100 200 350
と、書くと読んだ人は、A、B、C列と判断します。
なのに
>Array(.Range("B2"), .Range("C2"), .Range("D2"))
B、C、D列なんですよね?
もっとシートレイアウトは正しく、誰が見ても解るように
コードは実際に、動いたものを載せてください。
質問内容を国語力が貧相な私にもわかるぐらいにしてください。
国語力が貧相ですみません。
|
|