• ベストアンサー

VBからExcelが起動しません

Excelファイルを開くプログラムをVBで作成したのですが 1つのパソコンだけ実行時エラー5が発生してExcelを起動できません どなたかお助けください プログラムはこんなかんじです WKPATH = "D:\Program Files\Microsoft Office\Office\EXCEL.EXE " & " c:\a.xls" exl = Shell(WKPATH, 1) ちなみにエラーが発生するパソコンはNT4.0sp6です

質問者が選んだベストアンサー

  • ベストアンサー
  • maruru01
  • ベストアンサー率51% (1179/2272)
回答No.1

こんにちは。maruru01です。 おそらくパスに半角スペースが入っているのがまずいのだと思います。 この場合はパスをさらに""(ダブルクォーテーション)で括らないといけません。 WKPATH = """D:\Program Files\Microsoft Office\Office\EXCEL.EXE""" & " " & "c:\a.xls" こんな感じです。 過去の質問と参考URLもどうぞ http://oshiete1.goo.ne.jp/kotaeru.php3?q=95419 http://support.microsoft.com/default.aspx?scid=%2Fisapi%2Fgomscom%2Easp%3Ftarget%3D%2Fjapan%2Fsupport%2Fkb%2Farticles%2Fjp417%2F0%2F89%2Easp&LN=JA では。

toro010915
質問者

お礼

ありがとうございました

toro010915
質問者

補足

早速の回答ありがとうございます maruru01さんのおっしゃるとうりダブルクォーテーションをつけるとエラーは 出ませんでした しかしなんでこのパソコンだけエラーになるのでしょうか? 同じような環境のNTが他にもあるのですがそちらではエラーにならないんです

その他の回答 (3)

  • ittochan
  • ベストアンサー率64% (2667/4137)
回答No.4

>しかしなんでこのパソコンだけ >エラーになるのでしょうか? パスに空白があると、エラーが出る現象として ↓も該当するようですが、どうでしょう。

参考URL:
http://www.microsoft.com/JAPAN/support/kb/articles/J031/0/85.asp
toro010915
質問者

お礼

ありがとうございました

noname#227796
noname#227796
回答No.3

WKPATH = """D:\Program Files\Microsoft Office\Office\EXCEL.EXE"" " & " ""c:\a.xls""" こうすれば大丈夫だと思います。 Shell関数でパスに半角スペースが含まれる場合には、連続したひとつの文字列として認識させるために、二重引用符(")で括る必要があります。 最近のWinOSでは、なくても実行できたりする場合もありますが、半角スペースを含むファイル名を指定する場合は付けるべきです。 常に付けるようにしておけば、半角スペースの有無によらず、実行できますので、付けるのをクセにした方が良いと思いますよ。

toro010915
質問者

お礼

ありがとうございました

  • TTU006
  • ベストアンサー率22% (8/35)
回答No.2

これだけの情報じゃなんともいえないですが、 考えられるのは、 1・パスが違う 2・そのPCは他のPCとエクセル(オフィス)のバージョンが違う(バージョンが違うと、フォルダ名、EXE名も変わります)。 3・エクセルがインストールされてない です。 有力候補は2じゃないかと。

toro010915
質問者

お礼

ありがとうございました

関連するQ&A

  • VBからExcelクローズ検知

    VBで作成したaaa.exeの中でエクセルファイルbbb.xls、ccc.xlsを呼び出しています。 taskIdB = Shell("C:\Program Files\Microsoft Office\Office10\excel.exe C:\bbb.xls", vbHide) taskIdC = Shell("C:\Program Files\Microsoft Office\Office10\excel.exe C:\ccc.xls", vbHide) bbb.xls、ccc.xlsともにWorkbook_Openイベントで自動的にVBAが起動し、処理が終了すると自分自身を クローズするようになっています。 ここで問題になるのが、ccc.xls は bbb.xlsの処理完了を待ってから起動したいのですが、連続的に起動してしまう点です。 aaa.exeのなかで、bbb.xlsの終了を検知するなど、良い解決方法があればお教え下さい。 WindowsはXp pro.、VBは6.0、Excelは2002を使用しています。 よろしくお願いいたします。

  • EXCELをもう一つ立ち上げたい

    マクロを使用して sub 関数1 shell "C:\Program Files\Microsoft Office\Office\EXCEL.EXE", 1 end sub と記述すれば EXCELがもう一つたちあがります。 また、 sub 関数2 Workbooks.Open FileName:="C:\MyDocuments\aa.xls" end sub と記述すればMyDocments配下のaa.xls というファイルがたちあがります。 そこで、ここから本題なのですが、 aa.xlsというEXCELファイルをもう一つのEXCELに立ちげる方法を教えて頂けませんでしょうか? よろしくお願いします。

  • 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

  • VBでExcelが起動されているか知りたい

    環境 winXP Office2000 Excel VB6.0 sp5 VBからExcelが起動されているか知りたいのです。 【状況1】 [a.xls]を起動している状態で下記を実行すると問題なく起動が確認できます。 【状況2】 [a.xls][b.xls]を起動してて[b.xls]が前面にある場合は下記を実行しても[a.xls]を探せません。 またウインドウを最大化にしていない場合も"Microsoft Excel -"という文言がいらない?せいか探せません。 [FindWindowEx]を使用すればできるのかと思いましたがイマイチ使い方が分からず困っています。 よろしくお願いします。 'sampleソース--------------------------------------------- hwnd = FindWindow("XLMAIN", "Microsoft Excel - a.xls") If hwnd = 0 Then Msgbox(" 0 は、Excel が起動していないことを示します。") Else Msgbox(" 起動中") End If 'sampleソース---------------------------------------------

  • エクセルの起動エラー

    エクセルの起動エラー ツールバーの復帰は参考にさせて頂き見事に復帰でき、ありがとうございました。 別の方法を試みておりました( 検索で *.xlb を捜し削除してみてください。) 現在エクセルを起動しますと「C:\Program Files\Microsoft Office\OFFICE11\Library.FUNCRES.XLA」が見つかりません。と確認ボタンが表示され、”OK”で閉じますと通常の新規ファイルが表示できます。 そこで、テキストを作成しC:\Program Files\Microsoft Office\OFFICE11\Library\FUNCRES.XLSとして保存しましたら、今度はシートに「FUNCRES」として起動します。 これをなんとか以前のように新規起動したらSheet1 Sheet2 Sheet3で起動できないでしょうか。

  • ACCESSからEXCEL起動時、パス名は短い名前でないといけないの?

    ACCESS2003からEXCEL2003をVBAで起動するコードを書いてます。 SetApplName = "c:\Program Files\Microsoft Office\office11\excel.exe /r c:\docume~1\alluse~1\docume~1\毎日の数字.xls" Call Shell(SetApplName, 1) のように指定していますが、いちいち短い名前を指定しないと いけないようで、面倒で困っています。 長いパス名を短いパス名に変換するような関数等はありませんか? 他にもっと簡便な方法があればあわせてご教示ください。

  • Shell関数を使って、ファイル名を指定して開くこ

    オフィス2003です。 Sub サンプル1() Dim strExcelPath As String strExcelPath = "C:\Program Files\Microsoft Office\OFFICE11\EXCEL.EXE" Shell strExcelPath, 1 End Sub なら空のエクセルアプリケーションが開けます。 でも、 Sub サンプル2() Dim strExcelPath As String strExcelPath = "D:\ファイル.xls" Shell strExcelPath, 1 End Sub だと、 “プロシージャの呼び出し、または引数が不正です。“ と言うエラーになります。 Shell関数を使って、ファイル名を指定して開くことはできないのでしょうか?

  • VBからEXCELを起動する

    VBよりExcelを起動するプログラムで困っています。 1.VBよりGetObject関数でTest.xlsを開く 2.Test.xls内のAuto_Openマクロでパラメータファイルをよみ、そこに指定されているエクセルファイルを新しいブックでを開く ということをしたいのですが(「マクロを有効にする」のダイアログは表示されてもかまわないです)、何故かTest.xlsが開いたと思ったらすぐ閉じてしまいます(Excel自体は終了してないですべてのワークシートが閉じた状態)。 Auto_Openマクロは走ってるようなのですが、ついでにCloseマクロも走ってしまいます。 ちなみにTest.xlsを単体で動かしたときは問題なく動くのです・・・。 以前はVB4+Excel95の環境でAPI(CreateProcess)を使用し同作業を行っていたのですが、そのAPIが長いファイル名のスペース(OFFICEがある「Program File」のスペース)を認識しないそうで、この方法が使えないということでGetObjectを使用してみたのですが・・・。 何か根本的な間違いをしているのか、それともコードにエラーがあるのかさっぱりわからずお手上げです。 うまく疑問点を説明できているか不安なんですが、わかる方、どうかご指導願います。 よろしくお願いします。 ---------------------------------------- OSは、Windows 2000 アプリケーションは、Excel 2000 です ----------------------------------------

  • バッチファイル エクセル起動

    いつも大変御世話になっております。 WindowsVISTA環境で以下バッチ【ABC.bat】が稼動します。 "ABC.bat"------------------------------------------------- "C:\Program Files\Microsoft Office\Office12\EXCEL.EXE" "F:\EXCEL_OPEN\ABC.xls" echo %ERRORLEVEL% pause "ABC.bat"------------------------------------------------- 上記バッチの構文について3点質問があります。 (1)OS等が変わった場合、EXCEL.EXEの格納パスも変更するので   当然変更しなければいけないのでしょうか? (2)上記バッチを起動する前に他のエクセルを開いていた場合(例えばDEF.xls)、  ABC.xlsとDEF.xlsを両方閉じなければバッチの後続処理が動きません。  ABC.xlsだけ閉じてバッチの後続処理を動かす事は可能なのでしょうか? (3)上記構文でエクセル(マクロ)からエラーレベルを取得できるのでしょうか?  ※上記バッチで開くエクセルは開いたら自動でマクロが動きます。 もしご存知の方がいらっしゃるようでしたら、ご教授願いますでしょうか? 以上、何卒宜しくお願い致します。

  • エクセルのフルパスをvbaで取得

    当方エクセル2003で、 エクセルのフルパスは C:\Program Files\Microsoft Office\OFFICE11\ EXCEL.EXE です。 それをVBAで取得するにはどうすればいいですか? Sub サンプル() Debug.Print 'オフィスがインストールされているフォルダのパスの取得 End Sub のようにして、 C:\Program Files\Microsoft Office\OFFICE11\ EXCEL.EXE を返したいです。 VBAコードをご教示ください。

専門家に質問してみよう