Excel VBA質問箱 IV

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

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


8068 / 13644 ツリー ←次へ | 前へ→

【35284】複数の別シートから一気に情報を取得したい。 こば。 06/2/25(土) 15:33 質問[未読]
【35285】Re:複数の別シートから一気に情報を取得し... なっちゃん 06/2/25(土) 17:29 発言[未読]
【35303】Re:複数の別シートから一気に情報を取得し... こば。 06/2/26(日) 0:42 お礼[未読]
【35286】Re:複数の別シートから一気に情報を取得し... ponpon 06/2/25(土) 20:44 発言[未読]
【35304】Re:複数の別シートから一気に情報を取得し... こば。 06/2/26(日) 0:47 お礼[未読]
【35306】Re:複数の別シートから一気に情報を取得し... ponpon 06/2/26(日) 2:09 発言[未読]

【35284】複数の別シートから一気に情報を取得した...
質問  こば。  - 06/2/25(土) 15:33 -

引用なし
パスワード
   10個のExcelシートA〜Jの特定のセル、行の情報を取得したい。
例)Aの情報
 新しいシートのRenge("J23")に、シートAのRenge("I23")から最終行までの値をコピー。
 新しいシートのRenge("J4")に、シートAのRenge("C10")をコピー。
  
  Bの情報
 新しいシートのRenge("J24")に、シートBのRenge("I23")から最終行までの値をコピー。
 新しいシートのRenge("J5")に、シートBのRenge("C10")をコピー。

というように、A〜Jまでの情報をJ23から読み込んだ情報を右側にどんどんシフト
コピーしていくようなイメージです。


これをコマンドボタン1回押下後に一気に処理したいのです。
何か良い方法がございましたら教えていただけますでしょうか。  

【35285】Re:複数の別シートから一気に情報を取得...
発言  なっちゃん  - 06/2/25(土) 17:29 -

引用なし
パスワード
   ▼こば。 さん:
>10個のExcelシートA〜Jの特定のセル、行の情報を取得したい。
>例)Aの情報
> 新しいシートのRenge("J23")に、シートAのRenge("I23")から最終行までの値をコピー。
> 新しいシートのRenge("J4")に、シートAのRenge("C10")をコピー。
>  
>  Bの情報
> 新しいシートのRenge("J24")に、シートBのRenge("I23")から最終行までの値をコピー。
> 新しいシートのRenge("J5")に、シートBのRenge("C10")をコピー。
>
>というように、A〜Jまでの情報をJ23から読み込んだ情報を右側にどんどんシフト
>コピーしていくようなイメージです。
>
>
>これをコマンドボタン1回押下後に一気に処理したいのです。
>何か良い方法がございましたら教えていただけますでしょうか。  

具体的に何が分からないんでしょうか?
マクロの記録でできなかったですか?
親切な方々が多いからすべてのコードを教えてくれるかもしれません。
でもそれでは何一つこば。さんのVBAの知識は深まりません。

【35286】Re:複数の別シートから一気に情報を取得...
発言  ponpon  - 06/2/25(土) 20:44 -

引用なし
パスワード
   ▼こば。 さん:
こんばんは。

>10個のExcelシートA〜Jの特定のセル、行の情報を取得したい。
>例)Aの情報
> 新しいシートのRenge("J23")に、シートAのRenge("I23")から最終行までの値をコピー。
> 新しいシートのRenge("J4")に、シートAのRenge("C10")をコピー。
>というように、A〜Jまでの情報をJ23から読み込んだ情報を右側にどんどんシフト
>コピーしていくようなイメージです。

右側にシフトしていくなら
  
  Bの情報
 新しいシートのRenge("K23")に、シートBのRenge("I23")から最終行までの値をコピー。
 新しいシートのRenge("K5")に、シートBのRenge("C10")をコピー。

ではないですか??

Sub test()
  Dim myr As Range
  Dim myVal
  Dim NewSh As Worksheet
  
  myVal = Array("A", "B", "C", "D", "E", "F", "G", "H", "I", "J")
  Set NewSh = Sheets.Add(after:=Sheets(Sheets.Count))
  For i = 0 To UBound(myVal)
    With Sheets(myVal(i))
      .Range("I23", .Range("I65536").End(xlUp)).Copy _
      NewSh.Cells(23, 10 + i)
      .Range("C10").Copy NewSh.Cells(5, 10 + i)
    End With
  Next
  Set NewSh = Nothing
End Sub

【35303】Re:複数の別シートから一気に情報を取得...
お礼  こば。  - 06/2/26(日) 0:42 -

引用なし
パスワード
   ▼なっちゃん さん:
>▼こば。 さん:
>>10個のExcelシートA〜Jの特定のセル、行の情報を取得したい。
>>例)Aの情報
>> 新しいシートのRenge("J23")に、シートAのRenge("I23")から最終行までの値をコピー。
>> 新しいシートのRenge("J4")に、シートAのRenge("C10")をコピー。
>>  
>>  Bの情報
>> 新しいシートのRenge("J24")に、シートBのRenge("I23")から最終行までの値をコピー。
>> 新しいシートのRenge("J5")に、シートBのRenge("C10")をコピー。
>>
>>というように、A〜Jまでの情報をJ23から読み込んだ情報を右側にどんどんシフト
>>コピーしていくようなイメージです。
>>
>>
>>これをコマンドボタン1回押下後に一気に処理したいのです。
>>何か良い方法がございましたら教えていただけますでしょうか。  
>
>具体的に何が分からないんでしょうか?
>マクロの記録でできなかったですか?
>親切な方々が多いからすべてのコードを教えてくれるかもしれません。
>でもそれでは何一つこば。さんのVBAの知識は深まりません。

ご指摘ありがとうございました。おっしゃるとおりですね。申し訳ないです。

わからないところは、勘違される説明で申し訳なかったのですが、
10個のExcelファイルのそれぞれのRenge("I23")から最終行までの値と、
Renge("C10")の値を同時に取得したいのです。同時に取得するにはどうすれば
良いのかがわかりません。
コマンドボタン1つでどう実現するのかがわかりません。
・10個のファイルのシートをそれぞれコピー先に追加していって、そこから
 順にコピー先に貼り付けていくか?
・ダイレクトで2つの情報をコピー先に貼り付ける方法があるのか?
など、ソースも知りたいですが、どんな方法が良いのかが知りたいです。

もし、他に効率が良い方法等ございましたら教えていただけますでしょうか。

【35304】Re:複数の別シートから一気に情報を取得...
お礼  こば。  - 06/2/26(日) 0:47 -

引用なし
パスワード
   ▼ponpon さん:
>▼こば。 さん:
>こんばんは。
>
>>10個のExcelシートA〜Jの特定のセル、行の情報を取得したい。
>>例)Aの情報
>> 新しいシートのRenge("J23")に、シートAのRenge("I23")から最終行までの値をコピー。
>> 新しいシートのRenge("J4")に、シートAのRenge("C10")をコピー。
>>というように、A〜Jまでの情報をJ23から読み込んだ情報を右側にどんどんシフト
>>コピーしていくようなイメージです。
>
>右側にシフトしていくなら
>  
>  Bの情報
> 新しいシートのRenge("K23")に、シートBのRenge("I23")から最終行までの値をコピー。
> 新しいシートのRenge("K5")に、シートBのRenge("C10")をコピー。
>
>ではないですか??
>
>Sub test()
>  Dim myr As Range
>  Dim myVal
>  Dim NewSh As Worksheet
>  
>  myVal = Array("A", "B", "C", "D", "E", "F", "G", "H", "I", "J")
>  Set NewSh = Sheets.Add(after:=Sheets(Sheets.Count))
>  For i = 0 To UBound(myVal)
>    With Sheets(myVal(i))
>      .Range("I23", .Range("I65536").End(xlUp)).Copy _
>      NewSh.Cells(23, 10 + i)
>      .Range("C10").Copy NewSh.Cells(5, 10 + i)
>    End With
>  Next
>  Set NewSh = Nothing
>End Sub


ソースまで作成していただき感謝しております。
説明が勘違いされる書き方を書いてしまい申し訳ないのですが
10個のシートではなく、10個のExcelファイルのそれぞれのRenge("I23")から最終行までの値と、
Renge("C10")の値を同時に取得したいのです。同時に取得するにはどうすれば
良いのかがわかりません。
でも、ponpon さんのシートのロジックで少しヒントをいただいたので自分でも
考えてみたいと思います。

【35306】Re:複数の別シートから一気に情報を取得...
発言  ponpon  - 06/2/26(日) 2:09 -

引用なし
パスワード
   ファイルなら一つのフォルダに入れておいて、
Dir関数を使って、一つずつ処理されたらいかがでしょうか?

Sub test()
  Dim myPath As String
  Dim myFile As String
  Dim myBK As Workbook
  
  Application.ScreenUpdating = False
  myPath = ThisWorkbook.Path & "\"
  myFile = Dir(myPath & "*.xls")

  Do While myFile <> ""
    Set myBK = Workbooks.Open(Filename:=myPath & myFile)
    If myFile <> ThisWorkbook.Name Then
   
     '処理
   
      myBK.Close
    End If
    myFile = Dir()
  Loop
  Application.ScreenUpdating = True
  
End Sub

こんな感じでできると思います。

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