- ベストアンサー
Excel データの自動読み込みについて
Excel初心者ですが宜しくお願いします。Excel2003を使用しています。 毎月自動で作成されるフォルダが在り、毎朝 その日の日付け名でCSVデータが作成されます。 【保存場所はCドライブ、フォルダ名は年月(例:0910)、CSVファイル名と、sheeet名は日付け+名称(例:091001リンゴ・091002リンゴ・・・・・)】 集計表を作成し、開いたらsheet1=(091001リンゴ)・sheet2=(091002リンゴ)・・・となるように、自動で取り込み(読み込み?)させる事は可能でしょうか。 集計表は、月末にまとめて、月初で更新させたいです。 現状は、毎朝 フォルダ開→CSVデータ開→sheetをコピー→集計表に貼り付けと作業しています。 マクロ等は、まったくの初心者ですがどうか宜しくお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
やりたいことが正確に伝わらない。 >まったくの初心者ですがどうか宜しくお願いします 全くの初心者では、丸投げで、回答者にコードを書いてくれということではないか。全くの「初心者がVBAで何か事をやろうとするのは無理だ。少し勉強してから質問するのが順当。 この課題には (1)エクセルのブックを開いたとき、自動で何か処理をさせるのは WorkBook_Openなどのイベントという考えを学ばなければならない。 (2)フォルダは毎月自動で、システムが作るのですね (3)毎日システムでデータが作成されてそのフォルダに入れられてある。形式はCSV。 (4)データをエクセルシートに読み込むスキル。 (そしてシート名は、その日付を含んだシート名にしたい) そのシートはシートの追加をするのかな。名前を好きなようにつけるスキル。 >集計表は、月末にまとめて、月初で更新させたいです 月初に更新とは。集計を出すだけでしょう? この意味は具体的には、良くわからない。当面関数を使ってででも集計したら。VBA初心者であれば。 >CSVデータ開→sheetをコピー→集計表に貼り付けと CSVファイルデータをエクセルシートに持ってくるスキル A。エクセルでファイルー開くで読み込む B.貼り付けて、データー区切り位置を使う C.データー外部データの取り込み D.Csvファイルをプログラムで読んで、エクセルシートのセルに値をセットするスキル A、B、Cの方法はマクロの記録でコードの骨格はわかる。 以上「スキル」とつけたところは、勉強して獲得してもらわないとならないコード群です。 WEBで調べれば、どこかにある、有名課題で飛び切り難しいものではない。 WEBで「エクセル VBA XXX]のXXXの語句を工夫して照会し、勉強すること。 例えば エクセル VBA Workbook_Open エクセル VBA シート挿入 名前 http://officetanaka.net/excel/vba/sheet/sheet03.htm のような。
その他の回答 (2)
- aiai_013
- ベストアンサー率60% (230/382)
こちらからやってきました。 http://oshiete1.goo.ne.jp/qa5399340.html Excel2003 SP3 で作りました。 詳しいことが分かりませんので、ただたくさんのCSVデータを 一つに集めるのに楽をしたくて作っています、難しいことは考えていません。 役に立たなかったり、エラーが出たらあきらめてください。 Sub サンプル() 集計表 = ActiveWorkbook.Name 変数 = 0 While 変数 = 0 ' データ読込 CSVデータ = Application.GetOpenFilename(filefilter:="csv(*.csv),*.csv") Workbooks.Open Filename:=CSVデータ CSVシート = ActiveSheet.Name Sheets(CSVシート).Move Before:=Workbooks(集計表).Sheets(1) 'ループYesNo yesno = MsgBox("もう一枚読み込みますか?", vbYesNo, "続けますか") If yesno = vbYes Then 変数 = 0 Else 変数 = 1 End If Wend End Sub
お礼
回答ありがとうございます。 データ読み込み時のエッセージBox等参考になりました。
- mt2008
- ベストアンサー率52% (885/1701)
マクロを作成するための取っ掛かりが欲しいと言うことでしょうか? 例として、2009年10月のCSVファイルを1つのブックにまとめるマクロを提示します。 これを参考に手を加えて見てください。 Sub Sample() sMonth = "0910" '例として2009年10月のファイルを対象 sFile = Dir("C:\" & sMonth & "\" & sMonth & "*.csv") 'フォルダ「C:\0910」内の「0910*.csv(*はワイルドカード)」と言う名前のCSVファイルを検索 'ファイルが見つからなくなるまでループ Do While sFile <> "" 'CSVファイルを開く Workbooks.Open Filename:="C:\" & sMonth & "\" & sFile '開いたCSVファイルのシートを、自Bookの先頭に移動 ActiveSheet.Move before:=ThisWorkbook.Sheets(1) 'CSVファイルの検索 sFile = Dir() Loop End Sub サンプルですので、同じシート名が存在している場合のエラー処理等は行って居ません。
お礼
ありがとうございます。 サンプルを参考にして、作成してみます。
お礼
助言ありがとうございます。 確かに丸投げしていました・・・ 自分がやりたい事のポイントを明確にし、勉強します。 その上で解らない事は、再度質問させていただきます。