• ベストアンサー

エクセルのマクロ

同一フォルダの中に、あるアンケートに対する回答の"Book01"~"BookXXX"のエクセルファイルと、その回答を一覧に並べるための"集計用ファイル"がります。このアンケートの回答ファイルは日々数が追加されて行くので、毎日"集計用ファイル"に回答を得た分を転記し日付の名前でもつけて保存して行きたいのです。エクセルマクロを使用して、この"Book1"~"BookXXX"のA1からZ1に入力されている数値を"集計用ファイル"のA~Zまでに1行目から下へ下へと転記したいと考えています。 ■質問 上記のケースで、フォルダ内の名前の異なるファイルすべてを対象に転記の作業を行う場合、どのようにマクロを作成すれば良いのかご指導頂くか、簡潔に説明しているサイト等ありましたら教えて頂けませんでしょうか。 ■補足 技量不足でフォルダ内にある名前の異なるファイル全てをを対象に転記を行うマクロを組むことができません。(フォルダ内のファイル名が特定できていれば独力でマクロを記録することはできます。) 過去の質問や、書籍も調べたのですが方法がわからなかったので投稿させて頂きました。よろしくお願いいたします。

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

  • ベストアンサー
  • hige_082
  • ベストアンサー率50% (379/747)
回答No.4

Sub test() Dim fil_name As String Dim fil_path As String fil_path = "c:\" fil_name = Dir(fil_path, vbNormal) Do While fil_name <> "" Cells(65536, 1).End(xlUp).Offset(1, 0) = fil_name fil_name = Dir Loop End Sub シートに書き出します

dovedimsum
質問者

お礼

ご回答ありがとうございます。 ただ、下記のメッセージを返してきました。 AUTOEXEC.BAT CONFIG.SYS 教えていただいた内容は、私の環境で手を加えないとそのままは使えないのでしょうか?

その他の回答 (4)

  • hige_082
  • ベストアンサー率50% (379/747)
回答No.5

>教えていただいた内容は、私の環境で手を加えないとそのままは使えないのでしょうか? 質問の何処にフォルダ名が書かれているのでしょうか? 提示されていないものは指定でませんので "C:\"としました、説明が足らず申し訳ありません "C:\"に目的のフォルダ名をドライブ名から指定してください アクティブシートに指定フォルダ内のファイル名が表示されます >フォルダ内のファイル名が特定できていれば独力でマクロを記録することはできます。 との事なので、ファイル名の取得までです 参考にしてください

  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.3

#2です。 検索:ExcelVBA Dir関数 http://www.google.co.jp/search?sourceid=navclient&hl=ja&ie=UTF-8&rlz=1T4GGLG_jaJP310JP310&q=%ef%bc%a5%ef%bd%98%ef%bd%83%ef%bd%85%ef%bd%8c%ef%bc%b6%ef%bc%a2%ef%bc%a1%e3%80%80%ef%bc%a4%ef%bd%89%ef%bd%92%e9%96%a2%e6%95%b0 ご参考まで。 興味がありましたら、FileSystemObjectオブジェクトも調べてみては如何でしょうか。

  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.2

>このアンケートの回答ファイルは日々数が追加されて行くので、毎日"集計用ファイル"に >回答を得た分を転記し日付の名前でもつけて保存して行きたいのです。 日々回答ファイルが増えていくのですか? それとも1ファイルの中に行数が増えるのですか? 集計したファイルは、日付毎に名前を変えてファイリングしていくのですか? どのようなデータをどのように集め、どのように記録するのか作業手順が不明確な感じがします。

  • kmmk16
  • ベストアンサー率46% (32/69)
回答No.1

一例です Bookのシート名は、"Sheet1"にしました Sub test() Dim i As Integer Dim MyPath As String Dim MyName As String Dim k As Variant MyPath = ThisWorkbook.Path MyName = Dir(MyPath & "\" & "*.xls") i = 1 Application.ScreenUpdating = False Do Until MyName = "" If MyName <> ThisWorkbook.Name Then Workbooks.Open MyPath & "\" & MyName Sheets("Sheet1").Select k = Range("A1:Z1").Value ActiveWorkbook.Close Range(Cells(i, 1), Cells(i, 26)).Value = k i = i + 1 End If MyName = Dir() Loop Application.ScreenUpdating = True End Sub

dovedimsum
質問者

お礼

ご回答、ありがとうございます。 教えて頂いた上記の内容を試したのですが、アンケートのファイルに入力されている値ではなく、集計用のファイルの行をコピーしていってしまうようなのですが、私の設定が悪いのでしょうか?

関連するQ&A

  • マクロで複数のエクセルブックにシートを挿入する

    フォルダ<<C:\Documents and Settings\MyPC\デスクトップ\Test>>の中に、あるアンケートに対する回答の"Book01.xls"~"BookXXX.xls"のエクセルファイルがあり、デスクトップ直下にその回答を一覧に並べるための"集計用ファイル.xls"があります。このアンケートの回答ファイルは日々数が追加されて行くので、毎日"集計用ファイル"に回答を得た分を転記し日付の名前でもつけて保存して行きたいのです。エクセルマクロを使用して、この"Book1"~"BookXXX"でシート名"Sum"のA1からA50に入力されている数値を"集計用ファイル"のA列から順に右へ右へと転記したいと考えています。(アンケートのエクセルブックは複数のシートから成っていますが、全ての答えが"Sum"シートのA1からA50に集計されるように作成してあります。) ここで、一つ大きな問題がありまして集計用"Sum"シートを削除している回答用ブックが複数あります。(ロックまでかけていたのに…) ■質問 上記のケースで、"Sum"シートが削除されていた場合に追加するマクロを組みたいのですが、どのようなプロシージャーになるのか分かりません。この復活させたい"Sum"シートの原本は"集計用ファイル.xls"にある状態です。 VBA初心者なのですが、過去の質問を調べたり、べつの投稿で質問しながら下記の所まできましたが、また独力で解決できないので投稿させて頂きました。よろしくお願いいたします。 Sub 転記マクロ() Dim WorkPath As String Dim Target As String Dim MaxColumn As Long Application.ScreenUpdating = False WorkPath = "C:\Documents and Settings\Zawa\デスクトップ\Test" Target = Dir(WorkPath & "\*.xls", vbNormal) MaxRow = 50 Do While Target <> "" Workbooks.Open WorkPath & "\" & Target Workbooks(Target).Sheets("Sum").Range("A1:A50").Copy _ ThisWorkbook.Sheets("Sum").Cells(MaxColumn, 1) MaxColumn = MaxColumn + 1 Workbooks(Target).Close SaveChanges:=False Target = Dir() Loop MsgBox "転記が終了しました。" End Sub

  • エクセル マクロ

    エクセルマクロで、複数ファイルにある全シートの情報を、別ファイルの1シートに転記したいのですが、なかなか上手く行きません。(ほぼ初心者です。) 詳細は↓です。どなたかご教授の程よろしくお願いいたします。 【やりたいこと】 同一フォルダ内にある約60個のファイルの、全てのシート内の情報を別の集計用ファイルに転記する。 (1) ファイル毎にばらばらなシート名&シート数で、これら全てのデータを集計用ファイルに転記するには?(シート数は1ファイルあたり1シートから最大13シート) (2) 以前に似たような作業をした時は、ファイル名をいちいち集計用ファイルにコピペして読み込ませたが、こうした手間を掛けずに一括処理するには? ※転記作業自体は「マクロの記憶」機能で書き出すので、それ以外の、特に始まりと終わりの部分を教えて下さい。 ※転記内容自体はあまり複雑ではなく、集計用ファイルに1シート1行として転記し、ズラッと下に120行書き込むつもりです。 説明が分かりづらい部分があればご指摘ください。よろしくお願いいたします。

  • エクセルに入力されたアンケートの回答をマクロで集計する。

    画像をアップしたので、こちらを見ていただくと分かりやすいと思いますが、同一フォルダの中に、あるアンケートに対する回答のエクセルファイル(全く同じ形式でだが、ブックの名前に規則性はない)があり、別の場所にその回答を一覧に並べるための"集計用ファイル"がります。このアンケートの回答ファイルは日々数が追加されて行くので、毎日"集計用ファイル"に回答を得た分を転記し日付の名前でもつけて保存して行きたいのです。エクセルマクロを使用して、この"Book1"~"BookXXX"の特定の部分に入力された内容を一人一列となるように"集計用ファイル"のB列から右へ右へと転記したいと考えています。 下記、内容を簡単にしたサンプルを作り、VBAを書いてはみたものの、やはり動きませんでした。(セルは例として3つのみ転記しようとしています) 関連する質問もこちらにさせて頂いたのですが、まだ独力で解決できず再度投稿させて頂きました。よろしくお願いいたします。 Sub 転記() Dim WorkPath As String Dim Target As String Dim MaxRow As Long Application.ScreenUpdating = False WorkPath = "C:\Documents and Settings\Zawa\デスクトップ\Test" Target = Dir(WorkPath & "\*.xls", vbNormal) MaxRow = 1 Do While Target <> "" Workbooks.Open WorkPath & "\" & Target Workbooks(Target).Sheets("Sum").Select Range("C7").Select Selection.Copy ThisWorkbook.Sheets("Sheet1").Select Range("B3").Select ActiveSheet.Paste Workbooks(Target).Sheets("Sum").Select Range("C10").Select Application.CutCopyMode = False Selection.Copy ThisWorkbook.Sheets("Sheet1").Select Range("B4").Select ActiveSheet.Paste Workbooks(Target).Sheets("Sum").Select Range("D10").Select Application.CutCopyMode = False Selection.Copy ThisWorkbook.Sheets("Sheet1").Select Range("B5").Select ActiveSheet.Paste Workbooks(Target).Close SaveChanges:=False Target = Dir() Loop MsgBox "転記が終了しました。" End Sub

  • エクセルのマクロについて教えてください

    作業が面倒だし、間違いもよく発生するので、 下の条件のマクロをどなたか教えて頂けませんか? 宜しくお願い致します。 社内のサーバーにエクセルファイル名、AからZまであるとします。 各AからZにそれぞれ同じシート名「集計」があるとします。 そのシート内にデータが色々あるとします。 ある決まったセルだけを削除するのではなく、セルの色だけで判断してデータを削除したいのです。 例えば、赤色のセルになっている部分だけを対象に 入力されている数字を消したいのです(行削除ではなく、単純にデリートです)。 上記をマクロで実行する方法はないでしょうか。 マクロ初心者なので、プログラム言語の下に簡単な説明を頂けると助かります。 どなたか詳しい方がいらっしゃいましたら、宜しくお願い致します。

  • エクセルマクロでご教示ください

    エクセルで作られたデータファイルに対し、ある操作を施して上書き保存するというマクロを作りました。 そのマクロを走らせるとファイル名を聞いてきまして、そこでファイル名を入力してやれば、ある操作を施したあと 自動的に上書き保存までしてくれるのですが、対象ファイルが複数個あると、ひとつ実行したあとまたひとつ ファイル名を入れて、またそれが終ったら次のファイル名を・・・というように、ひとつひとつ実行しなければならない というのが現状です。 これを次のように改良したいのですが、どうすればいいのでしょうか? 1.マクロを立ち上げる。 2.処理する複数のファイルが入っている「フォルダ」を選ぶ。  (一覧表示のウィンドウが出てきて、その中で「フォルダ」を選ぶ) 3.そのフォルダの中に入っているエクセルファイル全てに対し、既に作成済みのマクロを順次実行する。 というものです。 よろしくお願いします。

  • エクセル マクロで別ブックから転記するやり方

    エクセルでBook1(集計用)と、 店舗→Book2(大宮店)、Book3(東京店)・・・・・ 何店舗もあるんですがそれぞれの店舗のA30,B30,C30,D30の数字を Book1(集計用)のA列に並んだ店舗名のB列、C列、D列、E列に転記させたいと考えています。 今までは関数を入れて読み込ませていましたがこれをマクロで作成させる場合どのようにすればよいでしょうか? 何か他にいい案があれば教えていただきたいと思います。 よろしくお願いいたします。

  • エクセルアンケート集計 マクロ

    以下のようなマクロを必要としておりますが、自力で書くことが出来ず、困っております。 どなたかご教示いただけますか。 (Excel2003を使用しています。) 目的:アンケートの集計 状況: AAAという名前のフォルダ(C:\AAA)に、BBB1,BBB2,・・・,BBB30、という名前の30個のファイル(C:\AAA\BBB*)が格納されています。 各BBBのファイルには、4択で1~4の数字を選んで回答するアンケートの回答が、 問1 1 問2 3 という体裁で記入されています。(全部で40問) 問○ というセルはA1から縦に、 問に対する回答の数字は、B1から縦に並んでいます。 やりたい事: BBBとは別のファイルで、30個の回答ファイルから、 問1で1と答えた人は○人、2と答えた人は×人・・・。 問2で1と答えた人は○人、2と答えた人は×人・・・。 という風に、問題毎、選択肢毎の回答数を一挙に集計したいと考えています。 特に分からないポイントとしては、 ・別のファイルを指定してデータを持ってくる方法 ・異なるファイル名を指定する操作をloopさせる方法 の2点です。 マクロは手動で実行するものとし、 データを参照するBBBのファイルは、マクロ起動時も終了時も閉じた状態にしたいと考えています。 ご教示の程、よろしくお願いいたします。

  • 複数のエクセルファイルを1つのエクセルファイルのシートにコピーをマクロ

    複数のエクセルファイルを1つのエクセルファイルのシートにコピーをマクロで行いたい。 マイドキュメントのデーターというフォルダ内に エクセルファイルA(シート名みかん) エクセルファイルB(シート名りんご) エクセルファイルC(シート名バナナ) エクセルファイルD(シート名ぶどう) エクセルファイルE(シート名いちご) があります。 雛形は同じです。すべてA列~F列までデータが入っています。 行数はファイルによって違います。 また毎日自動で上書き更新され、毎日行数が変わります。 エクセルファイルZがあります。シートが7個あります。 ・変換 ・集計 ・みかん ・りんご ・バナナ ・ぶどう ・いちご エクセルファイルZを開きます。(各シートには昨日のデータが貼り付けてあります。) マイドキュメントのデーターフォルダも開いておきます。 エクセルファイルZにおいて「マクロの記録」を起動。 エクセルファイルZの 【みかん】~【いちご】までの5シートを全データDELETEします。 開いてあるフォルダ「データー」の中からエクセルファイルAを開きます。 (タスクバーにいます) ファイルAのシート【みかん】の全データ選択して エクセルファイルZの【みかん】というシートのA1セルにカーソルを あわせて貼り付けします。 開いてあるフォルダ「データー」の中からエクセルファイルBを開きます。 (タスクバーにいます) ファイルBのシート【りんご】の全データ選択して エクセルファイルZの【りんご】というシートのA1セルにカーソルを あわせて貼り付けします。 これと同じ操作を【バナナ】【ぶどう】【いちご】も行います。 エクセルファイルZにおいて「マクロの記録」を終了させます。 マクロができあがりました。 ファイルZを上書き保存して終了。再立ち上げで記録したマクロを実行。 エラーにはなりませんが、ファイルZの5種類各シートに ファイルA~Eのデータが貼りつきません。 何か無理な事をしているのでしょうか? もしかしてシート名が同じだと駄目?とためしにファイルZのシート名【みかん】~【いちご】を 【みかんZ】~【いちごZ】に変更してマクロを再記録しても 駄目でした。 よろしくお願いします。

  • エクセルのマクロ

    素人なのですみませんが教えてください エクセルのマクロを使用して エクセルを起動して ウィンドウズ内のあるフォルダ内のエクセルファイルをコピーをして違うフォルダに貼り付けをしたいのですが、どのようにマクロを組み込むのか教えてください(マクロの式) (例)エクセル起動後エクセルのマクロにて c\Aフォルダ\aファイル←コピー c\Bフォルダ\aファイル←貼り付け

  • Excelマクロでデータ集計

    エクセルマクロの初心者です。昨日はじめてマクロを勉強したばかりなので分からないことばかりなので教えてください。 毎月集計データをエクセルで入手するのですが、月ごとにエクセルファイルが作成されているために過去の集計データを見返す必要があるときには月ごとのエクセルファイルを開いて確認することになるため非常に手間となります。 そこで、毎月入手する集計データを新たにまとめファイルとして、例えばボタン1つでそのまとめファイルにどんどん追記する自動マクロを作成したいと思っています。 一応、今考えている仕様は次の通りです。 【ボタン1】 ある特定のフォルダを指定して、エクセルを開きます。特定フォルダには過去に入手したエクセルファイルをすべて格納しているものとし、最新のエクセルファイルのみを自動で開きたい(機能としてできるか分からないので、今はボタンを押すことによってその特定フォルダにアクセスできるマクロまでは作成しました) Sub ファイルを選択して開く() '←後述の時点の本を引用しています。 With Application.FileDialog(msoFileDialogOpen) .AllowMultiSelect = False .FilterIndex = 2 .InitialFileName = "C:\" If .Show = -1 Then .Execute End With End Sub 【ボタン2】 仮に毎月送付されてくる月ごとのファイルを各月ファイル.xls、過去の集計ファイルを全て載せているファイルを集計ファイル.xlsとします(データは各月ファイル.xls、集計ファイル.xlsともsheet1にのみあるものとします) 各月ファイルには表があり、例えば4月は(B2:H20)、5月は(B2:H30)と月ごとの表内容は異なるものとします。 4月ファイル、5月ファイルを集約ファイル.xlsにボタン2を押すことでどんどん追加できるようなマクロを作成したいと思っています(上書きはしないようにする) なお、(B2:B20)は表タイトルのため、5月以降のデータをボタンを押して自動貼り付けする際にはタイトル行を削除して貼り付けしたいと考えています。 ボタン2の仕様は上記のようになりますが、今私が苦戦しているのは、同じファイルの同じシート上ならボタンで貼り付けられたのですが、別ファイルで作成するとなるとさっぱりわかりません。 因みに昨日初めてマクロを勉強したと言いましたが、初心者向けマクロみたいな本でマクロを約10時間作成しながら形だけでも慣れることをはじめました。またマクロ辞典(分厚い本)を昨日購入して色々機能を調べているのですが、調べ方が悪いのかまだ分からないことがたくさんあるレベルです。 長文になりましたが、ボタン2のマクロの作成方法についてエクセルマクロの得意な方がいましたらご教授頂けたらと思いますので、宜しくお願い致します。

専門家に質問してみよう