プロが教えるわが家の防犯対策術!

エクセルで作成した名簿の中から抽出したデータのみ別のブックに一覧作成したいのです。
シート毎に個人情報を入力してますが、同時に別ブックにて氏名、住所、連絡先のみを一覧にしたいです。
個人情報のシートは
ブック名「顧客情報詳細」の氏名欄がA6をブック「一覧表」のA1に。
住所はJ6→B1  連絡先J8→C3  といった具合です。

教えていただけないでしょうか? 
宜しくお願い致します。

A 回答 (5件)

一例です。


(1)一覧表ブックを開く→Sheet1タブ上で右クリック→コード表示→VBE(右上画面)に以下のコードを貼り付け
(2)コード内の「******」に顧客情報詳細ブックのパス名を設定→alt+F4キー押下(VBE画面終了)し、alt+F8キー押下→マクロを選択して実行

◎サンプルコード表
Sub 一覧表を作成()
Application.ScreenUpdating = False
myBook = "C:\***********\顧客情報詳細.xls"
i = 0
With Workbooks.Open(myBook)
For Each k In .Worksheets
i = i + 1
Sheet1.Cells(i, 1) = .Sheets(k.Name).Range("A6")
Sheet1.Cells(i, 2) = .Sheets(k.Name).Range("J6")
Sheet1.Cells(i, 3) = .Sheets(k.Name).Range("J8")
Next
.Close False
End With
Application.ScreenUpdating = True
End Sub

この回答への補足

すみません どうか教えてください。

>2)コード内の「******」に顧客情報詳細ブックのパス名を設定

「******」を削除してパス名を貼り付ければいいのですね?パス名っって何ですか?

引き続きお願いいたします。

補足日時:2010/04/02 14:41
    • good
    • 0

NO3です。


>パスはC:¥Documents and Settings¥~
⇒パス名から「¥」が全角文字のように思えますが如何でしょうか。
 半角でないとパス不正となりますのでご確認下さい。

この回答への補足

半角にしてますが何度やってもできないんです(泣)
エクセル2003ですが一覧表のシート1にて右クリック→コードの表示→貼り付けですね
パス名の表示ですがエクスプローラ画面がわからないのでファイル検索をしてプロパティからコピーをし
ファイル名を足しました。そこで何か違ってるのかも・・・。
エクスプローラー画面とはどこのことをさすのでしょうか。。。
何か面倒かけてますね。
どうぞお返事が大変でしたらあきらめます。

補足日時:2010/04/02 23:33
    • good
    • 0
この回答へのお礼

結果は残念でしたがご親切に教えていただきありがとうございました。
おそらく私のやり方違いからだと思います。
今回教えて頂いてマクロをもっと活用したいと感じました。
勉強してみたいと思います。

ありがとうございました。

お礼日時:2010/04/05 10:49

NO3です。


>「******」を削除してパス名を貼り付ければいいのですね?パス名っって何ですか?
⇒顧客情報詳細.xlsまでのローカルディスクのアドレスです。
 エクスプローラ画面のアドレス欄に表示されています。
 例えば、マイドキュメントフォルダにあるファイルは、C:\Documents and Settings\??????\My Documents\ファイルとなります。
 因みにサンプルコードでは、ローカルディスク(C)を想定にしましたので「C:\~」としていますが、ローカルディスク(D)ならば「D:\~」として下さい。
 

この回答への補足

残念ですができませんでした。
パスはC:¥Documents and Settings¥user¥デスクトップ¥顧客情報詳細.xls でしたので
貼り付けて設定しましたが
反映されません。どうしてでしょうか・・・?

補足日時:2010/04/02 16:07
    • good
    • 0

お、私の回答にも間違いが



>連絡先J8→C3

J8→C1
と考えています
    • good
    • 0

はじめに一言:


通常であれば一覧表を先に作成し詳細は一覧から抽出して作る形が一般的かと思います。

次に確認:
>連絡先J8→C3
これはJ8→C3の間違いではないですか?
以下の本題はJ8→C3と想定して考えています

本題:
1)顧客詳細情報のシート名が
Sheet1、Sheet2、Sheet3・・・・・
のような形式ならばExcelの関数のみで実現可能
一覧表A1
=INDIRECT("[顧客情報.xls]sheet"&ROW()&"!A6")
一覧表B1
=INDIRECT("[顧客情報.xls]sheet"&ROW()&"!J6")
一覧表C1
=INDIRECT("[顧客情報.xls]sheet"&ROW()&"!J8")
後は下方向にドラッグして


2)顧客情報のSheet名が個人名などになっている場合
マクロでの対応になると思われますが、マクロは大丈夫?


2)の場合はそれほど難しいマクロではないですが希望の場合は回答までに時間が必要

この回答への補足

すみません C1の間違いでした。
おっしゃる通りシート名は個人名になっております。


顧客情報のみを入力していましたが急遽DMも作成したいとの話に
なり質問の運びとなりました。
マクロですか・・・恥ずかしながら全くわかりません。
たびたびお手数ですが引き続き教えてください。
よろしくお願いします。困ってます。

補足日時:2010/04/02 13:28
    • good
    • 0
この回答へのお礼

遅くなりましたが
マクロ活用で随分と便利になるものだと知りました。
今回結果は残念でしたが(精進します)
親切に教えていただきありがとうございました。

お礼日時:2010/04/05 10:51

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!