• 締切済み

Shell関数でのExcel起動において

Shell関数でExcelを起動させた時に、Excelのブックを閉じた時に一緒にExcelアプリケーションも終了させたいのですが、create object関数なら可能なのですが、環境上Shell関数を使うしかなくて、何か方法はありますか?

みんなの回答

  • rara_sun
  • ベストアンサー率50% (271/539)
回答No.1

(1) フラグファイルを作り、Excelを閉じるとき必ずそのファイルを消すように処理する。   Excelアプリでは、そのフラグが消えるまでループ処理を行う。 (2) WaitForSingleObjectを使用してExcelのプロセスが終了するまでループする。 Shell以外のAPIは、一切使わないという条件なら、(1)の案を前提に工夫することになるのではないでしょうか? 超初心者のわたくしですので、参考にならなかったらご容赦を・・。

guruguru2
質問者

お礼

いえいえ、ありがとうございます。さっそくやってみます。

関連するQ&A

  • エクセルVBAで使うShell関数について

    現在、初心者ながらもエクセルを使って動画や音楽を検索して再生するソフトを作っています。 指定したファイルを、指定したアプリケーションで起動して開きたいと思い、ネットを使って調べたら2つの異なるShellの書き方で動かす方法が見つかりました。 2つのShell関数は同じものなのか教えて下さい。 (1) ret = Shell(Winamp_Path & "winamp.exe /ADD " & """" & Path) と、言う Shell(アプリケーションのフルパス/ADD""ファイルのフルパス) と書いてファイルをアプリケーションで開く方法。 (2) Call Shell(Path & oFile, vbNormalFocus) と、言う Shell(アプリケーションのフルパス, 起動時のウィンドウの状態) と書いてアプリケーションを起動する方法。 この2つは同じ種類のShell関数なのでしょうか。 (1)は、ファイルも一種のアプリケーションとして扱われているんでしょうか。 (2)がShell関数の基本型のようですが、(1)のような書き方が見つかってからは、他にも違う書き方があるかと思うと気になって仕方無いです。 使い方の違いは分かったのですが、調べても(2)の使い方や、別の関数や言語、APIを使ったアプリケーションの書き方しか見つからず、 エクセル2007VBのヘルプを見ても(2)の使い方しか見つからず、 Googleで、「エクセル Shell関数」と調べても、2つの違いが書かれている所が見つからなかったので質問しました。 ※この2つと違う、アプリケーションを起動するShellの記述があるなら、詳しくではなく、参考程度に教えて頂けると、とても嬉しいです。 頭の悪い質問だと思いますが、是非ともアドバイス、宜しくお願いします。

  • ShellでEXCEL2002を起動する場合

    VB6のコーディングで、Shell関数を使用してEXCELを起動しているのですが、EXCEL2002では、他のバージョンと表示方法が変わってしまいました。 コーディングは Shell(PATHつきのEXCEL.EXE, vbMinimizedFocus) としているのですが、 EXCEL2000までは、正常にアイコン化されたEXCELが起動できていたのに、EXCEL2002からは最後に使用した大きさ(最大化した状態でEXCEL2002を終了していたら最大化、アイコン化した状態で終了していたらアイコン化)で起動されてしまいます。 また、EXCEL2000までは表示されなかったロゴマーク?も表示されてしまいます。 ちなみにWORD2002はアイコン化して起動可能でした。 (但し、こちらもロゴマークは表示されます。) 動作として、ひっそりとEXCELを起動してマクロを使用した帳票を出力する。 としたいのですが、なにかいい方法がありましたら教えてください。 (ShellExeCuteもうまく動作しませんでした。)

  • Access Shell関数について質問です。

    Access Shell関数について質問です。 AccessVBA でボタンをクリック時に画像を表示させたいと考えています。 クリック時にデフォルトの画像ソフトを起動させて表示しようと思っています。 たしか、Shell関数を使用すれば使えたと思うのですが、 パラメーターの入れ方を忘れてしまいました。 指定アプリケーションは使用環境によって違う為、出来ればデフォルトで 各環境のデフォルト設定の写真ビューワーを呼び出したいと考えています。 私の記憶が間違っているかもしれないので、Shell関数以外も含めて、 どなたかご存知の方アドバイスよろしくお願いいたします。

  • Access2000vbaで、shell関数で起動させたExcellを終了する方法を教えてください。

    Access2000vbaで、shell関数で起動させたExcellを終了する方法を教えてください。 以下のように、shell関数で、既存のExcelファイルを起動させました。 どうすれば、Excelファイルを終了できますか? 宜しくお願いします。 Dim fl_name As String fl_name = "C:\XE2.xls" Shell "C:\Program Files\Microsoft Office\Office\EXCEL.EXE " & fl_name, vbNormalFocus

  • Excel 同一プロシージャー名で保存後起動しない

    ExcelのVBEの標準シートに 同じ名前のプロシージャーを作成したまま保存して終了してしまいましたが、 このExcelブックを立ち上げてようとしてもExcelアプリケーションは起動しますが、 いつまで経ってもこのExcelブックが起動しません。 プロシージャー名を修正して保存し直せばこの問題は解決すると思われますが、 どのようにすればこのExcelブックを起動することができるでしょうか。 (Windows10,Excel2007)

  • エクセルでSearch()関数が使えない

    エクセルVBAで標準モジュールに関数を作って その関数の中で  Search()を使うと 関数が定義されてない、というエラーになります Search()関数は基本的な関数であるし Search(",",str)  とか引数の記入違いであれば違うエラーが出ると おもうのですが? WindowXPでExcel2003を使っています あるいは参照関係かとおもったのですが、  この知識がないのでどう直していいかわかりません 念の為、ツール→参照設定をみてみると 次の4つがチェックマークが付いているのですが ・Visual Basic for Application ・Microsoft Excel 11.0 Object library ・OLE Application ・Microsoft Office 11.0 object library

  • Shell関数で起動したメディアプレーヤーを終了したい。

    以前このコーナーで質問して教えて頂いたShell関数でメディアプレーヤーを起動できました。(以下にそのコーディングを記載しました) 今度は起動したメディアプレーヤーをVBから終了する方法が知りたいのですが教えて頂けませんか。 Shell ("C:\Program Files\Windows Media Player\wmplayer.exe /1 G:\TEST.wma ,vbMinimizedFocus") 宜しくお願いします。

  • C#でのEXCELの起動方法に関して

    現在、以下のようなC#を用いた環境でEXCELファイルにデータをOUTPUするような記述をして いますが、Visual Studio がインストールされている環境では問題なく出力されるものの、その他 の環境では下記のようなエラーが表示されてしまいます。 《環境》 Windows XP  VisualStudio 2008 C#  EXCEL 2000 参照設定で、Microsoft Excel 9.0 Object Libraryを追加しており、設定自体に問題はないかとは 思います。 但し、自身で色々調べてみたところ、この方法(参照設定の追加)では、EXCEL2000は起動できない ような。。。 《エラー内容》 アプリケーションのコンポーネントで、ハンドルされていない例外が発生しました。 [続行]をクリックすると、アプリケーションはこのエラーを無視し、続行しようとします。 [終了]をクリックすると、アプリケーションは直ちに終了します。 ファイルまたはアセンブリ 'Interop.Excel, Version=1.3.0.0. Culture=neutral,PublicKey Token=null7 またはその依存関係の1つが読み込めませんでした。 指定されたファイルが見つかりません。 というエラーが表示されてしまいます。 原因がわかるようでしたら教えて頂きたいと思います。 よろしくお願いします。

  • Shell関数の終了を調べる方法

    Shell()関数を使ってほかのアプリケーションを起動し、終了を待つというよくある件なのですが、 ちょっと古くて、VB4.0の16ビット版による開発で、 動作環境はWindosXP(32ビット)です。 下記のように記述していますが、Shellの戻り値が&HFFFFを超えるためか、うまくいかないときがあります。 Private Declare Function GetModuleUsage Lib "Kernel" _ (ByVal hModule As Integer) As Integer Private Sub Command1_Click() Dim hInst As Integer hInst = Shell("calc.exe", vbNormalFocus) While GetModuleUsage(hInst) <> 0 DoEvents Wend MsgBox " 終了しました ", vbInformation End Sub ただしWindows98でも動作する必要があるので、32ビットにしてしまうというのはなしです。 どのようにしたらうまくいくのでしょうか? アドバイスください。お願いします。

  • EXCELの起動時のトラブル

    EXCELを立ち上げると、タスクバーに、現在起動しているアプリケーションソフトの一覧に、”Microsoft Excel-Book1"の他に"GDI+ Window"という表示が出ます。そのまま、ブック自体の保存はできるのですが、次回起動時に、 「Excelは前回正常に起動できませんでした」というメッセージが出て、セーフモードでの起動を促してきます。一度セーフモードで起動すると、一旦終了した後に再起動しても正常に起動するのですが、XPをシャットダウンして、Excelを起動すると、同じ現象が再現します。PCの環境は、OSはXPホームエディションのSP2、CPUはPentium4 1.70GHz、メモリは256MBです。この現象の理由、解決法など、ご教示の程、よろしくお願いします。