- 締切済み
VBA csvファイルを開いたまま自動マクロ動作
一通り検索したのですが、分からなかったので質問させて下さい VBAでcsvファイルを読み込んで動作させる自動マクロ(ファイル)があります 通常ですと、csvファイルを指定のフォルダーに保存してマクロを実行させると思うのですが このcsvファイルを先に開いたままで、自動マクロを実行させることは可能ですか? 具体的には、あるシステムからダウンロードしたcsvファイルを開いたまま 自動マクロファイルを読み込んで実行したいのです 対象:Excel2007/2010/2013 OS:WindowsXP/7 csvファイル名:c20130727123456789.csv(日付+任意の数値9桁) 自動マクロファイル:自動マクロ.xlsm
- みんなの回答 (5)
- 専門家の回答
みんなの回答
- keithin
- ベストアンサー率66% (5278/7941)
人の話聞いてますか?? 再掲: >CSVをふつーに開くとエクセルで開きますが、それならあとは追加で「自動マクロ.xlsm」を開いてポチッとマクロを実行するだけです。 >勿論「今エクセル上に開いている(CSV)ファイルを対象に作動する」よう、あなたのマクロを手直してやる必要はあります 2度も書き込みじゃありません。「同じ話を3度もさせられてる」んです。あなただったらどうですか?自分の説明を聞いても無い人に「その話はさっきもしたけど、またご説明繰り返しましょうかね」ってにっこり笑って延々付き合いますか。 準備: 自動マクロ.xlsmに例えば次のように作成しておく sub macro1() dim w as workbook for each w in workbooks if w.name like "*.csv" then msgbox "FOUND " & w.name & vblf & "continue your task" exit sub end if next msgbox "NOT FOUND CSV" & vblf & "continue open CSV file" end sub 手順: CSVを開く 自動マクロを開く 上述のように細工したマクロを実行する
- keithin
- ベストアンサー率66% (5278/7941)
>個人用マクロブックはあまり使いたくありません >あくまでも(自動)マクロ.xlsmファイルで実行させ…たい それなら既に、真っ先に回答済みの通りです。 再掲: >あとは追加で「自動マクロ.xlsm」を開いてポチッとマクロを実行するだけです マクロ.xlsmを「開かない限り」、当然ながらマクロ.xlsmに登録したマクロを実行する事は絶対にできません。 マクロを登録したブックを「マクロを実行したいその時に既に開いておく」ために 1)個人用マクロブックを利用する 2)アドインにして登録しておく といった段取りを利用します。 マクロ.xlsmも個人用マクロブックも「開いておきたくない」し「開くこともしたくない」で、それでもどーしてもマクロを実行したいなら、 1.マクロ.xlsmを一回開き、マクロをクイックアクセスツールバーに載せておく 2.マクロ.xlsmは閉じておく 3.CSVを開いた状態でクイックアクセスツールバーのマクロボタンをクリックする といった手順で、実現する事もできます。
補足
2度も書き込みありがとうございます 自動マクロ.xlsmはファイルとして読み込むのはOKです ただ、順番に (1)対象CSVファイルを開く (2)自動マクロ.xlsmを読み込んで、実行する のがやりたい事です 通常私も (a)対象マクロファイルを一旦保存する (b)マクロファイル.xlsmを実行し、csvファイルを読み込む (c)CSVファイルを編集する という使い方をしています (a)をやらずに、(1)を実行した状態で、自動マクロ.xlsmを 実行するにはどうすれば良いかが知りたいのです 開いたcsvファイルを変数F等で指定して読み込むには dir関数等でやるにはどうしたら良いですか? ThisworkbookかActiveworkbookでしょうか? マクロファイルをActiveにする方法は分かります 保存ファイルを読み込む設定も分かります Getopenfilenameでcsvを指定して読み込んでます
- keithin
- ベストアンサー率66% (5278/7941)
>あるシステムからダウンロードしたcsvファイルを開いたまま そのCSVファイルは、一体何でどうやって開いているのですか。 CSVをふつーに開くとエクセルで開きますが、それならあとは追加で「自動マクロ.xlsm」を開いてポチッとマクロを実行するだけです。勿論「今エクセル上に開いている(CSV)ファイルを対象に作動する」よう、あなたのマクロを手直してやる必要はあります またもうちょっと手順を簡略にするなら、自動マクロのマクロをエクセルの「個人用マクロブック」にコピーしておきます。「ダウンロードしたCSVがエクセルで開かれた」状態で、すでに個人用マクロのマクロはいつでもそのまま使えます。こちらのケースでも、同様に「開いているファイルを対象に作動する」よう、現在のマクロの手直しは必要です。 いずれのケースでも、あなたの実際のマクロの手直しは、必要に応じて別途新しいご相談として投稿して解決してください。 「ダウンロードしたCSV」を何が別の方法(たとえばメモ帳)を使って開いているなら、簡易には「ダウンロードしたCSVがエクセルで開かれる」ようにウィンドウズの設定を調整して、前述の手順に移行したほうが簡単です。具体的な設定方法は、あなたの実際の具体的な状況を添えて、別途ウィンドウズのご相談として投稿して解決してください。
お礼
回答ありがとうございます 補足入力に記載しておりますので、 ご覧になっていただければ幸いです
補足
お返事おそくなりすみません そのCSVファイルをExcelで開いたままで、 自動マクロ.xlsmを実行したいのです 具体的に記述方法が分からないので質問しました 一般的にはNo.1、No.2の方の回答のように、 CSVファイルを一旦保存して、そのファイルを 自動マクロで読み込んで実行してやるのが良い ようです その方法は検索してもよくあるし、 実際自分はそうして使っております 個人用マクロブックはあまり使いたくありません あくまでも(自動)マクロ.xlsmファイルで実行させ CSVファイルを複数条件のソートをしたいのです
- hallo-2007
- ベストアンサー率41% (888/2115)
良くある操作でいえば、ダウンロードしたファイルを特定の名前で保存させて VBA側で読み込むほうが汎用性で優れていると思います。 次に、考えられるのは、開いたCSVファイルを別途エクセルのシートに張り付けて そのシートからデータを操作する方法があります。 二つのファイルを開いた状態で、相互にデータをやり取りすることも可能ですが、 その都度、ファイル名が変わったり、エクセルの開いているファイル数や順番が変わったりすると コードは、急に複雑になっていきます。 せいぜい、2番目の方法までに留めておいた方が無難でしょう。
お礼
お礼が遅くなりすみません 1番目の方法で現状私は使っております 他の方がExcelでCSVファイルを開いたまま、 マクロを実行するにはどうしたら良いか悩んでいました 2番目の方法は別マクロで実行したことがあります (あるフォーマットシートに、CSVファイルを 貼りつけて加工する) 単に複数条件でソートするだけの マクロなので、やはりCSVファイルは保存してから マクロファイルを実行してもらうようにお願いしてみます
- bin-chan
- ベストアンサー率33% (1403/4213)
内容による、としか。 自動マクロファイルは ・CSVファイルを読み込んで ・保存 と思います。 CSVファイルを開いた状態で何をなさりたいの? 「ファイル名を付け替える」とか「保存場所を別にしたい」など 具体的な例を挙げていただくと対応方法が出てきやすいと思います。
お礼
お礼が遅くなりすみません あるシステムからCSVファイルを出力させて、それをExcelで開いたままの状態でマクロを自動実行させるにはどうしたら良いかとの質問でした 通常通り、CSVファイルを保存してからマクロを実行することはできてます (単にある複数条件でのソート結果を表示するだけです) 他のユーザでCSVファイルを保存しないで手でソートして確認しているだけという方がおり、その人のためにマクロを実行させるにはどうしたら良いか悩んでおりました 他の方もおっしゃっているように、やはり保存してから実行するやり方しかなさそうということで納得しました
お礼
すみません何度もお付き合いさせて よく分かりました もっと勉強したいと思います ありがとうございました