システムメンテナンスのお知らせ

Excel 2003を利用している初心者です。
質問させていただきます。

エクセルのシートのデータを別のエクセルに自動で書き込んでくれるような仕組み(マクロ?)の作成方法を教えてください。

具体的には、
A.xls内の
----------------------------------------------------------------
名前       住所     電話番号    登録日
山田太一    東京都豊島区  0309990999   2005/11/01
宮田太一    東京都港南区  0309990999   2005/11/01
・          ・      ・      ・ 
・          ・      ・      ・
----------------------------------------------------------------
のようなのデータを、横列単位で
----------------------------------------------------------------
名前:山田太一    登録日2005/11/01
住所:東京都豊島区  電話番号:0309990999  
----------------------------------------------------------------
のように、項目のみを記載してある、B.xlsファイルに、自動で書き込むしたいのですが、その場合、どのような方法があるのでしょうか?

エクセルに関しては、ずぶの素人なので、どのような方法があるかもわからず、漠然と質問してしまいましたが、
何卒よろしくお願いいたします。

gooドクター

A 回答 (5件)

多分別ブックに、印刷用のシートを作りたいとか言うことだと思う。


そのためには、他ブックのセルを参照する方法を知れば済むことではないですか。とりあえず、質問者にはマクロなど早すぎます。
持ってくる他ブックのセルに(社員1.xlsブックのSheet1のA1セルの
データをもってきたい場合の例)
=[_社員1.xls]Sheet1!A1
のように書けば
='C:\Documents and Settings\xxxx\My Documents\[_社員1.xls]Sheet1'!A1
のように補正してくれます。
ーーー
さらにこれが実現しても、エクセルVBAを駆使しないと
1個人1シートのような帳票は自動で印刷できません。
多分そういうことがしたいのでしょうが。
もう少しエクセルを勉強して、VBAを勉強すべきと思います。
    • good
    • 10

もちろんマクロを書く手もありますが、やりたいことは別のブックのデータを参照してデータの並びを変えて表示したいということのように受け取れますので一般的にはINDIRECT関数で十分ではないでしょうか。



A.xlsの1行のデータをB.xlsの2行にまたがって表示したいことは分かりましたが、データが複数ある場合のデータ並びはどのようになりますか?
1行目+2行目が山田さんのデータで、3行目+4行目が宮田さんのデータですか? それが分からないと具体的な式は書けません。
    • good
    • 13

質問とは外れますが・・・・


そのように変更して印刷されたいのでしょうか?
そのようなファイルは非常に扱いにくい物になります。
(新しいファイルにとの事ですから元ファイルは残るとは思いますが・・・)
大変失礼ですがExcelに慣れていらっしゃらない方に限ってそのようなファイルを作られます。
見る時も2段になっていると、どちらかというとわかりにくいです。
用紙設定をA4横置きにするなど工夫して現状の物を印刷されてはいかがでしょうか?
    • good
    • 3

マクロはかけますか?


ワークブックを開くには

Workbooks.Open Filename := "C:\B.xls"

とします。開いてしまえば、後は

Workbooks("B.xls").Sheets(1).Cells(1, 1) = "なんとか"

という具合に、ワークブックに値を書き込むことができます。
フォーマット変換に関しては、ループを組むなどして、実現します。
最後に、保存して閉じます。

Workbooks("B.xls").Save
Workbooks("B.xls").Close

マクロが組めるのであれば、それほど難しいことではないですが、マクロを組めないのであれば、実現は困難ではないかと思います。
    • good
    • 3

VBAを使えば、出来ますね。


コードを書くのは面倒なので割愛しますが、順序としては
1.エクセルBを開く
2.エクセルAを行に合わせてループ(繰り返す)させる
3.セルのデータに"名前:"などをつけてエクセルBの行に貼り付ける。
です。

Workbooks.Open "C:\BookB.xls"

でエクセルを開けます(ファイルが無い場合はエラー)。
for i=0 To 1000(最大件数以上にすればいい)
Application.Workbooks("BookB.xls").Worksheets("sheet1").Cells(i,1).Value="名前:" + Application.Workbooks("BookA.xls").Worksheets("sheet1").Cells(i,1).Value
Next i
みたいな感じでいけると思います。
    • good
    • 4
この回答へのお礼

ありがとうございます。
皆様ご指摘のとおりVBAをもう少し学んでから、でなおします。

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

お礼日時:2006/12/08 12:17

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

このQ&Aを見た人はこんなQ&Aも見ています

gooドクター

このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング