質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Q&A

解決済

2回答

7462閲覧

起動時にフォームしか開かないエクセルファイルが迷惑をかけてしまう

neet_studier

総合スコア21

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

0グッド

0クリップ

投稿2018/03/24 13:26

よろしくお願いします。

エクセルVBAを駆使して、いくつかのフォームをもつエクセルアプリケーション(と言っていいのかわかりませんが)を作りました。パソコンや表計算にくわしくない人でも間違えずに適切な入力ができ、パッパッと集計結果などが見られるようにと、作ったもので、エクセルのウィンドウやシートは表示させず、フォームしか画面には出てきません。

Private Sub Workbook_Open() に、
F01_menu.show
Application.Visible = False

と書いています。

今困っているるのは、このファイルを起動するより前に、ユーザーがすでにエクセルを起動させて他のエクセルファイルを開いていた場合、そのウィンドウが見られなくなってしまうということです。ウィンドウズのタスクバーにすら表示されなくなります。

「フォームだけを表示させるエクセルアプリ」というのはそれほど珍しくないと思うのですが、みなさん、この問題をどう回避してるのでしょうか?
「既にエクセルが起動してるなら、もうひとつ別のエクセルを起動させて、そこで開く」という判断や命令をVBAで書くなんて可能なんでしょうか?

私が考えたのは、このファイルを引数にしたエクセルソフトそのものへのショートカットを作り、それを通じて起動してもらう、というものなんですが、それでも、どうしてもファイルそのものをダブルクリックして起動してしまう人もいて、「うわっ!エクセルが消えた!!」と驚かれてしまいます。

もう少しなにかいい方法はないでしょうか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

フォームだけを表示させるエクセルアプリ

は作ったことが無いですが、いくつか方法を考えてみました。

方針1:Excelを使わない

処理のExcelへの依存度によりますが一つの方法です。
比較的簡単なのはPublisherなど使用頻度が低く迷惑がかかりにくいOfficeへ移植する、などです。

また、既存のものを移植するのはコストがかかりすぎますが
HTAや.NETを使用するとフォームだけのアプリケーションを作成できます。

方針2:ブックだけを非表示にする

Zuishinさん の回答にもあるようにThisWorkbook.Windowsをすべて非表示にすれば、Excelのウィンドウを残してブックを非表示にすることが出来ます。
この方法ではユーザーが非表示にしたブックを再表示することができます。

同じくブックを非表示にする方法としてアドイン化する(ThisWorkbook.IsAddinをTrueにする)手もあります。
この方法では、通常のユーザー操作ではブックを再表示できません。

方針3:既にエクセルが起動してるなら、もうひとつ別のエクセルを起動させて、そこで開く

近いことは出来なくはないです。
「既にエクセルが起動してる」かどうかの判定は、自分以外のブックが存在するか、でおおよそ代替できます。
「もうひとつ別のエクセルを起動」はCreateObjectなりNew Excel.Applicationなりで可能なので、新規Excelに開かせればよいです。

しかし、以下の問題があります。

  • 同じブックを2重に開くことになるため、後から起動した方(=実際に処理をする方)が読み取り専用になる

投稿2018/03/24 15:50

imihito

総合スコア2166

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

未検証ですが Application ではなくブックを非表示にしたらどうでしょうか?

ブックの表示・非表示

投稿2018/03/24 13:46

Zuishin

総合スコア28660

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

neet_studier

2018/03/24 15:32

ご回答ありがとうございました。 うまく行きました! アプリの方のフォームが開いているうちは、それまで開いていた別ファイルをアクティブにできないようですが、背後に見えてはいるので、驚かせることはないようです。 あたがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問