• ベストアンサー

VB2005で起動中のExcelを取得したい

VB2005で目的のファイルが起動中か判断し、起動中の 場合、そのファイルを変数に代入し、未起動の場合は 起動して変数に代入したいのですがどのような手法を とればいいでしょうか? 新規に開く場合は次のようにしています。 Dim oBook As Excel.Workbook = oBooks.Open(pFilePath)

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

  • ベストアンサー
  • process9
  • ベストアンサー率29% (81/272)
回答No.2

ファイルが起動中(実際にEXCEL画面でファイルを開いている)場合、 プログラム中でのファイルオープンとは別プロセスで動いてます (ネットワーク越しに他の人がファイルを編集しているときと同じ状態) ので書き込み可能な状態でのオブジェクト取得(変数へのセット) は不可能です。 なので、一旦起動中のEXCELを半強制終了させて、再度開けば上手くいくのでは ないかな。(やったことないんで、できるかどうかは不明。) ただ、これが成功した場合、画面上でエクセルがいきなり閉じてしまうので 使っている人は、驚くんじゃないでしょうか。(落ちたと思うかも。) また、編集が少しでもされていたら(シートタブクリックだけでも) 保存を求められるはずです。 現実的には、読み取り専用で開いた場合は、 ユーザにお知らせ(閉じてくださいなど)という形を とった上で再実行できるように作るというのが、 定石ではないでしょうか。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (1)

  • process9
  • ベストアンサー率29% (81/272)
回答No.1

>VB2005で目的のファイルが起動中か判断し ファイルをオープン(起動?)していてもいなくても ファイルオープン後にオブジェクト変数にセットするだけ いいのではないですか? なぜ判断する必要があるのでしょうか。

urourojp
質問者

補足

起動しているとあらたに 「読み取り専用」で開いてしまうんですね。 なので、どうしたらいいものかと・・・

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 環境はVB2008です。開いているエクセルファイルの認識!

    環境はVB2008です。開いているエクセルファイルの認識! すいません。詳しいかた宜しくお願い致します。 【現象】 ファイルが既に開いている場合、読み取り専用で開いてしまうと保存できないため、 開いているファイルの検索をかけようと試みたが、 新しいエクセルを起動した中のWorkBook内を検索してしまうのか 開いているワークブックを検知してくれない。 Dim xlApp As New Excel.Application Dim xlwb As Excel.Workbook Dim xlws As Excel.Worksheet Dim URL3 As String URL3 = "C:\MailDB.xls" Dim allwb As Excel.workbook For Each allwb In xlApp.Workbooks If allwb.Path = URL3 Then MsgBox(URL3 & "のファイルを閉じてください。", MsgBoxStyle.Exclamation, "警告") Exit Sub End If Next xlwb = xlApp.workbooks.open(URL3) xlws = xlwb.worksheets(1) With xlws .Cells(1, 3) = "テスト" End With xlwb.Save() xlwb.close() xlApp.quit()

  • VB6にてエクセルのセルに貼り付けで・・・

    お願いします。VB6にてエクセルの任意のセルへデータを貼り付けたいのですが、そのエクセルにauto_openが含まれていてフォームを開くようになっています。 Option Explicit Dim objExcelApp As Workbook ---------------------------- strExcelFile = "C:\A.xls" strExcelSheet = "Sheet1" objExcelApp.ActiveSheet.Cells(1, 1).Value = "A" ではフォームが開いて更新ができません。エクセルを開かずに値をセルへ代入できないものでしょうか? どうかお願いします。

  • Excelのセルの値を取得

    VB2005Expressにて開発しています。 Excelのセルの値を取得するにはどうしたらいいのでしょうか。 下記でExcelは起動出来るのですが、値の取得ができません。 また、Rangeで範囲を指定して一括取得して、1データずつ配列化した 変数にセットすることは可能なのでしょうか。 Dim xlApp As New Excel.Application Dim xlBooks As Excel.Workbooks = xlApp.Workbooks Dim xlFilePath As String = "C:\excel_test.xls" Dim xlBook As Excel.Workbook = xlBooks.Open(xlFilePath) Dim xlSheets As Excel.Sheets = xlBook.Worksheets Dim xlSheet As Excel.Worksheet = xlSheets.Item(1) xlApp.Visible = True どなたかご存知の方がいらっしゃいましたら教えて下さい。 よろしくお願いします。

  • VBからEXCELの起動方法

    はじめまして、さっそく質問ですが、 VBからエクセルを起動(ブックを開いている)しているのですが、以下の場合、マクロの登録の確認画面が開いてしまいます。マクロの確認画面を開かずエクセルを開く方法を教えて下さい。 Dim xlBook As Excel.Workbook Set xlBook = GetObject(strPathName) xlBook.Application.Visible = True xlBook.Windows(1).Visible = True

  • VB2008 エクセル出力

    VB2008 エクセル出力 教えていただけると助かります VB6.0使用時にエクセル出力をするために下記のようなプログラムで出力していました ※「Microsoft Excel 9.0 Object Library」を参照 Dim xlApp As EXCEL.Application Dim xlBook As EXCEL.Workbook Dim xlsheet As EXCEL.Worksheet Dim File As String File = App.Path + "\EXCEL\" + "フォーム.xls" Set xlApp = CreateObject("Excel.Application") Set xlBook = xlApp.Workbooks.Open(File) Set xlsheet = xlBook.Worksheets("テスト") xlsheet.Range("A1") = "テスト" 'フォルダ作成 If Dir("D:\", vbDirectory) = "" Then Call Mkdirs("D:\テスト") 'Worksheetを名前をつけて保存します。 xlApp.DisplayAlerts = False xlsheet.SaveAs "D:\テスト\テスト.xls" xlApp.Quit Set xlApp = Nothing Set xlBook = Nothing Set xlsheet = Nothing VB2008の場合だとどのように書けば同じように動きますか ※色々試してみましたがダメでした 「Microsoft Excel 12.0 Object Library」を参照しています

  • 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")

  • VB6でEXCELをクローズ出来ない

    VB6でEXCELを使用した後クローズ処理をしたつもりですが、VBと別にEXCELを起動しVBで使ったEXCELを読み込もうとすると、「編集のためロックされています」とメッセージが出て、読み取り専用でしかオープン出来ません。また、VBでEXCELを繰り返しオープンするとメモリがいっぱいになってしまいます。 VBでのEXCELオープンは Dim fnm As String Dim exl As Object fnm = "EXCEL File名" 'フルパスで指定 Set exl = CreateObject("Excel.Application") exl.Application.Workbooks.Open FileName:=fnm クローズは Set exl = CreateObject("Excel.Application") exl.Application.Quit Set Sheet = Nothing Set BooK = Nothing Set ExcelApp = Nothing 以上です。なお、VBの参考書は入門書だけ持っていますが、このようなことは書いてありません。従って上のコードも意味もわからず、ネットから拾ってきたまま使用しています。参考書または、Webサイトを紹介して頂ければ有り難いです。

  • VB6からエクセル操作

    VB6でエクセルを開き、ある処理をして、 名前を付けて保存ダイアログを出して保存したいのですが、 名前を付けて保存ダイアログを出すところがうまくいきません。 Dim app As Excel.Application Dim book As Excel.Workbook Dim sheet As Excel.Workshee Set app = CreateObject("Excel.Application") app.Visible = True Set book = app.Workbooks.Open("c:\test.csv") 'ファイルを開く Set sheet = book.Worksheets(1) sheet.Columns("B:D").Delete Shift:=xlToLeft sheet.Columns("C:D").Delete Shift:=xlToLeft sheet.Rows("1:7").Delete Shift:=xlUp ここで、名前を付けて保存ダイアログを出して、ファイルを保存したい。

  • vb.netからエクセルファイルを開きたいのですが

    vb.netからエクセルファイルを開きたいのですが、 オフィス2010をインストールしてから動作しなくなりました。 ------------------------------------------------------------------------ Imports Microsoft.Office.Interop Sub ExcelOpen() Dim ExcApp As Excel.Application Dim book As Excel.Workbook Dim MyPath As String MyPath = "C:\Excel.xlsm" ExcApp = CreateObject("Excel.Application") ExcApp.Visible = True book = ExcApp.Workbooks.Open(MyPath) ExcApp = Nothing End Sub ------------------------------------------------------------------------ これで2007の時は起動してたのですが、2010だとダメです。 Microsoft Excel 14.0 Object Libraryに参照設定しています。 実行すると、 ExcApp.Visible = True の部分で サーバーによって例外が返されました。 (HRESULT からの例外: 0x80010105 (RPC_E_SERVERFAULT)) となります。 どうすればいいでしょうか?ご教授よろしくお願いします。

  • VB2005でエクセルファイル作成時のエラー

    現在、VB2005ExpressEditionを使って、データグリッドビューに表示されている値を、エクセル出力するアプリを作成しています。 デバッグでは問題がなかったので、ビルドをし、出来上がった実行ファイルをデスクトップなどに移動させ、そこからアプリを起動したところ、エクセル出力のところでプログラムが異常終了してしまいました。 Releaseフォルダから直接実行ファイルを動かした場合は、正常に動作しました。 そこで、try~catchを使ってエラー箇所を判別しようとしたところ、処理開始以前の宣言のところで、エラーが発生しているようなんです。 以下がその宣言部です。 Dim app As New Excel.Application Dim wb As Excel.Workbook Dim ws As Excel.Worksheet VBでのエクセルファイル出力はこれが初めてで、VB自体も独学で勉強しているため、かなり的外れな質問になってしまっているかもしれませんが、どうしてもわからないので、どうか教えて下さい。 長文、乱文で失礼いたしました。