VB2005でエクセルを待機する際のエラーについて

このQ&Aのポイント
  • VB2005で開発中のエクセル処理で待機する際、既に開かれているエクセルの場合にエラーが発生する問題があります。
  • エクセルを起動し、処理が完了するまで待機しているが、エラーが発生し、「このオブジェクトに関連付けされているプロセスはありません」というエラーメッセージが表示されます。
  • 既に開かれているエクセルを閉じることなく、VB2005から新たにエクセルを開きたい場合にもエラーが発生します。
回答を見る
  • ベストアンサー

VB2005 起動したエクセルの待機でエラーになります

VB2005で開発中です。 エクセルを起動し、エクセルの処理が終わるまで待機をさせているのですが、既にエクセルのBOOKが開いていると、待機の状態のところでエラーになります。 具体的には Dim Proc As New Process Proc.Startinfo.Filename = "C:\EXCELSHEET.XLS" Proc.Start() Proc.WaitForExit() ←ここでエラー エラー内容は「このオブジェクトに関連付けされているプロセスはありません」です。 vb2005の起動の前に、エクセルを起動させていなければエラーは出ませんが、何か既にエクセルの表を開いているとエラーになります。 既に開いているエクセルの表は、vb2005から閉じたりする作業はしたくありません。開いているままでvb2005で新たに表を開きたいです。 よろしくお願いします。

  • JJ-TO
  • お礼率95% (19/20)

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

  • ベストアンサー
  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.1

新規にExcelインスタンスを作成しないと上手くいかないようです Process.StartupInfoのFileNameプロパティにExcelのEXEファイルを与えて開きたいブックをArgumentsプロパティに与えてみましょう 環境変数設定 Pathに Excel.exeのインストールされたパスが設定されていれば FileNameには "excel.exe"でいいいのですが インストールパスが無い場合 フルパスで指定する必要があります   proc.StartInfo.FileName = "excel.exe"   proc.StartInfo.Arguments = "C:\ExcelSheet.xls"   proc.Start()   proc.WaitForExit() といった具合です

JJ-TO
質問者

お礼

出来ました!本当にありがとうございました。

関連するQ&A

  • VB2008を使用していますが教えて下さい。

    VB2008を使用していますが教えて下さい。 VBからExcelブックを開く時に「マクロを有効にする」を選択する画面を表示させずに直接ユーザフォームを表示させて、ExcelVBAを利用したいのですが、どうしても上手く出来ません。いろいろネットで調べて試行しているのですが、どれもエラーになってしまいます。 現在下記の(1)(2)をExcelVBAの内容により使い分けをしています。助言方よろしくお願いします。 (1) この記述では「マクロを有効にする」は表示されず直接ユーザフォームが表示されます。ただ、VBA上で新たなExcel形式のファイルを出力させても画面上に表示されません。 ※Visible=True の記述で解消しそうですが分かりません。 Dim xlApp As Object = CreateObject("Excel.Application") Dim xlBooks As Object = xlApp.workbooks Dim xlBook As Object = xlBooks.Open(FileName:="c:test.xls") xlApp = Nothing xlBooks = Nothing xlBook = Nothing (2) この記述では「マクロを有効にする」を選択する画面が表示されてしまいます。ただ、ExcelVBA上で新たなExcel形式のファイルを出力できます。 Dim proc As New Process() proc.StartInfo.FileName = "c:test.xls" proc.Start() proc = Nothing

  • VBからエクセルを起動。そのあとエクセルを終了

    教えてください。 VBからエクセルを起動します。 そのあと、エクセルのシートの上にデータを貼り付けます。そして、エクセルを終了します。 しかし、エクセルが終了しません。 タスクバー上のエクセルをクリックすると終了します。 どうして、このような現象が起こるのかわかりません。 教えてください。 下記に同様のサンプルを書きました 誤記入があるかも知れませんが このような感じのプログラムです。 以上、よろしくお願いします。 public sub test Dim XApp as Excel.Application Dim nfilename as string Dim xlBook As Object Dim xlSheet As Object ' エクセルを起動 Set xlApp = New Excel.Application nfilename ="AAAA.xls" ' 指定されたファイルを開く Call xlApp.Workbooks.Open(nfilename) Set xlBook = xlApp.ActiveWorkbook Set xlSheet = xlBook.Worksheets(1) 'フォームを貼り付ける xlSheet.Range("a1").PasteSpecial      'ファイル名の作成 Filename="BBBB.xls" '保存 ChDir "C:\" xlBook.SaveAs Filename:=Filename,FileFormat:=xlNormal, _ Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, _ CreateBackup:=False Set xlSheet = Nothing xlBook.Close True Set xlBook = Nothing xlApp.Quit Set xlApp = Nothing End sub

  • コマンドプロンプトを表示せずにプロセスの起動

    VB.NETでソースファイルをJ2sk142(javac.exe)に渡してコンパイルの結果をコマンドプロンプトではなくVBのTextBoxに表示するプログラムを作成しています。 でも、プロセスを起動すると一瞬だけプロンプトが表示されます。 これを表示させない方法はありますでしょうか? With Process1 .StartInfo.FileName=JAVACPATH .StartInfo.Arguments=TextBox.Text .StartInfo.WorkingDirectory=ProPath .StartInfo.UseShellExecute = False .StartInfo.ErrorDialog = True .EnableRaisingEvents = True .StartInfo.RedirectStandardOutput = True .StartInfo.RedirectStandardError = True .StartInfo.WindowStyle = ProcessWindowStyle.Hidden End With Try Process1.Start() OutPutTextBox.Text &= Process1.StandardOutput.ReadToEnd OutPutTextBox.Text &= Process1.StandardError.ReadToEnd Process1.WaitForExit() Catch ex As Exception

  • PDFファイルを印刷し終了するには

    VB 2005で開発しています PDFファイルを印刷し印刷が終わったらAcrobatを終了させたいのですが、 方法が分かりません。 Dim proc As New Process proc.StartInfo.FileName = "z:\book1.pdf" proc.StartInfo.Verb = "Print" proc.StartInfo.CreateNoWindow = True proc.Start() この後、印刷が完了した後Acrobatのみ残ってしまいます。 印刷が終了した時点でAcrobatを終わらせる方法はないでしょうか。 ご教示お願いします。

  • VBでVBAを起動

    こんにちは、VB初心者です。 VB6.0を使用しています。 VBからエクセルのVBAを起動させたいと思っています。 過去ログを参考にして下のようにして実行してみたのですが、 「実行時エラー'1004':マクロ'Keisan'が見つかりません。」 と、エラーが出てしまいVBAを起動することができません。 (ExcelVBAの関数(?)名はKeisan()です。) どうすればエラーを出さずに VBからVBAを起動させることができるのでしょうか? 何か参照し忘れていたり Callの以前に何かを宣言をしておかなければいけないのでしょうか? ******** Dim Wbook As Excel.Workbook Dim Exap As Excel.Application Set Wbook = GetObject("C:\テスト.xls") Set Exap = Wbook.Application     Call Exap.Run("Keisan")

  • 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ソース---------------------------------------------

  • VBから.NETへの移行でエラー

    VBから.NETへ移行した際にエラーが出てしまいます。 ご教示ください。 Dim obj as object With obj   .Filename = 'aaa.xls'   .Start.File()   .Page.Begin("シート名","1")   .Cell("**作成日",0,0).Value = NOW() End With とあった場合にWithの中身がすべて「遅延バインディング」とエラーになります。 解決策をご教示ください。 よろしくお願いします。

  • VB.net(2005)でエクセルの特定名称のシートを操作したい。

      お世話になります。 WindowsXP + SP3、VB.net(2005)の環境にて開発をしております。 VB.netから既存のエクセルファイル(雛形)を開き、特定の名称のシートを アクティブにしたいのですがどのようにコーディングすれば良いでしょうか? ※色々とネットで情報検索してみましたが特定の名前のシートを操作する  方法をうまく見つけられず質問致しました。 エクセルファイル名:売上情報_2009年.xls シート名     :"200901" ~ "200912" の12シート 以前、VB6で同様のことを行ったときは以下のような記述で実現できました。 Dim xlApp As Object Dim xlsheet As Object xlApp = CreateObject("Excel.Application") xlApp.Workbooks.Open(FileName:="C:\売上情報_2009年.xls") xlsheet = xlApp.Sheets("200908") xlsheet.Activate() 現状、vb.netで以下のコーディングまではできております。 Dim xlApp As New Excel.Application Dim xlBooks As Excel.Workbooks = xlApp.Workbooks Dim xlBook As Excel.Workbook = xlBooks.Open("C:\売上情報_200904.xls") Dim xlSheets As Excel.Sheets = xlBook.Worksheets よろしくお願い致します。  

  • BV2005でエクセルのシートを指定して表示するにはどうしたらよいのでしょう。

    BV2005を使い勉強を始めた初心者です。BVでエクセルのデータを読み取り処理をすることを考えているのですが、早々につまづいて進みません。書店に行ってあちこち調べたりしているのですが、難しい状況です。BVの概念がまだまだ身についていないのを実感しています。 BVAで多少のことができたので、BV2005でも・・・あまい!! の一言です。  どなたかBV2005に詳しい方、御教授していただけませんでしょうか。  エクセルで指定してシートを表示する方法・・・。 Dim as New Process proc.StartInfo.FileName="・・・" proc.Start() でbookまではいいのですが・・・?sheet2やsheet3に行くには?? すみません!あまりにも、アホのようです。 教えてgooの過去履歴のものも7000~最近の8500?位までみたのですが visual stadil6.0とは少し違うみたいで、貼り付けても波線がでました。 どなたか、宜しくお願いいたします。

  • VBでエクセルをOPEN

    こんばんわ。VB初心者です。 VBのフォームにあるボタンを押すと、VBで作成したexeファイルのディレクトリを調べて、そこにエクセルファイル(****.xls)があるかチェックして、なかったらエクセルを起動しそのエクセルファイルをOPENしたいのですが、うまくオブジェクトがとれてなかったり、ディレクトリがちゃんと調べれてなかったりで、うまく動きません。 それから、エクセルを操作した最後にエクセルファイルをcloseしてエクセルアプリを終了させたいのですが、、それもうまく動きません。 どなたか、詳しいかたお手数ですがレスよろしくお願いいたします。

専門家に質問してみよう