• 締切済み

エクセルVBA:毎月名前が変わるエクセルファイルを毎月異なるフォルダから開く

まず、私はマクロ初心者です。なにぶん複雑でVBAのマニュアルには載っていなかったり、マニュアルにあったとしても、私自身初心者のため応用がきかず、こちらに投稿させていただきました。 目的は在庫データの集計で、集計するためのフォーマット(ファイルA)があり、ファイルAから、とあるシステムから抽出する月度別の在庫データ(ファイルB)を、月度別のフォルダから自由にファイルを指定するVBAを作ることは可能でしょうか。 ただ、そのファイルBが少々曲者で、下記の条件があります。 *<ファイルBの条件>********************* 1.とあるシステムから抽出するデータ(ファイルB)は、自動でエクセルに変換されCドライブに保存さますが、ファイル名が、基本ファイル名、たとえば「物流在庫」の後ろに抽出年月日と時刻が「-200912021354」という風に数字で表記されてしまうため、毎月変わります。 2.Cドライブにいったん保存されたファイルBを、会社の共有パソコンへ移動させるのですが、(部門名)フォルダ→年度別フォルダ→月度別フォルダ→在庫データフォルダと複数のフォルダを経由して、最終的に在庫データフォルダの中へ移動させています。 ******************************** 担当者が変わっても誰でもこの業務ができるようにしたいので、ファイルBの名前を変える(抽出年月日+時刻部分を削除する)という作業は避けたいと思っています。 よろしくお願いいたします。

みんなの回答

  • FEX2053
  • ベストアンサー率37% (7987/21355)
回答No.1

結局「フォルダ名、ファイル名」をどう作るかという問題じゃないかと。 フォルダ名は、「処理する月」がVBA起動時に決まっている筈ですから その変数から持ってくればオッケー。例えばダミーのシートを1枚 作って「=NOW()」で起動日を引っ張り、当月、前月の文字列を作って RANGE()でVBAに持ち込む、なんてのはよくやります。 (VBA内でnow関数を使っても良いんですが、その場合、何らかの理由で  前倒し、後処理があると使えなくなるという問題があります) 問題はファイル名ですが、確かOpenの処理をするとき「DATA*.XLS」と 言う形で読み込めたような気が・・・。これが出来れば「物流在庫200912*.XLS」 で読み込めますよね。

関連するQ&A

  • VBAでEXCELファイルからデータを抽出する方法

    VBAで、サーバーにある大量のデータを含むCSVファイルから、ある条件に一致するデータを抽出する方法を教えてください。 (例)  コード   名称  在庫数  その他データ  A12300  ○○○  999   XXXXXXXX  A12400  ○○○  999   XXXXXXXX  B12500  ○○○  999   XXXXXXXX  B11100  ○○○  999   XXXXXXXX  C11200  ○○○  999   XXXXXXXX 上記データからコードの一桁目が「A」と「C」のものを抽出する場合の、VBAを教えてください。 抽出後、EXCELの別ファイルに上書き保存します。 デイリーで処理をするので、VBAで自動化したいのです。 よろしくお願い致します。

  • エクセルでフォルダ内にある複数ファイルからデータの抽出と集計をしたいのですが・・・

    検索し、似ている質問・回答を拝見させて頂いたのですが、どうも上手くいかなかったので、再度質問させて頂きます。 現在フォルダ(Aと仮定します)の中にエクセルファイル(**.xls形式で名前は個人名となっており、規則性はありません。)が複数入っております。エクセルファイルは同一フォーマットで作成しており、8つのシートに分かれております。その中に「一覧」というシートがあり、   1 2 3 4 5 6 7 ・・・ A  ** ** ** ** ** ** ** B ** ** ** ** ** ** ** C ** ** ** ** ** ** ** D ** ** ** ** ** ** ** E ** ** ** ** ** ** ** ・ ※12…と列、AB…と行で**は数値になっています。 という形式になっています。 ここで同一フォルダA内に集計用のBというファイルをつくり、そこで複数ファイルの「一覧」シート部分だけのデータを抽出し、集計を行いたいのですが、どの様にすれば宜しいでしょうか?? また、Aフォルダにファイルを増やした時に自動的に集計出来るようにすることは可能でしょうか?? 恐らくVBAを使用しなければならないと思うのですが、私の力だけではどうすることもできません。 是非、知恵をお借りしたいと思いますので、何卒宜しくお願い致します。

  • VBAのコードを教えていただけないでしょうか。

    VBAのコードを教えていただけないでしょうか。 概要はリスト形式のデータの複数の条件に合うデータをオートフィルタで抽出して、その結果を別ファイルにする、というものです。用途は建設業のデータ入力です。 リスト形式のシート「記入用」は次のようになっています。 ・B5:Qはデータを記入する領域。(Qの下の行はどれだけになるかわかりませんが、今は500ぐらいまです) ※5行目は見出し行です。 ・C3に仕入れ先の会社を入力 ・E3・F3はそれぞれ年月日を入力して、検索するときに何月何日から何月何日の間、というようにするためのセルです。E3が調べたい年月日の始めの日、F3は調べたい年月日の終わりの日です。 ・「支払い月」の列はB列 上記の調べたい年月日の対象となるデータです。 ・「仕入先」はF列 エクセルは2003を使っていますが、2007でも使用します。 以上の条件ですが、実現したいことは、 (例) ●2010/4/1から2010/7/31までの間で、仕入先が〇〇工務店のデータを抽出 ●その抽出結果に名前をつけて別ファイルで保存。その保存名は検索した年月日(from to)+仕入先名  この例の場合、[20100401~20100731 〇〇工務店]というファイル名 こんな夢のことができるコードを教えていただけないでしょうか。周りにはエクセルができる人はいますが、このようなVBAのコードが書ける人はおらず、なかなか進みません。 どなたかよろしくお願い致します。

  • Excel VBA でサブフォルダ含むファイル名取得

    勉強不足で申し訳ないですが、以下の処理をExcel VBAでやるにはどうしたらいいでしょうか? 仮に「C:\aaa」をルートフォルダとします。そのルートフォルダ下には「2008年」「2009年」など年の名前を付けたフォルダだけがあり、他に余計なファイル等はありません。そして、その「2008年」など年の名前のフォルダに、雑多なファイルが入っています。大雑把に図にすると、次のような感じです。 C:\aaa ├2008年 │ ├a1.pdf │ └a2.pdf │ └2009年   ├b5.pdf   └b6.pdf そして、添付の図のように、A列には「2008年」などサブフォルダ名が、B列には「a1」などファイル名が出力されるようにしたいのです。なお、 (1)B列のファイル名の拡張子は、消えれば最高ですが、別に消えなくてもいいです。 (2)B列のファイル名をクリックするとファイルが開けるハイパーリンクがあると、嬉しいです。別になくてもいいです。

  • Excel VBA

    Excel VBAについて シート1にはデータが入ってます。 G列に日付、L列に商品名、N列に件数。 シート2には集計結果を入力したいです。 セルB2に、日付が10月1日から15日までで、商品名がAの件数の合計。 セルB3は、日付が10月16日から末日まで、セルB4は、日付が11月1日から15日までと半月毎に集計を半年後の末日まで繰返し、B2の数行下には、商品名Bの集計行を作り、その数行下には商品名Cの集計行を作りたいです。 これまでは関数SUMIFSで集計していましたが、複数店舗分のシートの更新・メンテナンスが大変なので、VBAでの集計を考えいろいろ調べてるのですが、方法が思い付かないので、ご教授ください。

  • エクセルのファイルの名前の変更が出来ません

    エクセルで売り上げデータの集計をしています。 「売り上げ集計」というフォルダに2003年度、2004年度、2005年度、売り上げデータ入力、分析表、在庫管理、等のワークシートが入ってます。 在庫管理を仕入れデータと名前を変更しようとすると「拡張子を変更すると、ファイルが使えなくなる可能性があります」と表示されます。 初心者でどうしていいか分かりません。 どうしたらいいか教えてください。 よろしくお願いします。

  • 特定のフォルダー内のエクセルファイルを開くVBA

    たとえば C:\My Documents\データ というフォルダーには20~30のエクセルファイルが入っています ファイルの名前は「えくせる なんばー101」などという名前になっています 「えくせる なんばー」までは共通で「101」の部分はそれぞれランダムな数字が入っています ランダムなファイル名なのでファイルを捜して開くのが大変です インプットボックスなどで 「101」の部分を入力すれば該当ファイルが開くような マクロを作りたいのですが (続きナンバーにして フォルダの整列をすれば捜しやすいのですが ネットワーク上の共有フォルダなので勝手にファイル名を変えることが出来ないのです) VBA初心者なのでよろしくお願いします

  • EXCEL VBA 複数ファイルの値を1つのファイ

    おせわになります。yakkunnと申します。 当方EXCEL VBAは素人なのですが、下記の処理を実現したく、恐れ入りますが、どなたかVBAコードをご教授いただけないでしょうか? ■やりたいこと デスクトップに集計.xlsxというファイルを作り、このファイルに「集計」というボタンを作成します。H4セルに4月とか入力させて(出来ればプルダウンで選択)、「集計ボタン」をクリックしたら以下の集計処理が動くVBAコードをご教授いただきたく思います。 ■実現したい処理 Cドライブ配下に[実績]というフォルダがあります。このフォルダにはA.xlsx~Z.xlsxという複数のファイルが存在します。(フォーマットは全て同じ) このファイルを1つずつ開き、B4セルに記入されている「月」が集計.xlsxのH3セルで指定された「月」と同じであれば、B7列より「コード」を読み込んでそれに対応したE列の金額も読み込みます。このコードを集計.xlsxのH7セルに転記、金額をK7列に転記、これをA.xlsxのB列のコードが存在するまで読み込んで、集計.xlsxのHセル、K列にどんどん転機したいのです。 この処理を[実績]フォルダの中の全ファイルに対して実施したいです。 最後に集計.xlsxのK列の最後に金額合計が出ると最高です。 分かりづらい説明で申し訳ございませんが、何卒よろしくお願いいたします。 イメージ図を添付いたします。 明日には動かさないといけなくなり困っております。。何とぞよろしくお願いいたします。 環境 windows10 Excel2019

  • エクセル:バックアップファイルの保存先に毎月、フォルダを自動で作りたいのです

    エクセル、VBA初心者です。よろしくお願いします。 以前に、ネットワーク先の自動保存の保存先を次のようにこちらでご指導いただきました。 ('保存先パス名  NetPath = "\\○○\□□\△△\  BkName = ThisWorkbook.Sheets("sheet1").Range("A1").Text & _ Format(Now(), "yyyymmddhhmm") & ".xls") で、おかげさまでネットワークの任意の保存先にエクセル「sheet1」の「A1」に入れた文字+年月日時間を加えたファイル名で、うまくバックアップとれています。 ◆今回は、その保存先フォルダ\△△の中にさらに自動でフォルダをつくるVBAを書きたいのです。 ◆例えば「\\○○\□□\△△\2006年4月」   といった具合に2006年4月1日になったら、自動で「2006年4月」という名のフォルダをつくり、その中に4月の間はエクセルファイルを自動で保存したいのです。 ◆そして、5月1日になればフォルダ「△△」の中に「2006年5月」というフォルダが自動的にできる。 上記のようなイメージです。 自身では、そのようなVBAが、可能か不可能なのかすら全くわかりません。初心者といえど勉強不足で皆様に頼ってばかりですが、どうかご指導ください。 以上、よろしくお願いします。

  • EXCEL VBAについて

    VBAでCSVファイルをテンプレートのBBOKに読込むコードを 作り、CSVファイルから読込んだBOOK1データを集計する BOOK2を作成しています。 BOOK1・11/21・・・11/21・・・11/22・・・11/23と続きます      A     B     C      D 1  ID     店名   売上    日付 2 1104567   渋谷店  190,809   11/21 3 1102031   新宿店  209,808   11/21 4 1103450   横浜店  108,765   11/21 BOOK2・集計      A    B    C       D       E 1  ID   店名   11/21    11/22     11/23 2 1104567  渋谷店  190,809   203,487 3 1102031  新宿店  209,808   340,876 4 1103450  横浜店  108,765   547,627 ※BOOK1とBOOK2のIDの並び順は一致していません。 上記のBOOK1のデータをBOOK2に読込ませたいと考えています。 VLOOKUPやINDEX関数を使用しようかと考えたのですが、日付毎に ファイル名が違うのと、集計のファイルには外部参照をさせたくないと 考えています。 VBAで作成したいコードはBOOK1からBOOK2の日付のセルにIDを検索条件として日付毎のファイルを読込ませたいです。 フォームで日付を入力し、コピーするBOOK2のセルを指定後、BOOK1を選択するためにダイアログボックスを出したいです。 BOOK2のIDを検索条件としてBOOK1から一致する売上セルを抽出するコードだけでもわかれば何とか作成できそうなのですが、 ご教授いただけませんでしょうか?