- ベストアンサー
マクロを利用してエクセルに任意の複数行を作り、外部データベースからエクスポートとしたtextデータを貼り付けたいのですが?
外部のデータベースからエクセルのマクロを使って、作業をしたいと思っています。Aのワークシートに外部データベースからの任意の数字をコピーし、さらにBワークシートにその任意の数字だけの空欄の行を挿入し、データベースからメモ帳形式でエクスポートしたtextデータを貼り付けたいと思っています。AとBは できれば、別のブックで作業をしたいと思っています。この作業を200回ぐらい行いたいのですが、かなり数の多い作業になると思うので、マクロをうまく使えればと思うのです。が、初心者なので、お教えいただければ幸いです。 よろしくお願いいたします。(うまく実情が伝わっているか、不安ですが)
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
サンプルプログラムです。 ブックBにこのマクロを置き(名前は何でもOK)、データは「同じフォルダ」にある「data.csv」を想定しています。 エラー処理は全く入っていません。 注意!!!!! ダミーデータで試しただけなので、いきなり「実戦」で使わないでください。 データのバックアップをとった上で、いろいろな条件でテストを繰り返してし、必要に応じて修正してから使ってください Sub DataCopy() Dim InsertRow As Long Workbooks.Open ThisWorkbook.Path & "\data.csv" Workbooks("data.csv").Activate Worksheets("DATA").Rows("1:" & [A65536].End(xlUp).Row).Copy ThisWorkbook.Activate Sheet1.Activate InsertRow = InputBox("挿入する行番号位置を入力してください" & Chr(13) & "ここで指定された行の下に挿入します", "挿入位置の指定") + 1 Cells(InsertRow, 1).Insert Shift:=xlDown End Sub #3のimogasiさんがおっしゃる >エクセルVBAは手作業でする(出来る)ことを、コンピュタに自動 >でやらすことまでしか出来ないものだ。だから手作業でやればど >うなるかわかっていないと、VBAでもダメでしょう。 はもっともだと思います。 例えば、この回答のサンプルプログラムは、実際に自分が行う動作を「VBA」という言葉をつかってEXCELに指示しただけです。 Excelをある程度扱える人に作業手順を説明するのとあまり変わりません。手作業でどうやってやるのか、ちゃんと道筋をつけれないようではマクロは作れません。 もう一つアドバイスです。ExcelのマクロはExcelの機能を使って動きます。マクロを覚えるよりも大事なのは、Excelの機能を知ることです。
その他の回答 (4)
- rukuku
- ベストアンサー率42% (401/933)
>(うまく説明できるかどうか不安ですが、) ある程度自動化できると思います。 >CSV形式でエクセルで読み込むことは、手作業でできています。 これはマクロでできます。 Workbooks.Open "[csvファイル名]" です。 http://www.moug.net/tech/exvba/0060049.htm 後々のプログラムも考えて、csvを置くフォルダと、csvのファイル名はいつも同じにすると楽です。 >データが20から200行くらいまでデータの分量に差があって、その300データの… ちょっと分からない点は、 この20~200のデータはひとまとめに、どこかの行の下に「挿入」するのでしょうか? それとも、なんかのルールに従って何カ所かに分けて「挿入」するのでしょうか? です。 このルール次第で、場所の指定の仕方が変わります。 >各行の下に、>データベースからのtextを読み込ませてゆきたいのです。 csvをExcelで読み込んでしまえば、後の操作はExcel上のコピー&ペーストと全く同じです。 ちょっと上で「挿入」という言葉を使いましたがcsvのブックから必要な行をコピーし、コピー先のExcelブックで場所を選んだら 「挿入」-「コピーしたセル」(バージョンによっては「コピーしたセルの挿入」になっています。) とやれば、元あったデータは自動的に下へ下がり、開いたところにコピーしたデータが貼り付きます。 マクロで書くと Selection.Insert Shift:=xlDown です。 http://www.jpita.or.jp/hpv3/ziten/mokutekibetu/ex_32.html
- imogasi
- ベストアンサー率27% (4737/17069)
質問の表現があいまいで不十分と思う。 >外部データベース 具体的にはどういうデータベースか。テキストファイルか。 >の数字をコピーし データベースのレコードの1フィールドを持ってくるのか。そういう場合はコピーとはいわない。 >空欄の行を挿入し なぜ行挿入する必要があるのか。 >メモ帳形式でエクスポートしたtext メモ帳形式とは言わない。テキスト(形式)というか文字列という。 元のデータベースのデータはテキストだけではないのか。 >ついでに、なんの(どういう)仕事に関したものかも書くほうが読者にはヒントになる。 ーー 結局200回処理が有るとしても、1回について、手作業でやる場合どういうステップ(詳細に書くこと)になるのか? (何の(どういう)単位で200回の繰り返しになるのか。例えば1日分を200日分繰り返すとか。200回繰り返しになるかどうか良く判った人が見ないと判らないかも知れないと思う。) 扱うデータの概略を説明(模擬実例を挙げることになろう)しないとわからない。 エクセルVBAは手作業でする(出来る)ことを、コンピュタに自動でやらすことまでしか出来ないものだ。だから手作業でやればどうなるか わかっていないと、VBAでもダメでしょう。 そしてどこまで自分でやれるのか、切り分けること。それが出来ないなら本作業をCVBAでやる段階までまだ経験・勉強して無いということです。 これも、回答者にVBAコードを作ってくださいという、丸投げの質問になるのではないか。
お礼
早速のご回答をありがとうございました。 細かい作業を文章で説明することは、難しいですね。手作業ではできているのですが、もう少し、どこの部分が分からないとはっきり書く必要があったと思います。 お返事をありがとうございました
- rukuku
- ベストアンサー率42% (401/933)
はじめまして 相方のデーターベースのソフトが分かりませんが、いざとなれば、データーベースからテキストファイルに出力して、Excelから読み込めば何とでもなります。 テキストファイルからデータを読み込んで所定の位置にはりつけていくことは、EXCELのマクロで十分可能です。 ただ、105105さんが実際にやりたいことの詳細は分かりませんのでこれ以上のアドバイスは難しいです。 また、このサイトのやりとりだけで解決できるような簡単な問題ではありません。105105さんが勉強されて、実際にやってみて、部分的に分からないことがあったら、質問するというのがこのサイトの利用の限界だと思います。 p(^^)q EXCELのマクロからテキストファイルを操作するのは以下のような手順になります。データをExcelに取り込むところまで行けば、後の処理はExcel内の作業だけになります(たとえBookが2つに別れていてもそんな問題ではありません)。 http://officetanaka.net/excel/vba/file/file08.htm
補足
お返事をありがとうございます。 もう少し、尋ねたいことを特定して質問しなければ、いけなかったですよね。すみません。 (うまく説明できるかどうか不安ですが、) データベースからテキストファイルに出力して、CSV形式でエクセルで読み込むことは、手作業でできています。その出力するデータが20から200行くらいまでデータの分量に差があって、読み込もうとするエクセルには、すでに300くらいのデータが入力されています。その300データの各行の下に、データベースからのtextを読み込ませてゆきたいのです。エクセルの任意の行の下に、textデータの行数にあわせてtextデータを読み込ませるという作業を行いたいのです。 マクロを勉強し始めて日が浅いので、経験も勉強も不足していて、すみません。 もう少し、研鑽を積んでみます。 お返事をいただきありがとうございました。
- n-jun
- ベストアンサー率33% (959/2873)
外部のデータベースってAccessとかOracleとか? それによって結構違うのではないかと思うのですが・・・未検証。 VBでデータベース http://homepage2.nifty.com/inform/vbdb/ VBの話ですけど、接続先・接続方法によって色々あるという参考になるかと思います。 単に別のブックというのであれば、スル~して下さい。
お礼
お返事をありがとうございました。 データベースという言い方が、曖昧でしたね。 海外の図書館とかが作っている、文献データベースのデータをエクセルに読み込みたかったのです。textファイルに出力してから読み込んでいます。普段自分の使っている言葉では、曖昧なことも多いということが良く分かり勉強になりました。ご紹介されたページも拝見しました。 ありがとうございました。
補足
有用なHPをお教えいただきありがとうございました。 csvデータをエクセルへのコピーして挿入する作業ですが、 ひとつの行の下に一まとめで指定した場所に書き込みたいと思っています。 手作業で進めている作業は、煩雑なだけでなく、ミスも起こる可能性が高いので、作業効率だけでなく正確さの意味からも、マクロを身に着けてゆきたいと思っています。 ありがとうございます。