前提:
・あるフォルダ下に30~50のエクセルファイルが格納されている。
・それぞれのエクセルファイルは全く同じフォーマットである。
・エクセルファイルは複数(5~8)のシートで構成されている。
実現したいこと(今回ご教授いただきたいこと):
1. 上記エクセルファイルのあるひとつのシートを別フォルダに格納されているエクセルシートの
ひとつのシートに一括で取り込みたい。
または
2. 上記エクセルファイルにあるひとつのシートをアクセスに一括で取り込みたい。
ちなみに集計したいデータはDBテーブルの形をしています。
つまり、本来50ほどあるエクセルファイルのあるシートを一つずつ50回「アクセスへエクスポート」する
作業をVBAで実現したいのです。
1.であれば、すべてを取り込んだエクセルファイルをアクセスへエクスポートするつもりです。
VBAは素人なので(ま、素人なのはVBAに限りませんが)ノーアイディアです。
何とぞよろしくお願いいたします。
No.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)
のところで「変数が定義されていない」という
コンパイルエラーが出るのですが、
どういうことですか?
教えていただけると幸甚です。
No.3
- 回答日時:
Excel2007で作成しました。
Moduleを追加してコピペで動くはずだけど
ただ、コピペで使うのではなく
どんな処理になっているのかなとか?
この関数は何してるのかなとか?
ちゃんと調べれば、動くはずです。
最初はみんな初心者なので、人の作ったソースを
参考に必ず理解してから、自分のものにした方がいいかと
環境と詳しいエラーメッセージを教えていただければ、
手だすけできるかな?
がんばって、勉強してください
ありがとうございます。
現在解読中(教えていただいたコードを自分なりに消化)なのでまだ動いていませんが、なんとかいけそうです。おそらくシートを順番に取り込むような仕様を想定してお教えくださったようなのですが、(私の説明が足りずごめんなさい)、実際はたくさんあるファイルの中のそれぞれ一つのシートから取り込みたいので、そこがひっかかっていると思います。教えていただいたコードを元に修正します。
ありがとうございました。
No.2
- 回答日時:
VBAを余り勉強してないのに、回答を求めるのは、他人にコードを作ってクレと言うことになる。
ここは無料のコード作成依頼コーナではない。ヒントぐらいを頼むところだ。問題が普通のケースではない。ファイルが数十、シートは10シート近くは初心者の課題ではない。
本来自分で出来ないことは、当面あきらめざるをえないのが世の常。
>のあるひとつのシート
これはどうやって見出すのか。一般的な書き方をしないこと。名前とか特徴は?
>別フォルダに格納されているエクセルシートのひとつのシートに一括で取り込みたい。
これも具体的に書かないと。
>にあるひとつのシートをアクセスに一括で取り込みたい
の「ある」とは
ーー
これらは質問すす場合は、2・3のエクセルブックに限定し、シート名も決めて、取り込み先のブックやシート名も決めて、模擬実例を作って、質問するものだ。一般的な表現にするのは、わかりにくくするだけ(ある、特定の、などの頻用)
ーー
アクセスにエクスポートするなどは、別の問題なので、質問を別にしたら。
ーー
課題はフォルダの中のファイルをすべて掴む方法
(1)Dir関数
(2)FSO のFor Each
(3)エクセルブック以外の捨て方
-ー
在るブックの中の全シートの掴み方。名前が同じなら簡単だが。
ーー
一括して取り込むとはコピー貼り付け
ーー
決めたブックめがけてそのシートのコピーを出来ないか
>集計したいデータはDB
アクセスで集計したいのか。アクセスでしないとならないほど、複雑なのか。
アクセスは少しはわかるということか。
エクセルでも出来る化も知れないと思うが。ブック間のデータの統合
http://www.eurus.dti.ne.jp/~yoneyama/Excel/tougo …
これをマクロの記録に持ち込んで、コードを修正。
ーー
親切な回答者は現れるとおもうが、其れで良しとしないで、2つのことをWEBででもしらべて勉強してから、判らない点にしぼって質問すること。
ありがとうございます。
ご指摘いただいたことに関してはご尤もですし、質問する前から百も承知ではあったのですが、結局甘えて他人に任せてしまったのは私の至らないところではあります。
質問の仕方、当ページを利用するにあたっての心構え、ご指摘いただいた点を甘んじて受け、今後気をつけます。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ワイルドカード「*」を使うとう...
-
VBA シート名が一致した場合の...
-
エクセルVBAが途中で止まります
-
【ExcelVBA】インデックスが有...
-
VBA シートをコピーする際に Co...
-
VBS Bookを閉じるコード
-
別ブックをダイアログボックス...
-
VBA コードを実行すると画面が...
-
任意のブックのシートをコピー
-
[Excel]ADODBでNull変換されて...
-
【マクロ】違うフォルダにある...
-
【マクロ】アクティブセルにブ...
-
VBA 実行時エラー 2147024893
-
【VBA】全シートの計算式を全て...
-
ユーザーフォームの切り替えに...
-
Excel VBA別ブックのシートをコ...
-
フォルダ内の全てのファイルに...
-
VBの処理結果をEXCELシ...
-
VBA 別ブックからコピペしたい...
-
【Excel VBA】書き込み先ブック...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBA シートをコピーする際に Co...
-
エクセルVBAが途中で止まります
-
VBA 別ブックからコピペしたい...
-
別ブックをダイアログボックス...
-
ワイルドカード「*」を使うとう...
-
【マクロ】AブックからBブック...
-
【ExcelVBA】インデックスが有...
-
【ExcelVBA】zip圧縮されたCSV...
-
VBA コードを実行すると画面が...
-
VBA シート名が一致した場合の...
-
VBA 実行時エラー 2147024893
-
VBS Bookを閉じるコード
-
VBAで別のブックにシートをコピ...
-
VBAで別ブックのシートを指定し...
-
【マクロ】違うフォルダにある...
-
[Excel]ADODBでNull変換されて...
-
VBAで複数のブックを開かずに処...
-
【Excel VBA】書き込み先ブック...
-
Excelマクロ 該当する値の行番...
-
vbaでvbaProjectのパスワード解...
おすすめ情報