オブジェクト変数の取得方法とは?

このQ&Aのポイント
  • ExcelファイルをAPIのShellExecute関数で起動後、エクセルのセルのデータを取得するためには、オブジェクト変数を使用します。
  • オブジェクト変数を取得する方法として、GetObject関数またはCreateObject関数を使用します。
  • 既に起動しているエクセルを取得するためには、オブジェクト変数にエクセルのプロセスIDを指定して取得する方法があります。
回答を見る
  • ベストアンサー

オブジェクト変数の取得

コモンダイアログを使用して、選択したExcelファイルをAPIの ShellExecute関数で起動を行っているんですが、エクセルファイルを 開いた後に、エクセルのセルのデータを取得したいのです。 オブジェクト変数でエクセルを取得したいのですが、なかなか上手くいきません。 今までは普通に以下のような処理でオブジェクト変数を取得していたのですが set オブジェクト変数 = GetObject("パス") または set オブジェクト変数 = CreateObject("パス") これだど、またエクセルを起動させてしまうので、、 既に起動してしまっているものを取得するのはどうすれば よいのでしょうか? ご教示ねがえませんでしょうか? よろしくお願いいたします。

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

  • ベストアンサー
  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.1

Set オブジェクト変数 = GetObject("パス") でいいですよ。 コモンダイアログって、あくまでもファイルを選んでもらうだけのものなので、ファイルのフルパスさえわかったら、どんな方法でファイルを開いてもかまいません。

関連するQ&A

  • VBAでExcelのOLE Objectの取得方法

    過去のプログラムを確認していたところ、以下のモジュールがありました。 EXCELファイルを開き、この後省略していますが、書式設定だの、罫線だのを 変えるコーディングが続きます。 ここで質問ですが、Set OEXCEL…のところで「CreateObject」と「GetObject」を 使い分けていますがこれはどういう意味でしょうか? ご教授お願いします。 Dim OEXCEL As Object Dim stXls As String stAcXObj=0 ・・・INIファイルで値を持ちます。 If stAcXObj = "0" Then '参照作成 Set OEXCEL = CreateObject("Excel.Application") Else '参照取得 Set OXLS = GetObject("C:\aaa.xls") Set OEXCEL = OXLS.Application End If OEXCEL.workbooks.Open ("C:\aaa.xls")

  • ShellExecuteでエクセルファイルが起動しません。

     今、API関数GetOpenFileNameで「ファイルを開く」コモンダイアログを出して、  そこから選んだファイルのフルパスをテキストボックスに入れています。  さらにそのテキストボックスの中に入ったフルパスをAPI関数ShellExecuteで起動  させようとしているのですが、起動してくれません。  ちゃんとフルパスは入っています。  試しに新しいフォームを作ってShellExecute単独で、直接フルパスを  指定してやってみたところ起動できました。  問題は、パスではなく他の引数でしょうか??  ちなみに第1引数   : me.hwnd      第2引数   : "open"      第3引数   : フルパス      第4・5引数 : vbNullString      第6引数   : SW_SHOW と指定しました。  第4と5の引数はvbNullCharや""と指定してみました。  よろしくお願いします。

  • オブジェクト変数の取得について

    以下のようにOpenTextでファイルを開いてそれをオブジェクト変数に取得したいのですが 「Functionまたは変数が必要です」というエラーになります。 どなたかご教示ねがえませんでしょうか? よろしくお願いいたします。 Set WorkBookObject =Workbooks.OpenText FileName:=strPath & strTxt, _ StartRow:=1, DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, _ ConsecutiveDelimiter:=False, Tab:=False, Semicolon:=False, _ Comma:=True, Space:=False, Other:=False, FieldInfo:=aryCell

  • Excel 埋め込みオブジェクトのファイル名取得

    Excelファイルに挿入>オブジェクト>ファイルから ・・・ で選択し、埋め込んだオブジェクトのファイル名をVBAで 取得する事はできますか? 実際には上記のように手動ではなく、 Application.Dialogs(xlDialogInsertObject).Show , " ", , True でダイアログを表示し、ファイルを選択させています。 埋め込んだファイルがフォルダ階層が深かったりすると、 ファイル名まで表示されないので、ファイル名を取得して、 別のセルに入力するまでをVBAで処理をしたいと考えています。 既に埋め込まれているオブジェクトの名前を取得する、もしくは ダイアログで選択されたファイルの名前を取得する、ということが できるのであれば教えていただけますでしょうか?

  • コモンダイアログからExcelへ

    コモンダイアログから既存のExcelファイルを表示させたいのですが、わかりません。 コモンダイアログの「開く」を押すとフルパスが取得されるというのは理解できたのですが、実際にプログラムをどう書いていいのかわかりません。 ファイルのパスを使うとはどういうことでしょうか? またshell関数をどう使えばいいのでしょうか? 基本的な質問で申し訳ありませんが、よろしくお願いします。

  • Excelの終了について

    こんにちは。昨日もお世話になったguruguru2です。 早速質問なのですが、VBから新規Excelを起動したあとで、フォルダから既存のExcelファイルをダブルクリックで起動します。そのあとで、VBからExcelを終了する時、VBで起動したExcelのみを終了させたいのに、2つとも終了してしまいます。又、フォルダから起動するのではなく、スタートメニューからExcelを起動して、「ファイルを開く」で既存のファイルを開き、VBからExcelを終了するとVBで起動させたExcelのみ終了させることが出来ました。 どうしたら、前者の方法でVBで起動したExcelのみを終了させることが出来るのでしょうか。ソースも書きます。 Private Sub Excel起動() Dim objXls As Object On Error Resume Next Set objXls = GetObject(, "Excel.Application") If Err.Number <> 0 Then Set objXls = CreateObject("Excel.Application") objXls.DefaultFilePath = mstrPath(最初に設定したパスです。) objXls.DisplayAlerts = False objXls.Workbooks.Add objXls.Visible = True End If AppActivate (objXls.Caption) Set objXls = Nothing Err.Clear End Sub Private Sub Excel終了() Dim objXls As Object On Error Resume Next Set objXls = GetObject(, "Excel.Application) If Err.Number = 0 Then     objXls.Quit End If Set objXls = Nothing End Sub わかりづらい説明ですみません。お願いします。

  • Excelオブジェクトの解放

    VBでExcelを編集しています。 下記コードを実行するとExcelがタスクに残ったままになります。 どうしたら解放されるでしょうか。 (処理は少し省略しています) Dim objExcel as Object Dim objExcelBook as Object Dim objExcelSheet as Object Set objExcel = CreateObject("excel.application") Set objExcelBook = objExcel.Workbooks.Open(パス, 0) Set objExcelSheet = objExcelBook .Sheets(シート名) With objExcelSheet.Range(Cells(1,2),Cells(3,2)).Borders(xlEgeBottom) .LineStyle = xlContinuous End With Set objExcelSheet = Nothing Set objExcelBook = Nothing Set objExcel = Nothing

  • VBAで既に開いている別アプリケーションのオブジェクトを得る

     VBAで別のアプリケーションにアクセスするには、CreateObject関数を使ってアプリケーションのオブジェクトを作るようにすると思います。例えば、ワード文書にアクセスするなら次の構文になると思います。   Set appWord = CreateObject("Word.Application")   appWord.Visible = True  しかしこれだと新しいワード文書を作ったり、既存のワードファイルを開いて扱うことしかできません。GetObject関数を用いても同様のようです。既に別ウィンドウで開いているワード文書があって、そこへアクセスするにはどうしたらよいのでしょうか。  また、同じアプリで複数のファイルを開いている場合には、どうやって目的のファイルへのオブジェクトを得るのでしょうか。(ファイル名などを参照して判断?)

  • FileDialog オブジェクトでファイル名のみを取得

    FileDialog オブジェクトで返すオブジェクトを参照すると どうしてもファイルパスを取得する変数しか取得できません。 FileDialog オブジェクトで選択したファイルのファイル名のみを取得するにはどうしたらよいでしょうか。 ExcelVBAです。よろしくお願いします。

  • VBSからのエクセル操作での初期ダイアログへの対応

    VBSからのエクセル操作での初期ダイアログへの対応 VBSでのエクセルの初期ダイアログへの対応について教えてください。 ここでいう「初期ダイアログ」とは以下のことを指しています。 (A)読み取り推奨設定時にでるダイアログ  「…を変更し、保存する必要がなければ、読み取り専用で…」 (B)マクロを含むファイルを開くときに出るセキュリティ警告ダイアログ  「マクロにはウイルスが含まれている場合があります。…」 (C)読み取り・書き込みパスワード設定時のパスワード入力ダイアログ ソースとしては、下記に示す簡易な内容です。 このとき、ファイルに何も属性がなければファイルを開いていることを 意識させずにエクセルの内容を取得することが出来ます。 しかし、読み取り推奨にされているときや、マクロが含まれるときには、 ダイアログが表示されてしまい、スマートに値を取得することが出来ません。 これを何か引数を与えるなどして、ダイアログを表示させないもしくは 一瞬ダイアログが表示されても、スクリプトに閉じさせるように したいと思っています。 もし方法があるならそれを教えてください。 「方法がない」ということが分かっている場合は、 その旨を教えていただきたいです。 よろしくお願いします。 ■α Set excel = WScript.GetObject(filePath) MsgBox excel.Sheets(sheetName).Cells(2, 2) ■β Set excel = WScript.CreateObject("Excel.Application") excel.Workbooks.Open filePath, , true excel.Visible = false Set sheet = excel.Sheets(sheetName) MsgBox sheet.Cells(2, 2).value excel.Workbooks.Close excel.Quit