プロが教えるわが家の防犯対策術!

一通り検索したのですが、分からなかったので質問させて下さい

VBAでcsvファイルを読み込んで動作させる自動マクロ(ファイル)があります
通常ですと、csvファイルを指定のフォルダーに保存してマクロを実行させると思うのですが
このcsvファイルを先に開いたままで、自動マクロを実行させることは可能ですか?

具体的には、あるシステムからダウンロードしたcsvファイルを開いたまま
自動マクロファイルを読み込んで実行したいのです

対象:Excel2007/2010/2013
OS:WindowsXP/7
csvファイル名:c20130727123456789.csv(日付+任意の数値9桁)
自動マクロファイル:自動マクロ.xlsm

A 回答 (5件)

内容による、としか。



自動マクロファイルは
・CSVファイルを読み込んで
・保存
と思います。

CSVファイルを開いた状態で何をなさりたいの?

「ファイル名を付け替える」とか「保存場所を別にしたい」など
具体的な例を挙げていただくと対応方法が出てきやすいと思います。
    • good
    • 0
この回答へのお礼

お礼が遅くなりすみません
あるシステムからCSVファイルを出力させて、それをExcelで開いたままの状態でマクロを自動実行させるにはどうしたら良いかとの質問でした
通常通り、CSVファイルを保存してからマクロを実行することはできてます
(単にある複数条件でのソート結果を表示するだけです)

他のユーザでCSVファイルを保存しないで手でソートして確認しているだけという方がおり、その人のためにマクロを実行させるにはどうしたら良いか悩んでおりました

他の方もおっしゃっているように、やはり保存してから実行するやり方しかなさそうということで納得しました

お礼日時:2013/07/30 21:09

良くある操作でいえば、ダウンロードしたファイルを特定の名前で保存させて


VBA側で読み込むほうが汎用性で優れていると思います。

次に、考えられるのは、開いたCSVファイルを別途エクセルのシートに張り付けて
そのシートからデータを操作する方法があります。

二つのファイルを開いた状態で、相互にデータをやり取りすることも可能ですが、
その都度、ファイル名が変わったり、エクセルの開いているファイル数や順番が変わったりすると
コードは、急に複雑になっていきます。
せいぜい、2番目の方法までに留めておいた方が無難でしょう。
    • good
    • 0
この回答へのお礼

お礼が遅くなりすみません

1番目の方法で現状私は使っております
他の方がExcelでCSVファイルを開いたまま、
マクロを実行するにはどうしたら良いか悩んでいました

2番目の方法は別マクロで実行したことがあります
(あるフォーマットシートに、CSVファイルを
貼りつけて加工する) 単に複数条件でソートするだけの
マクロなので、やはりCSVファイルは保存してから
マクロファイルを実行してもらうようにお願いしてみます

お礼日時:2013/07/30 21:17

>あるシステムからダウンロードしたcsvファイルを開いたまま



そのCSVファイルは、一体何でどうやって開いているのですか。


CSVをふつーに開くとエクセルで開きますが、それならあとは追加で「自動マクロ.xlsm」を開いてポチッとマクロを実行するだけです。勿論「今エクセル上に開いている(CSV)ファイルを対象に作動する」よう、あなたのマクロを手直してやる必要はあります

またもうちょっと手順を簡略にするなら、自動マクロのマクロをエクセルの「個人用マクロブック」にコピーしておきます。「ダウンロードしたCSVがエクセルで開かれた」状態で、すでに個人用マクロのマクロはいつでもそのまま使えます。こちらのケースでも、同様に「開いているファイルを対象に作動する」よう、現在のマクロの手直しは必要です。

いずれのケースでも、あなたの実際のマクロの手直しは、必要に応じて別途新しいご相談として投稿して解決してください。


「ダウンロードしたCSV」を何が別の方法(たとえばメモ帳)を使って開いているなら、簡易には「ダウンロードしたCSVがエクセルで開かれる」ようにウィンドウズの設定を調整して、前述の手順に移行したほうが簡単です。具体的な設定方法は、あなたの実際の具体的な状況を添えて、別途ウィンドウズのご相談として投稿して解決してください。

この回答への補足

お返事おそくなりすみません

そのCSVファイルをExcelで開いたままで、
自動マクロ.xlsmを実行したいのです

具体的に記述方法が分からないので質問しました

一般的にはNo.1、No.2の方の回答のように、
CSVファイルを一旦保存して、そのファイルを
自動マクロで読み込んで実行してやるのが良い
ようです その方法は検索してもよくあるし、
実際自分はそうして使っております

個人用マクロブックはあまり使いたくありません
あくまでも(自動)マクロ.xlsmファイルで実行させ
CSVファイルを複数条件のソートをしたいのです

補足日時:2013/07/30 21:26
    • good
    • 0
この回答へのお礼

回答ありがとうございます

補足入力に記載しておりますので、
ご覧になっていただければ幸いです

お礼日時:2013/07/30 21:26

>個人用マクロブックはあまり使いたくありません


>あくまでも(自動)マクロ.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を指定して読み込んでます

補足日時:2013/08/01 23:55
    • good
    • 0

人の話聞いてますか??



再掲:
>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を開く
自動マクロを開く
上述のように細工したマクロを実行する
    • good
    • 0
この回答へのお礼

すみません何度もお付き合いさせて
よく分かりました

もっと勉強したいと思います

ありがとうございました

お礼日時:2013/08/02 22:18

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!