• ベストアンサー
  • すぐに回答を!

VBAでエクセルに別のエクセル内の値を取り込む

前提: ・あるフォルダ下に30~50のエクセルファイルが格納されている。 ・それぞれのエクセルファイルは全く同じフォーマットである。 ・エクセルファイルは複数(5~8)のシートで構成されている。 実現したいこと(今回ご教授いただきたいこと): 1. 上記エクセルファイルのあるひとつのシートを別フォルダに格納されているエクセルシートの ひとつのシートに一括で取り込みたい。 または 2. 上記エクセルファイルにあるひとつのシートをアクセスに一括で取り込みたい。 ちなみに集計したいデータはDBテーブルの形をしています。 つまり、本来50ほどあるエクセルファイルのあるシートを一つずつ50回「アクセスへエクスポート」する 作業をVBAで実現したいのです。 1.であれば、すべてを取り込んだエクセルファイルをアクセスへエクスポートするつもりです。 VBAは素人なので(ま、素人なのはVBAに限りませんが)ノーアイディアです。 何とぞよろしくお願いいたします。

共感・応援の気持ちを伝えよう!

  • 回答数3
  • 閲覧数547
  • ありがとう数3

質問者が選んだベストアンサー

  • ベストアンサー
  • 回答No.1
  • aji70
  • ベストアンサー率100% (1/1)

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

共感・感謝の気持ちを伝えよう!

質問者からのお礼

ありがとうございます。大変助かります。 現在テストをしておりますが、 Sub yExcel(sFile As String) のところで「変数が定義されていない」という コンパイルエラーが出るのですが、 どういうことですか? 教えていただけると幸甚です。

関連するQ&A

  • EXCEL VBA 別シートへデータ集計

    お世話になります。 EXCEL VBAを使って下記のことを実現したいです。 [やりたいこと] [データ]シートに社員情報が4人分入っています。(本当は可変です) [データ]シートに"集計"というボタンを作ってクリックするとVBAが動いて[集計]という シートにデータを集計したいのです。この[集計]シートのフォームが少し変わっていて一人に つき3行使用します。次の人はまた3行、また次の人は3行と繰り返していきたいのです。 上記やりたい事を画像にもしてみました。 上記動作を実現するVBAコードをどなたかご教授いただけませんでしょうか? 何卒よろしくお願い致します。 環境 EXCEL 2017 Win7

  • Excelで値貼り出力をするVBAは作れますか?

    Excelで値貼り出力をするVBAは作れますか? Excel2003を業務で使用しています。 SUMPRODUCTなどのいろんな関数を使って売上げ報告書を集計し、 取引先に送っているのですが、計算式や参照式でファイルが重くなっているので、 値貼りをしたファイルを作成したいのです。 そこで、VBAを使って以下のどちらかを実現することは可能でしょうか。 ・報告書の全シートの全書式(罫線・色)と値を別ファイルに出力 ・書式のみ、全て空欄の別ファイルに全シートを値貼り これが出来るととても助かるので、ご教示ください。宜しくお願いいたします。

  • アクセス~エクセルファイルを開く~アクセス終了

    アクセスVBAで、クエリ実行→エクセルシートへエクスポートしているのですが、その後、あるエクセルファイル を開いて、アクセスを終了させたいのですが、どのようなコードになりますでしょうか? ※エクセルファイルは、開いた後作業します。

その他の回答 (2)

  • 回答No.3
  • aji70
  • ベストアンサー率100% (1/1)

Excel2007で作成しました。 Moduleを追加してコピペで動くはずだけど ただ、コピペで使うのではなく どんな処理になっているのかなとか? この関数は何してるのかなとか? ちゃんと調べれば、動くはずです。 最初はみんな初心者なので、人の作ったソースを 参考に必ず理解してから、自分のものにした方がいいかと 環境と詳しいエラーメッセージを教えていただければ、 手だすけできるかな? がんばって、勉強してください

共感・感謝の気持ちを伝えよう!

質問者からのお礼

ありがとうございます。 現在解読中(教えていただいたコードを自分なりに消化)なのでまだ動いていませんが、なんとかいけそうです。おそらくシートを順番に取り込むような仕様を想定してお教えくださったようなのですが、(私の説明が足りずごめんなさい)、実際はたくさんあるファイルの中のそれぞれ一つのシートから取り込みたいので、そこがひっかかっていると思います。教えていただいたコードを元に修正します。 ありがとうございました。

  • 回答No.2
  • imogasi
  • ベストアンサー率27% (4558/16318)

VBAを余り勉強してないのに、回答を求めるのは、他人にコードを作ってクレと言うことになる。ここは無料のコード作成依頼コーナではない。ヒントぐらいを頼むところだ。 問題が普通のケースではない。ファイルが数十、シートは10シート近くは初心者の課題ではない。 本来自分で出来ないことは、当面あきらめざるをえないのが世の常。 >のあるひとつのシート これはどうやって見出すのか。一般的な書き方をしないこと。名前とか特徴は? >別フォルダに格納されているエクセルシートのひとつのシートに一括で取り込みたい。 これも具体的に書かないと。 >にあるひとつのシートをアクセスに一括で取り込みたい の「ある」とは ーー これらは質問すす場合は、2・3のエクセルブックに限定し、シート名も決めて、取り込み先のブックやシート名も決めて、模擬実例を作って、質問するものだ。一般的な表現にするのは、わかりにくくするだけ(ある、特定の、などの頻用) ーー アクセスにエクスポートするなどは、別の問題なので、質問を別にしたら。 ーー 課題はフォルダの中のファイルをすべて掴む方法 (1)Dir関数 (2)FSO のFor Each (3)エクセルブック以外の捨て方 -ー 在るブックの中の全シートの掴み方。名前が同じなら簡単だが。 ーー 一括して取り込むとはコピー貼り付け ーー 決めたブックめがけてそのシートのコピーを出来ないか >集計したいデータはDB アクセスで集計したいのか。アクセスでしないとならないほど、複雑なのか。 アクセスは少しはわかるということか。 エクセルでも出来る化も知れないと思うが。ブック間のデータの統合 http://www.eurus.dti.ne.jp/~yoneyama/Excel/tougou.html これをマクロの記録に持ち込んで、コードを修正。 ーー 親切な回答者は現れるとおもうが、其れで良しとしないで、2つのことをWEBででもしらべて勉強してから、判らない点にしぼって質問すること。

共感・感謝の気持ちを伝えよう!

質問者からのお礼

ありがとうございます。 ご指摘いただいたことに関してはご尤もですし、質問する前から百も承知ではあったのですが、結局甘えて他人に任せてしまったのは私の至らないところではあります。 質問の仕方、当ページを利用するにあたっての心構え、ご指摘いただいた点を甘んじて受け、今後気をつけます。 ありがとうございました。

関連するQ&A

  • 【Excel-VBA】特定の処理をしている間、関数を止める方法について

    Excelで実現可能かどうか教えてください。 入力用Book1 ⇒ 入力シート1 入力用Book2 ⇒ 入力シート2 入力用Book3 ⇒ 入力シート3 集計用Book ⇒ 集計シート1、集計シート2、集計シート3、入力シート1、入力シート2、入力シート3 上記の4ファイルがあり、入力用Book1~3はそれぞれ5名ぐらいが 共有してデータを入力しています。 集計用Bookの集計シート1で入力シート1を集計したいので、VBAで 入力シート1~3を集計用Bookに取り込みたいと考えております。 ただ、集計シート1~3にはそれぞれSumproductを多用しており、 VBAで取込処理を行うと10分近くかかってしまいます。 集計シート1~3を削除して取込を行うと10秒ほどで完了します。 取込処理を行う間、各セルに入力している数式の処理を止めることは 可能でしょうか? 入力用シート1~3を扱うメンバーは定期的に変わるため、 全てをVBAで構築するのは躊躇われます。 なんとかsumifやsumproductを使用して、メンテナンス工数を 削減したいので、よろしくお願いいたします。

  • 別のexcelのデータをコピペするVBA

    お世話になります。 ExcelファイルのXとYがあります。 Xから、「複数セルを選択」して、Yに「貼付け」する処理の 一部をマクロ(vba)で作成したいと思っております。 具体的ステップとして (1)手動で、Xの任意の連続したセルを選択してコピー (2)Yに移動して、貼り付けしたいセルを選択 (3)(1)で取得したデータをペースト です。 (3)の箇所を「Xのマクロ」を呼び出して実現したいと 思っているのですが、どのようにマクロ(VBA)を記載したら実現できるでしょうか? 本当に勝手で申し訳ございませんが、  ・上記を実現するVBAのコード  ・実際に動作確認されたVBAのコード を教えて頂けないでしょうか? 実は、同じような質問を2回ほどしたのですが、実現できない 回答ばかりでした。 VBAの得意な方、何卒宜しくお願い致します。 ※普通レベルの方は無理と思われますので

  • エクセルVBAに関しての質問です。

    エクセルVBAに関しての質問です。 同じフォルダ内に同形式のエクセルファイルが複数あります。そのファイルの特定のシートの中の特定の列のみをコピーして並べたいと思っています。 (1)フォルダはUSBに入れて使ったり、複数のパソコンの中で使われるので特定の場所にあるとは限りません。 (2)フォルダ名はその年度に応じて変更されます。「2009」、「2010」・・・といった具合です。 (3)フォルダ内のファイル数は常に3つで、「記録集計第1期」「記録集計第2期」「記録集計第3期」と名前を付けています。 (4)3つのファイル全てに「結果」という名前のシートがあり、そのシートのC4~AU37までのセルをコピーしたいです。 (5)C4~AU37までのセルには数値では無く、IF関数を使用して出された「◎」「◯」「△」等の文字列が入っています。 (6)コピーしたセルを「記録集計第3期」ファイルの中の「年度末結果」というシートのC2以降に並べてコピーしたいです。 「記録集計第1期」のC4~AU37を「年度末結果」のC2~AU35へ 「記録集計第2期」のC4~AU37を「年度末結果」のAV2~CN35へ 「記録集計第3期」のC4~AU37を「年度末結果」のCO2~EG35へ といった具合です。 (7)作業手順としては、「記録集計第3期」のファイルを開き、その中の「年度末結果」のシートにボタンを作って上記のVBAを動かせたらと思っています。 (8)「記録集計第1期」「記録集計第2期」のファイルは開かずにデータをコピーしたいです。 勝手なお願いで申し訳ございませんが、 お時間がございましたら、よろしくお願いいたします。

  • ExcelVBAでデータの値を集計する(長文です)

    ExcelのVBAについて教えて下さい。  A    B   C   D   E F  G 1 4月 5月 6月 ・・・ 2みかん 30 3りんご 55 4ぶどう 45 1つのbookにシートが20ほどあり全て同じ表で出来ています。シートは増える可能性があります。 それぞれのシートのセルB2やB3の合計を集計シートのB2やB3に出したいです。 Sub テスト() with Worksheet("集計") .Range("B2:R25").ClearContents .Range("B2").Consolidate Sourcces:=Array("'[Book1]経理"!R2C2:R50C50")_ Function:=xlSum, TopRow:=Flase, LeftColumn:=False,_ End With End Sub 上記のVBAで合計値を出すことが出来たのですが、合計するシート名を指定していたら、「行継続文字列を使い過ぎ」とエラーメッセージがでてしまいました。 そこで、シート5とシート12を除いたシートの合計値を集計シートにだすVBAを教えて下さい。 質問が分かり辛く、長文になってしまいしたがよろしくお願いいたします。

    • ベストアンサー
    • Mac
  • excel vba 複数シートをまとめる

    お世話になります。 A.xlsというブックがあります。 その中に[集計]というシートがあります。 このシートに[ボタン]を配置してクリックしたら以下の動作を実現させたいのです。 (1)[集計]シートのA2に位置セット (2)[東京]、[大阪],[名古屋]という名称のシートの列=A2&#65374;A62、行=A2&#65374;データ最下行にある全データを[集計]シートにどんどんコピー貼り付けして追加していきたいのです。 上記動作を実現するVBAのロジックをどなたかご教授いただけますでしょうか。 よろしくお願い致します。

  • VBAで別エクセルファイルから指定エクセルファイルにシートをコピー

    Office2003のエクセルでVBAを勉強しております。 そこで、VBAで別エクセルファイルからあるシートを指定エクセルファイルへ丸まるコピーしたい場合にはどのようにすればよいのでしょうか?

  • エクセルで値コピーの仕方が判りません教えてください

    エクセルで1枚の集計シートを作り、そのシートの最下段に集計欄を作りました。ここまではよかったのですが、その先は数百枚有るシートのこの集計欄を更に集計し1枚の大集計シートを作りたいのです。しかし、どうやってもやり方がわかりません。お詳しい方に是非このファイルをまとめるやり方をお教えいただきたくお願い申し上げます。

  • VBAエクセルのフォームについて

    お世話になっております。 VBAエクセルのフォームについて教えていただきたいのです。 VBAで入力のフォームを作ったのですが(TEXT BOXが4つ、コマンドボタン1つ、コマンドボタンを押したときに登録される用にしたい) 各シートの集計にしたい為、各シート(31のシートがあります)に入力フォームがあります、その各シートでの入力結果を1つのシートに 集計したいのですが、どの様なコードにしたらようか判りません。 素人のためお手数ですが、なるべく判りやすくお願いします。 よろしくお願いします。

  • エクセルVBAに関しての質問です。

    エクセルVBAに関しての質問です。 同じフォルダ内に同形式のエクセルファイルが複数あります。そのファイルの特定のシートの中の特定の列のみをコピーして並べたいと思っています。 (1)フォルダはUSBに入れて使ったり、複数のパソコンの中で使われるので特定の場所にあるとは限りません。 (2)フォルダ名はその年度に応じて変更されます。「2009」、「2010」・・・といった具合です。 (3)フォルダ内のファイル数は常に3つで、「記録集計第1期」「記録集計第2期」「記録集計第3期」と名前を付けています。 (4)3つのファイル全てに「結果」という名前のシートがあり、そのシートのC4~AU37までのセルをコピーしたいです。 (5)C4~AU37までのセルには数値では無く、IF関数を使用して出された「◎」「◯」「△」等の文字列が入っています。 (6)コピーしたセルを「記録集計第3期」ファイルの中の「年度末結果」というシートのC2以降に並べてコピーしたいです。ただし、コピーする際に4行ずつ飛ばしてコピーしたいです。 「記録集計第1期」のC4を「年度末結果」のC2へ、C5をC6へ...... 「記録集計第2期」のC4を「年度末結果」のC3へ、C5をC7へ...... 「記録集計第3期」のC4を「年度末結果」のC4へ、C5をC8へ...... といった具合です。 このコピーにより、C2から始まって、C2=記録集計第1期のC4、C3=記録集計第2期のC4、 C4=記録集計第3期のC4ときて、年度末結果のC5には空白の列ができます。 そして、C6からまた続く訳です。 ややこしくてすみません。 (7)作業手順としては、「記録集計第3期」のファイルだけを開き、その中の「年度末結果」のシートにボタンを作って上記のVBAを動かせたらと思っています。 (8)「記録集計第1期」「記録集計第2期」のファイルは開かずにデータをコピーしたいです。 勝手なお願いで申し訳ございませんが、 お時間がございましたら、よろしくお願いいたします。

  • エクセルVBAで複数のブックから指定のシートを別のブックに複写するには

    エクセルVBAの超初心者です。 複数のフォルダに「●●社計算書(2010年3月).xls」・・・()内の年月は毎月増えます。格納されているフォルダは各会社名です。 というブックがあります。その各ブック内の売上というシートにある商品コードと売上金額を別の集計用ブックで集計したいと思っています。 どのように集計用ブックにコードを書いたらよいのでしょうか? 1 商品コードは各社共通です。 2 ブック名は共通ですがブック内のフォーマットは共通していません。(シート名は共通) 3 集計するのは集計時の年月度のデータです。 要領を得ず、ぶしつけな質問かと思いますが、大変困っています。 どなたかお分かりになる方、ご教授願います。