- ベストアンサー
VBAで別のエクセル内の値を取り込む方法
- VBAを使用して、エクセルファイル内の特定のシートを別のエクセルファイルのシートに一括で取り込む方法について教えてください。
- エクセルファイルに格納されている複数のシートからデータをアクセスに一括で取り込む方法をVBAで実現したいです。
- VBAを使って、30〜50のエクセルファイルにある特定のシートを一つずつアクセスへエクスポートする方法を教えてください。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
Excelのバージョンがわからないのですが こんなんで どうでしょう? Option Explicit Const DATA_PATH = "D:\tess\data\" Const gFile = "制御.xlsm" '/* 書き込み先のブック Const gSheet = "Sheet1" '/* 書き込み先のシート Dim lRows_Cnt As Long Sub Main() lRows_Cnt = 1 Dim StrMsg As String Dim StrFn As String '/* ファイルを検索する StrFn = Dir(DATA_PATH & "*.xlsx") Do While StrFn <> "" StrMsg = StrFn '/* ファイルが見つかった Call yExcel(CStr(StrMsg)) StrFn = Dir() Loop End Sub Sub yExcel(sFile As String) Workbooks.Open DATA_PATH & sFile, ReadOnly:=True Dim ii As Integer For ii = 1 To Workbooks(sFile).Worksheets.Count With Workbooks(sFile).Worksheets(ii) Dim iSub_Row As Integer: iSub_Row = 1 Do Until Workbooks(sFile).Worksheets(ii).Cells(iSub_Row, 1) = "" '/* 書き込み Excel Workbooks(gFile).Worksheets(gSheet).Cells(lRows_Cnt, 1) = _ Workbooks(sFile).Worksheets(ii).Cells(iSub_Row, 1) Workbooks(gFile).Worksheets(gSheet).Cells(lRows_Cnt, 2) = _ Workbooks(sFile).Worksheets(ii).Cells(iSub_Row, 2) ’/* この辺に アクセスのインサトーと処理を書く。。。。。 lRows_Cnt = lRows_Cnt + 1 iSub_Row = iSub_Row + 1 Loop End With Next ii ' <使用例 特定のブックを閉じる> Workbooks(sFile).Close End Sub
その他の回答 (2)
- aji70
- ベストアンサー率100% (1/1)
Excel2007で作成しました。 Moduleを追加してコピペで動くはずだけど ただ、コピペで使うのではなく どんな処理になっているのかなとか? この関数は何してるのかなとか? ちゃんと調べれば、動くはずです。 最初はみんな初心者なので、人の作ったソースを 参考に必ず理解してから、自分のものにした方がいいかと 環境と詳しいエラーメッセージを教えていただければ、 手だすけできるかな? がんばって、勉強してください
お礼
ありがとうございます。 現在解読中(教えていただいたコードを自分なりに消化)なのでまだ動いていませんが、なんとかいけそうです。おそらくシートを順番に取り込むような仕様を想定してお教えくださったようなのですが、(私の説明が足りずごめんなさい)、実際はたくさんあるファイルの中のそれぞれ一つのシートから取り込みたいので、そこがひっかかっていると思います。教えていただいたコードを元に修正します。 ありがとうございました。
- imogasi
- ベストアンサー率27% (4737/17069)
VBAを余り勉強してないのに、回答を求めるのは、他人にコードを作ってクレと言うことになる。ここは無料のコード作成依頼コーナではない。ヒントぐらいを頼むところだ。 問題が普通のケースではない。ファイルが数十、シートは10シート近くは初心者の課題ではない。 本来自分で出来ないことは、当面あきらめざるをえないのが世の常。 >のあるひとつのシート これはどうやって見出すのか。一般的な書き方をしないこと。名前とか特徴は? >別フォルダに格納されているエクセルシートのひとつのシートに一括で取り込みたい。 これも具体的に書かないと。 >にあるひとつのシートをアクセスに一括で取り込みたい の「ある」とは ーー これらは質問すす場合は、2・3のエクセルブックに限定し、シート名も決めて、取り込み先のブックやシート名も決めて、模擬実例を作って、質問するものだ。一般的な表現にするのは、わかりにくくするだけ(ある、特定の、などの頻用) ーー アクセスにエクスポートするなどは、別の問題なので、質問を別にしたら。 ーー 課題はフォルダの中のファイルをすべて掴む方法 (1)Dir関数 (2)FSO のFor Each (3)エクセルブック以外の捨て方 -ー 在るブックの中の全シートの掴み方。名前が同じなら簡単だが。 ーー 一括して取り込むとはコピー貼り付け ーー 決めたブックめがけてそのシートのコピーを出来ないか >集計したいデータはDB アクセスで集計したいのか。アクセスでしないとならないほど、複雑なのか。 アクセスは少しはわかるということか。 エクセルでも出来る化も知れないと思うが。ブック間のデータの統合 http://www.eurus.dti.ne.jp/~yoneyama/Excel/tougou.html これをマクロの記録に持ち込んで、コードを修正。 ーー 親切な回答者は現れるとおもうが、其れで良しとしないで、2つのことをWEBででもしらべて勉強してから、判らない点にしぼって質問すること。
お礼
ありがとうございます。 ご指摘いただいたことに関してはご尤もですし、質問する前から百も承知ではあったのですが、結局甘えて他人に任せてしまったのは私の至らないところではあります。 質問の仕方、当ページを利用するにあたっての心構え、ご指摘いただいた点を甘んじて受け、今後気をつけます。 ありがとうございました。
お礼
ありがとうございます。大変助かります。 現在テストをしておりますが、 Sub yExcel(sFile As String) のところで「変数が定義されていない」という コンパイルエラーが出るのですが、 どういうことですか? 教えていただけると幸甚です。