こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

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

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

よろしくお願いいたします。

投稿日時 - 2015-05-18 13:31:21

QNo.8977333

困ってます

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.2

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


上記サイトは枝番だけ追加分のコードで自動保存の本文は下記のようです。
http://outlookvba.blogspot.jp/2011/11/step4.html

投稿日時 - 2015-05-18 19:24:46

ANo.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/

投稿日時 - 2015-05-18 15:31:17

補足

dogs_cats 様

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

投稿日時 - 2015-05-18 16:39:26

あなたにオススメの質問