Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


32615 / 76734 ←次へ | 前へ→

【49354】Re:一部更新しないマクロをつくりたい
発言  Jaka  - 07/6/1(金) 13:53 -

引用なし
パスワード
   国語力が貧相な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列なんですよね?

もっとシートレイアウトは正しく、誰が見ても解るように
コードは実際に、動いたものを載せてください。
質問内容を国語力が貧相な私にもわかるぐらいにしてください。

国語力が貧相ですみません。
6 hits

【49303】一部更新しないマクロをつくりたい かつこ 07/5/30(水) 20:29 質問
【49321】Re:一部更新しないマクロをつくりたい Jaka 07/5/31(木) 11:22 発言
【49350】Re:一部更新しないマクロをつくりたい かつこ 07/5/31(木) 21:25 発言
【49354】Re:一部更新しないマクロをつくりたい Jaka 07/6/1(金) 13:53 発言
【49360】Re:一部更新しないマクロをつくりたい かつこ 07/6/1(金) 23:37 発言
【49363】Re:一部更新しないマクロをつくりたい かつこ 07/6/2(土) 0:37 発言
【49405】Re:一部更新しないマクロをつくりたい Jaka 07/6/4(月) 13:23 発言
【49429】Re:一部更新しないマクロをつくりたい かつこ 07/6/4(月) 23:41 発言
【49452】Re:一部更新しないマクロをつくりたい Jaka 07/6/5(火) 14:50 発言
【49466】Re:一部更新しないマクロをつくりたい かつこ 07/6/5(火) 22:05 お礼

32615 / 76734 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free