- ベストアンサー
エクセルマクロでファイルをオープンさせたいのです
- 先日、質問の内容がわかりにくかったというお叱りを受けました。申し訳ありません。ここでは、エクセルマクロを使用してファイルをオープンする方法について説明します。
- KYAKU_A.XLSをオープンさせる方法を紹介します。このファイルには、MAST.XLSをAUTO OPENのみのマクロが含まれています。具体的な手順としては、まず、次のコードを実行します。Workbooks.Open Filename:="C:\Documents and Settings\owner\My Documents\見積書\マクロ.xls"。そして、次のコードを実行します。Application.Run "マクロ.xls!流れ"。
- KYAKU_A.XLS以外の複数のXLSからも、同じMAST.XLSとマクロ.XLSを実行したい場合、MAST.XLSとマクロ.XLSがアクティブにならないようにする方法があります。具体的な方法については、お手数ですが、どなたかに教えていただくことをお勧めします。また、そのためのマクロの記述方法についてもご教示いただきたく思います。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
#2さんとのやり取りを見ても、わかっていてそこまで突っ込んだ プログラムを書いているのか微妙な気がするんですが。 Visibleプロパティの使い方はこんな感じです。私、他人に渡す プログラムでは、シートやらブックやらを隠すのによく使いますよ。 http://officetanaka.net/excel/vba/sheet/sheet06.htm http://xls.seesaa.net/article/122072274.html こんなものでも、「VBA 非表示」で検索すれば出てきます。 ちなみについでにScreenUpDationgはこんな感じです。 http://officetanaka.net/excel/vba/speed/s1.htm このOfficetanakaのサイトはTipsの宝庫なので、全文読みこなす ことをお勧めします。 でもそれ以前に「なぜ隠すことが必要なのか」「隠さない場合で どのような問題が出るのか」を徹底的に考える方が良いんじゃ ないかと思いますよ。 私がよくやる手ですが、起動直後に「何も書いてないまっさらな シート」を表示させ、ScreenUpDatingで無駄な表示を止めるん です。こうすると、VBAがやってることは全て見えなくなりますから 別に「ブックを開かずに処理する」なんて高度なことを考える必要 はなくなります。 ついでに、その画面に「処理中です」とかのメッセージを表示させ たり、「ブックがありません」などのエラーを表示させると、より 実務的になりますし、Rangeでシートにデータを表示/取得させる だけですから、複雑なフォームの処理なども不要になります。 要は「発想次第」ってことで、プログラムなんてのはすべてそうです。
その他の回答 (2)
- WindFaller
- ベストアンサー率57% (465/803)
前回の質問をそのままにしておいて、新たに質問しても、こちらの回答自体は、それほど変わらないですね。 >MAST.XLSをAUTO OPENのみのマクロ MAST は、must(しなければならない) のことだとは想像しますが、そこから、再び、また別のマクロを呼び出すというのは、ロジカルではありませんね。 私は、前回、アドインブックにしたらどうか、と書いたのですが、分からなかったのでしょうか? >MAST.XLSとマクロ.XLSをアクティブにしなければ可能ではないかと思いますが、 アクティブというのは、画面が出ているということでしょうか? そのような問題だけなら、該当するブックのThisWorkbook のプロパティの"IsAddin" を "True"にすればよいだけの話ですが、少なくとも、別のブックから、また別のブックを呼び出して、マクロを起動させるというのは、常識的ではありません。 例えば、使い回しのマクロなら、Personal.xls(個人用マクロ)に、コードを入れて、キーを登録して実行すればよいだけです。そもそも、Auto_Open辺りでは、一回きりしか働きません。もちろん、その都度、新しいファイルを開く度に、起動するマクロもありますが、それは、今のご質問者さんのレベルでは難しいと思いますし、逆に面倒な操作になります。 誰かに教わって勘違いしたのでしょうか?その考え方が、突飛すぎます。 マクロをきちんと書けるなら、1つずつロジカルに考えてみたら、分かるはずです。
- FEX2053
- ベストアンサー率37% (7991/21371)
なんでそういうめんどくさい発想をするかな。 要は「あるブック上のマクロを動作中に、他のブックの内容を 見せたくない」ってだけの話でしょ? だったら 1.使わないブックをVisible=falseで見えなくする。 2.使うデータだけを変数なりコピーなりで取り込んで、見せたく ないブックを閉じてしまう。処理終了後に再度開いて書き込み そのあとまた閉じる。 こういう風にすれば、別に「難しい知識」を探さなくてもいいはず。 プログラムというのは、目的を明確にして手段を探すことが重要 で、手段にこだわると不安定なメンテが難しいものになってしまい ますよ。今回の場合も要は「使ってないブックが触れなければ いい」だけなんでしょ? だとすれば、極端な話ScreenUpDating で処理を見せないだけでもいいかもしれませんし。
補足
何度も、質問して申し訳ありません。 1.使わないブックをVisible=falseで見えなくする。 と、教えられましたが、 実際の記述例を教えていただけないでしょうか?
補足
ご回答をいただきありがとうございます。 下記の内容を行いたいのです。 MAST.XLSとマクロ.XLSをアクティブにしなければ可能ではないかと思いますが、 アクティブというのは、画面が出ているということでしょうか? そのような問題だけなら、該当するブックのThisWorkbook のプロパティの"IsAddin" を "True"にすればよいだけの話ですが、 この教えられた記述の例などを大変申し訳ありませんが、教えていただけないでしょうか?