• 締切済み

EXCEL VBA クエリーテーブルの更新

EXCEL2007 ワークシートのクエリーテーブルの更新で、メールで毎日送られてくる同じ形式のCSVデータで更新したいのですが、ファイル名はいつも違います。ダイアログボックスを開かずに、ファイル名(パスは固定)を指定して更新するマクロは作成可能でしょうか? OUTLOOK で添付ファイルを指定のパスへ保存するマクロはできています。 同じファイル名で保存するのは避けたいと思っています。 外部データ範囲のプロパティの”ファイル名確認のチェック欄”をはずすとファイル名が同一の必要があり出来ないと思います。 ダイアログボックスでファイルをしてするとオペレーターが間違う可能性があるので、 OUTLOOKで保存したファイル名を指定して更新したいのです。 よろしくお願いいたします。

みんなの回答

  • dogs_cats
  • ベストアンサー率38% (278/717)
回答No.2

質問内容を勘違いして回答してしまいました。 outlook添付ファイルの保存時の話だったのでしたね。てっきりエクセルVBAのファイルオープン時だと思っていました。 添付ファイルのファイル名を取得する事は分かるのですから、dirで指定フォルダ内に同名ファイル名が存在するか確認すれば良いのではありませんか?同名ファイル存在時に枝番をつけるVBAは下記を参考にされたら如何でしょう。 http://outlookvba.blogspot.jp/2011/11/step45.html 上記サイトは枝番だけ追加分のコードで自動保存の本文は下記のようです。 http://outlookvba.blogspot.jp/2011/11/step4.html

  • dogs_cats
  • ベストアンサー率38% (278/717)
回答No.1

メールで送付してもらうファイル名に日付を入れるのが最も簡単な方法です。西暦4桁+月2桁+日付2桁 日付さえ入っていればワイルドカードでファイルの呼び出しは可能だと思います。 ファイルのファイルスタンプでファイル更新日を取得して、そのファイル目を取得すれば可能ですが、実際にVBAを作成してみないと上手くいくかが分かりません。 ファイルスタンプのサンプルVBA http://www.asahi-net.or.jp/~ef2o-inue/vba_o/sub05_110_110.html フォルダに1つしかファイルを入れない事にする方法も有りえますが。 下記はoutolookの添付ファイル自動保存のVBAです。保存時にフォルダにあるファイルを削除する。又は前回エクセルVBA実施時にファイルを移動させ、自動保存時には必ず指定フォルダを空の状態にする方法もあるかと思います。 https://outlooklab.wordpress.com/2007/03/10/%E5%8F%97%E4%BF%A1%E3%81%97%E3%81%9F%E3%83%A1%E3%83%BC%E3%83%AB%E3%81%AE%E6%B7%BB%E4%BB%98%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%82%92%E8%87%AA%E5%8B%95%E4%BF%9D%E5%AD%98%E3%81%99%E3%82%8B%E3%83%9E/

jpkpJSC1245
質問者

補足

dogs_cats 様  早速のご回答ありがとうございます。 outlookの添付ファイルの名前を重複させずに保存する方法は、 Outlook 研究所のコードを参考に出来るようになっています。 そのファイルを、ダイアログを表示せずにEXCELのクエリーの更新を自動で行いたいのです。 QueryTable.Connectionにパスとファイル名を指定しても、 ダイアログが表示されてしまいます。 一発で更新する方法は無いでしょうか?

関連するQ&A

  • ACCESS2000 クエリをテーブル化するマクロ(VBA)おしえてください

    こんにちは。 http://oshiete1.goo.ne.jp/kotaeru.php3?q=1801262 の質問者です。コレの続きを教えてください。 まとめますと、クロス集計クエリや、ユニオンクエリをそのまま扱うと、データや計算式がからまってエラーになったり、処理が遅かったりするので、テーブル化してからいじりたいのです。 マクロは データベース変換 変換の種類…インポート データベースの種類…MS ACCESS データベース名…L:\パス\パス\ファイル名.MDB オブジェクトの種類…クエリ オブジェクト名…クエリ名 変換先名…テーブル名 テーブル構造のみ変換…いいえ としてみましたが、クエリとしてインポートされてしまいます。 いちどCSVか何かでエクスポートしてから、テキスト変換するという手もありますが、もっとスマートな方法がありましたら教えてください。 VBA も勉強中なので、VBAでお答えいただいてもけっこうです。 よろしくお願いします。

  • Access csvの取込 ファイルは任意でテーブルは指定したいのですが?

    Access初心者です。2003を使用しています。 csvをマクロの「テキスト変換」で取り込ませています。取り込み時に定義どおりのテーブルを作成してくれるので、追加クエリを使い作業用テーブルに移動させ、処理にはそちらを使う仕組みにしています。 csv → データ用テーブル → 作業用テーブル(実際使うテーブル) csv取り込みには「テキスト変換」マクロでファイル名にパスを設定していますが、この部分を固定パスではなく任意に指定できるようにしたいのです。(取り込みたいcsvが決まったパス、ファイル名で無い場合があります。) 「コマンドの実行:インポート」ですとダイアログが出て任意に取込ファイルが指定できますが、インポートウィザードが起動してしまいます。使用者がウイザードで適切な定義を選びデータ用テーブルを作成してくれればいいのですが、私がツールを作りPCに詳しくない人が使うのでインポートウイザードを避けたいと考えます。 どなたか、マクロ「テキスト変換」でファイル名をダイアログなどで、任意に指定できるような手法をご存じないでしょうか? また、マクロでは無理なようでしたらVBAでしたら可能でしょうか? よろしくお願いします。

  • EXCELのマクロで外部データの取り込み

    CSVファイルを「外部データの取り込み」でシートに読み込むマクロを自動記録で作成したのですが取り込むファイル名が毎回違うのでそのマクロを使うことができません。そこでファイルリストのダイアログからパスとファイル名を指定して実行できる様にしたいのです。良い方法が有りましたらご伝授をお願いします。 ちなみにCSVファイルはネットワークドライブ上にあります。

  • VBAでパスを取得しファイル名を入力するには

    EXCEL2003です。同じフォルダにVBAマクロとデータのcsvファイルがあります。このとき、マクロでパスを取得し、次にcsvファイル名を手入力あるいはそのフォルダの詳細表示からファイルをクリックすればデータを取り込めるようにしたいのですが、どなたかマクロを教えてくれないでしょうか。か。

  • Excel VBAでWebクエリ更新

    VBA初心者です。 Excel VBAで、Webクエリを更新させ、取得したデータを同じBook内の別のSheetに コピーさせたうえで、データのソート等を行いたいと考えています。 上記の操作をマクロで記録し、走らせてみると、Webクエリのデータ更新(取得)が 完了する前に、それ以降の操作に進んでしまいます。 Webクエリのデータ更新(取得)が完了してから、次の操作に進ませるためには、 どのようにすれば良いでしょうか? よろしくお願いします。

  • CSVファイルを任意のディレクトリに作成する方法につきまして

    CSVファイルを任意のディレクトリに作成するマクロを 作成しております。抜粋は下記です。 '(1)ディレクトリを指定するダイアログ表示(初期ファイル名はwOutputFileName) Application.Dialogs(xlDialogSaveAs).Show wOutputFileName '(2)ディレクトリのパスを取得 Current_path = CurDir '(3)wOutputFileNameにパスを代入 wOutputFileName = Current_path & "\" & wOutputFileName その後、(3)のファイルをオープンし、CSVとするデータを登録します。 ところが、(1)での指定で、自分の元ファイル(マクロのエクセルファイル)が名前をwOutputFileNameに変えて保存されるため 「書き込みができません」 というエラーが発生します。 作成したCSVファイルをダイアログにてディレクトリを 指定して保存する方法を教えていただけませんか? よろしくお願いいたします。

  • VBAで取得した値を更新クエリーの値にしたい

    MS-Access2000を使っています。 下記の方法で、ファイルの最終保存日を取得しているのですが、その日時をクエリーを使ってデータベースに登録しようと考えています。 しかし、VBAで取得した値をどうやって、クエリーに反映させてよいか解りません。 すみませんが、方法を教えてください。よろしくお願い致します。 1:フォームに「Filename」というテキストボックスを作り、フルパスでファイル名を入力します。 2:VBAを起動して、内部で FileDateTime関数で日時を取得します。    jikan = FileDateTime(Filename) 3:更新クエリーを使って、この「jikan」の値を「T_main」テーブルの「時間」という項目に登録したいのです。 3番の方法が解りません。よろしくお願い致します。

  • 【Access VBA】クエリ・テーブルのエクスポートについて

    MSOffice2003を使用しています。 マクロにてクエリやテーブルをエクスポートする際、 ------------------------------------------- アクション名:ワークシート変換 変換の種類:エクスポート ワークシートの種類:Microsoft Excel 3 テーブル名:クエリQ(クエリ及びテーブル名) ファイル名:C:\XXXX.XLS ------------------------------------------- としています。 今回、ファイル名(エクスポート先のファイル)に変数を使用したく、 VBAでのコーディングが必要と考えています。 ファイル名は、XXXX_yyyymmdd.XLS(yyyymmddは処理日付)にしたいのです。 この場合、どうコーディングすればよろしいでしょうか?

  • Excel2003のVBAでデータリンクの更新をしない。

    こんにちわ。 私はWindowsXPのExcel2003のVBAでCSVを読み込んでアンケートの結果を集計するマクロと、その結果を別のブックで保存するマクロを作成しました。2つのマクロがあるブックを閉じて、保存されたブックを開くと「このデータソースには他のリンクが設定されています」といったものが表示され、更新するかしないかを問われます。 そこで、このメッセージを表示しないでリンクの更新を行わないようにすることは可能でしょうか?

  • VBAからEXCELの新規ファイルを作成する

    VB6.0 Excel2000を使用しています。 VBAからEXCELファイルを参照する方法は前回教えていただきましたが 新規にEXCELファイルを作成する方法がわからないので教えてください。 【やりたいこと】 ・ファイル名は、ダイアログボックスから入力され、フルパスで変数に  格納されています。 ・シート名は固定文字で指定します。 (↑ここまではできています) (↓ここからわかりません) ・セルの内容を編集したあと、指定のファイル名・シート名で保存したい よろしくお願いします。