Excel VBA質問箱 IV

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

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


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

【31023】データの抽出について しんのすけ 05/11/9(水) 14:31 質問[未読]
【31025】Re:データの抽出について 05/11/9(水) 14:39 発言[未読]
【31033】Re:データの抽出について ちくたく 05/11/9(水) 15:47 発言[未読]
【31052】Re:データの抽出について しんのすけ 05/11/10(木) 10:21 回答[未読]
【31057】Re:データの抽出について ちくたく 05/11/10(木) 11:34 回答[未読]

【31023】データの抽出について
質問  しんのすけ  - 05/11/9(水) 14:31 -

引用なし
パスワード
   はじめまして。VBAをはじめたばかりのものです。
突然ですが、以下のようなことをVBAで行うことは可能なのでしょうか?もし可能であるならばご指導よろしくお願い致します。

以下のような、データA.xls、データB.xlsというファイルがあります。
このようなデータが1000ファイル程度あります。

【データA】

氏名 項目1 項目2 項目3 
A   21   22   23

項目4 項目5 項目6 項目7
24   25   26  27

【データB】
氏名 項目1 項目2 項目3 
B   11   12   13

項目4 項目5 項目6 項目7
14   15   16   17


これらのデータを1つのブックに必要な項目だけ抜き出して以下のようにしたいのです。

氏名 項目2 項目6 項目7
A   22   26  27
B   11   15  16
(以下1000データ程度)

どのような処理を行えばよいのでしょうか?

ご指導よろしくお願い致します

【31025】Re:データの抽出について
発言    - 05/11/9(水) 14:39 -

引用なし
パスワード
   こんにちは。

 A   B   C   D
1 氏名 項目1 項目2 項目3 
2 A   21   22   23
3
4 項目4 項目5 項目6 項目7
5 24   25   26  27

表はこういうことでいいのですよね?
1ファイルに一人分のデータでよいのであれば、
変数を使用して、必要な場所のデータを取得して
貼り付けるようにするのは如何でしょうか?
間違っていたらごめんなさい。

【31033】Re:データの抽出について
発言  ちくたく  - 05/11/9(水) 15:47 -

引用なし
パスワード
   しんのすけ さん
こんにちは。

>突然ですが、以下のようなことをVBAで行うことは可能なのでしょうか?もし可能であるならばご指導よろしくお願い致します。

可能です、が、

>以下のような、データA.xls、データB.xlsというファイルがあります。
>このようなデータが1000ファイル程度あります。

仕様が不明確すぎます。
例示的なコードなら示せますが、
もう少し、仕様を明確にさせて頂ければ助かります。

まず、
1. ファイルの名前に規則性があるか?
あるいは、ひとつのフォルダの中に入っているかとか、
そういう条件によって処理が変わります。

>【データA】
>
>氏名 項目1 項目2 項目3 
>A   21   22   23
>
>項目4 項目5 項目6 項目7
>24   25   26  27

2. このデータの実際のセル内での並び方はどうなっているのか?
便宜的に上のようになっているのか?
何列目の何行目にデータはあるのか?

>これらのデータを1つのブックに必要な項目だけ抜き出して以下のようにしたいのです。
>氏名 項目2 項目6 項目7
>A   22   26  27
>B   11   15  16

3. 抜き出すのは項目2,6,7なのか?
そして、書き出しはどのセルから始まるのか?

ここらへん整理して頂ければ、回答者がわとして助かります。

【31052】Re:データの抽出について
回答  しんのすけ  - 05/11/10(木) 10:21 -

引用なし
パスワード
   ちくたく様

ご解答ありがとうございます。
さっそく質問に答えさせていただきます。

仕様が不明確すぎます。
例示的なコードなら示せますが、
もう少し、仕様を明確にさせて頂ければ助かります。
→1つのエクセルファイルに1人のデータがあると考えていただければ結構です。


1. ファイルの名前に規則性があるか?
あるいは、ひとつのフォルダの中に入っているかとか、
そういう条件によって処理が変わります。
→規則性はあり、全部同じです。また、そのデータが同じフォルダ内にあります。

>
>>【データA】
>>
>>氏名 項目1 項目2 項目3 
>>A   21   22   23
>>
>>項目4 項目5 項目6 項目7
>>24   25   26  27
>
このデータの実際のセル内での並び方はどうなっているのか?
便宜的に上のようになっているのか?
何列目の何行目にデータはあるのか?
→データのセル内での並び方は、上のようになっております。

抜き出すのは項目2,6,7なのか?
そして、書き出しはどのセルから始まるのか?
→抜き出す項目はあくまで例として書きました。抜き出す項目はまだ明確には決まっておりません。また、書き出しはA2セルから?と答えればよいのでしょうか?

きちんとお答えできているかどうかわかりませんが、よろしくお願いいたします。

【31057】Re:データの抽出について
回答  ちくたく  - 05/11/10(木) 11:34 -

引用なし
パスワード
   しんのすけさん。
こんにちは。

仕様を明確に、というのは、
A2に氏名があって、とか、具体的なことを差してください。
回答することはできるのですが、
仕様が不明確なせいで、コードが走らないというのが、
回答者としては悲しいことになるのです。

ひとまず、以下のコードを示します。
簡単に書きましたので、ヘルプとか見て、
そちらの状況なりに修正してください。

変数myFoには、ファイルがあるフォルダを設定してください。
ファイルがあるフォルダには、エクセルファイル以外入れないでください。

Sub フォルダの中のファイルの名前を取得()

  Dim myFo As String
  Dim fileStr As String
  Dim myWs As Worksheet, myWb As Workbook
  Dim dataWb As Workbook
  Dim i As Integer
  
  Set myWb = Workbooks.Add
  Set myWs = myWb.ActiveSheet
  
  myWs.Range("A1:D1") = Array("氏名", "項目2", "項目6", "項目7")
  
  myFo = "D:\Ki"  'フォルダのパス
  fileStr = Dir(myFo & "\", vbNormal)
  i = 2
  
  Do While fileStr <> ""

    Set dataWb = Workbooks.Open(myFo & "\" & fileStr)
    With dataWb.ActiveSheet
      myWs.Range("A" & i).Value = .Range("A2").Value '氏名
      myWs.Range("B" & i).Value = .Range("C2").Value '項目2
      myWs.Range("C" & i).Value = .Range("C4").Value '項目6
      myWs.Range("D" & i).Value = .Range("D4").Value '項目7
    End With
    i = i + 1
    dataWb.Close
    fileStr = Dir
  Loop
  
End Sub

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