- ベストアンサー
エクセル2002 winXP タイトルの列を入れ替えて他のブックへコピーしたい
お世話になります。 簡単なマクロを使って、表題通り、あるブックの表を、他のブックへ コピーし、なおかつタイトル列を右へ左へと入れ替えた状態で表示する方法を 教えてください。 具体的には・・・ bookA には、A列から順番に、たとえば 日付 材料名 単価 入り数 金額 というタイトルの列が並んでいて(データの量は、3000行くらいです) 各列には文字列だったり数値だったりのデータが入っています。 このようなデータから、他ブック bookB へ。 このbookB には、既にデータが何千行か入っていて、bookAと 同じデータなのですが、 見方を違えているので、タイトルがbookA と 並び方が違っています。 bookA のタイトルが、bookBでは 日付 単価 金額 入り数 (実際にはもう少し複雑なのですが)と並んでいます。 このbookBの、最終行に、bookA を、貼り付けたいのです。 bookA 日付 材料名 単価 入り数 金額 (3000行くらいデータが入ってるのでそれをコピーしたい) から、 bookB 日付 単価 金額 入り数 (既に何千行か入ってるので最終行の続きへ貼り付けたい)
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
う~ん 何でかな? データはどの様に入っていますか? 日付 単価 金額 入り数 2007/01/01 10000 1000 10 2007/01/02 15000 2000 20 2007/01/01 20000 3000 30 2007/01/03 15000 4000 40 2007/01/02 50000 5000 50 これ位の簡単なデータで試した場合はどうなりますか? あと rsXL.Open "select 日付,単価,金額,入り数 from [大阪$]", _ cnXL, adOpenForwardOnly を rsXL.Open "select * from [大阪$]", _ cnXL, adOpenForwardOnly とした場合は? Connection自体は成功しているようなのでデータに何かあるのでは?と思っています。 (データ量の多寡は問題なさそうです。1万行で試しました。)
その他の回答 (3)
- nicotinism
- ベストアンサー率70% (1019/1452)
抜けてた。 一部修正 wS.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).CopyFromRecordset rsXL あとは大丈夫かな・・・
- nicotinism
- ベストアンサー率70% (1019/1452)
簡単なマクロ・・・では無いかも? 私自身現場で使った事はありませんが何とかなりそうなのでレスしました。 VBEの画面でツール→参照設定で下記にチェックを入れます Microsoft ActiveX Data Objects 2.5 Libraly (2.5 より大きいものもありますが、それを選択した場合ADODBのヘルプが使えなくなります) で、BookBの標準モジュールに Sub importXL() Dim cnXL As ADODB.Connection Dim rsXL As ADODB.Recordset Dim wS As Worksheet Set wS = Worksheets("sheet1") Set cnXL = New ADODB.Connection With cnXL .Provider = "MSDASQL" .ConnectionString = "Driver={Microsoft Excel Driver (*.xls)};" & _ "DBQ=C:\bookA.xls; ReadOnly=True;" .Open End With Set rsXL = New ADODB.Recordset rsXL.Open "select 日付,単価,金額,入り数 from [ブックAのシート名$]", _ cnXL, adOpenForwardOnly wS.Cells(Rows.Count,1).End(xlUp).CopyFromRecordset rsXL rsXL.Close: Set rsXL = Nothing cnXL.Close: Set cnXL = Nothing End Sub C:\bookA.xlsは実際のPathに、 ブックAのシート名$ も 実際の名前(Sheet1$)などに替えて下さい。 ※必ずバックアップは取ってからお試しを!
お礼
補足の補足です。 [ブックAのシート名$]", の、シート名は、大阪 なのですが、 rsXL.Open "select 日付,単価,金額,入り数 from[大阪$]", _ cnXL, adOpenForwardOnly ここで、 Microsoft Excel Driver で、2が足りません。・・・ と出てきてしまいます。 どういう意味なのでしょうか??
補足
お忙しい中、ご回答ありがとうございました! 自分でも、VBAを使った方法でやってみようと、 休み中自宅で考えていましたが、なにぶんVBAについては初心者で、 なかなか思うところまでいきつきません。 いつも構文をみようみまねでアレンジしている次第でして。。。 早速ためしてみたいと思います。 また、結果の報告をお礼の欄でさせて頂こうと思います。 ありがとうございます!
- toshi_2000
- ベストアンサー率30% (306/1002)
列毎に選択コピーし、貼り付けるのがいいと思います。
お礼
それが手っ取り早いとは思うのですが、実際には対象のワークシートがたくさんあり、同じ作業を何回もするくらいなら、と思いまして。 ありがとうございました。
お礼
できました!!!(*^_^*) 自宅のは エクセル2003だと気づき、そのせいもあるのかと思いましたが、いろいろ間違った点がありました。 まず、試しで作ったファイルを利用していたので、新規ブックを使ってはいたが、一旦保存していなかったため、多分ファイルが見つからないと 出たのでしょう。 それから、ファイルパス指定を、Dドライブなのに、コピーしたままのCにしていた・・・ということに気づき、なおしたら、 あっというまにマクロが走りました!!! ありがとうございました! お忙しい時間をさいていただき感謝します。 これを、実際のでっかいファイルに明日、活用してみます!
補足
お返事ありがとうございます。 今夜自宅で試して見ます。 未熟者ですみません!