• ベストアンサー

アクセスから現在開いているエクセルの値を取得したい

アクセスから現在開いているエクセル(BOOK1.xls)のシート1のA1に入っている値を取得するにはどうすればいいでしょうか? アクセスの参照設定の「Exsel 11.0 object Library」 にチェックを入れ Sub Test() Dim ExcelSheet As Object Set ExcelSheet = CreateObject("Excel.Sheet") ExcelSheet.Application.Visible = True MsgBox ExcelSheet.Application.Cells(1, 1).Value Set ExcelSheet = Nothing End Sub とやってみたのですが 新たなエクセルブックが表示され、空白のセルのA1が取得されてしまいます。 「現在開いているBOOK1のシート1」とするにはどうすればいいのでしょうか? ご教授よろしくお願いします。

  • ijuhyg
  • お礼率99% (460/462)

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

  • ベストアンサー
  • Itarufox
  • ベストアンサー率31% (10/32)
回答No.5

補足です。 前の回答で DOUGLAS_ さんもコード内に書かれていますが、 EXCELファイルをちゃんと閉じないと、EXCELがプロセス上に残ってしまうので、以前のコードに1行加えます。 Sub Test() Dim ExcelApp As Object Set ExcelApp = CreateObject("Excel.Application") ExcelApp.Application.Visible = False ExcelApp.Application.Workbooks.Open "C:\Book1.xls" MsgBox ExcelApp.WorkSheets(1).Cells(1, 1).Value ExcelApp.Application.Workbooks.Close <== 追加です。 Set ExcelApp = Nothing End Sub

ijuhyg
質問者

お礼

ありがとうございます。

その他の回答 (4)

  • Itarufox
  • ベストアンサー率31% (10/32)
回答No.4

>"[ファイル名]"は「BOOK1.xls」を代入すればいいのでしょうか? >"[BOOK1.xls]"も"BOOK1.xls"もエラーになってしまいました。 この場合、フルパスで指定することになります。 例えば、Cドライブ直下にある場合 ExcelApp.Application.Workbooks.Open "C:\Book1.xls" となります。

ijuhyg
質問者

お礼

ありがとうございます。

  • DOUGLAS_
  • ベストアンサー率74% (397/534)
回答No.3

 エクセルが起動していなかったり、「BOOK1」が開かれていなかったり、複数のブックが開かれていたり...と、いろいろとあるかとも存じますが、「ExcelSheet」をウォッチ式に追加し、配下のプロパティを ウォッチウィンドウ で眺めながら、いろいろとお試しください。 Sub Test()  Dim MyBook As String  Dim ExcelSheet As Object  MyBook = "D:\hoge\BOOK1.xls"  On Error Resume Next  Set ExcelSheet = GetObject(, "Excel.Application") 'エクセルが起動していないとき  If Err.Number = 429 Then   On Error GoTo 0   Set ExcelSheet = CreateObject("Excel.Application")   ExcelSheet.Workbooks.Open MyBook   MsgBox ExcelSheet.Worksheets("シート1").Cells(1, 1).Value   ExcelSheet.Workbooks.Close   Set ExcelSheet = Nothing   Exit Sub  Else   MsgBox ExcelSheet.Workbooks("BOOK1.xls").Worksheets("シート1").Cells(1, 1).Value '「BOOK1」が開かれていないとき   If Err.Number = 9 Then    On Error GoTo 0    ExcelSheet.Workbooks.Open MyBook    MsgBox ExcelSheet.Workbooks("BOOK1.xls").Worksheets("シート1").Cells(1, 1).Value    ExcelSheet.Workbooks.Close   End If   Set ExcelSheet = Nothing  End If End Sub

ijuhyg
質問者

お礼

やってみます。ありがとうございます。

  • Itarufox
  • ベストアンサー率31% (10/32)
回答No.2

起動していないExcelファイルを考慮すると、 Sub Test() Dim ExcelApp As Object Set ExcelApp = CreateObject("Excel.Application") ExcelApp.Application.Visible = False ExcelApp.Application.Workbooks.Open "[ファイル名]" MsgBox ExcelApp.WorkSheets(1).Cells(1, 1).Value Set ExcelApp = Nothing End Sub という感じでしょうか。

この投稿のマルチメディアは削除されているためご覧いただけません。
ijuhyg
質問者

お礼

ありがとうございます。 すいません。試してみたのですが "[ファイル名]"は「BOOK1.xls」を代入すればいいのでしょうか? "[BOOK1.xls]"も"BOOK1.xls"もエラーになってしまいました。

  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.1

起動しているExcelが1個だけなら、 Dim xlapp As Object Set xlapp = GetObject(, "Excel.Application") MsgBox xlapp.Worksheets("Sheet1").Cells(1, 1).Value Set xlapp = Nothing とか?

ijuhyg
質問者

お礼

うまくいきました。どうもありがとうございました。

関連するQ&A

  • エクセルから現在起動しているアクセスファイルをアクティブにしたい

    現在エクセルとアクセスを開いています。 エクセルマクロで現在開いているアクセスをアクティブにしたいのですがうまくいきません。 Sub アクセスをアクティブにする() Dim app As Object Set app = CreateObject("Access.Application") app.Application.Visible = True app.Visible = True End Sub これを実行すると新たに空のアクセスアプリケーションが開きます。 (app.Application.Visible = True)を抜いても同じです。 現在起動中のアクセスファイル(○○○.mdb)をエクセルからアクティブにするにはどうすればいいのでしょうか? ご教授よろしくお願いします。

  • アクセスからエクセルファイルを全て閉じたい

    アクセスからエクセルファイルを全て閉じるにはどうすればいいでしょう?(保存して閉じたいです) エクセルファイルは名前やファイル数はランダムです。 アクセスの標準モジュールに Sub Test1() Dim ExcelApp As Object Set ExcelApp = CreateObject("Excel.Application") ExcelApp.Application.Visible = False Set ExcelApp = Nothing End Sub と書きました。 このあいだにコードをいれるのですが 思いつきません。 まず数を取得して 一つ一つ保存→閉じるかな?と思い MsgBox ExcelApp.Worksheet.Count を入れてみましたが エラーになりました。 オフィスのバージョンは2003です。 ご教授よろしくお願い致します。

  • VB.net2003のエクセルからデータを取得したいのですが・・・

    お世話になります。 VB.NET2003でExcel XPのセルの数値を取得しTextBoxなどで表示させたいのですが、うまいこといきません。 下に考えてみたコードを書いてみます。 とりあえずExcelのA1セルの値を取得してみたいのですが、後ほどループで他のセルの値も取得したいと思っています。 これを回すと、num(1, 1) = sheet.cells(1, 1)(下から3行目)で”追加情報 : 型 'Range' から型 'String' へのキャストが有効ではありません。”とされます。 どなたかご教授お願いしますm(__)m Private Sub exel_open() '------配列設定----- Dim app As Object 'エクセルアプリケーションの定義 Dim book As Object 'ブックの定義 Dim sheet As Object 'シートの定義 Dim col, row As Integer 'colは行、rowは列 Dim num(1, 1) As String '各セルの値を取得 '------エクセルファイルを開く&表示------- app = CreateObject("Excel.Application") app.application.visible = True book = app.Workbooks.Open("D:\test.xls") 'エクセルファイルのopen sheet = book.Worksheets(1) '-----エクセルデータの読み込み------ num(1, 1) = sheet.cells(1, 1) TextBox1.Text = num(1, 1) End Sub

  • AccessからExcelのVBAを動かしたい

    2002です。 Excel_A.xlsからExcel_B.xlsのFromAccessプロシージャを実行する場合、 Application.Run "'" & ActiveWorkbook.Path & "\Excel_B.xls'!FromAccess" でいけたのですが、、、 Access_A.mdbから次のようにやると Application.Run "'" & CurrentProject.Path & "\Excel_B.xls'!FromAccess" エラーになります。 それで、次のようにやってみたら動いたのですが、FromAccessが一気に終了して しまい、デバッグできません。 Dim myExcel As Object Set myExcel = CreateObject("Excel.Application") Set myExcel = GetObject(CurrentProject.Path & "\Excel_B.xls", "Excel.Sheet") myExcel.Application.Visible = True myExcel.Application.UserControl = True myExcel.windows(1).Visible = True myExcel.Application.Run "FromAccess" デバッグしながら、AccessからExcelのプロシージャを実行するにはどうしたらいいのでしょうか?

  • ACCESSからexcelを操作

    accessのVBからEXCELのデータ編集を行う際、 最後エクセルを開放しているつもりなのですが、できていないようです。 ※タスクマネージャーにエクセルのタスクが残っており、 該当のファイルを開くと白くなっている。閉じて再度開くと正常動作する。 いくつかの帳票がありますが、 現象が起こるものと起こらないものがあります。 試しに Xls_app.ScreenUpdating = Trueにしてみるとタスクには残っているが 問題なく開けます。 Xls_app.ScreenUpdating = Falseだとタスクにも残るし、ファイルを開くと白くなっているような感じです。 しかし発生原因がわからず、再発するような気もするので根本原因を 突き止めたいです。 Excel起動時 ---------------- Set Xls_app = CreateObject("Excel.Application") Set Xls_book = Xls_app.Workbooks.Open(STR_out_file) Set Xls_sheet = Xls_book.Worksheets(STR_sheet1) Set Xls_sheet2 = Xls_book.Worksheets(STR_sheet2) 'DEBUG Xls_app.Visible = False Xls_app.ScreenUpdating = False Xls_app.UserControl = True ' Xls_app.Visible = True ' Xls_app.ScreenUpdating = True Private Sub Excel終了()----------------------- Xls_book.Close (True) Xls_app.Quit Set Xls_sheet = Nothing Set Xls_sheet2 = Nothing Set Xls_book = Nothing Set Xls_app = Nothing End Sub

  • アクセスからエクセルを開いてデータを取得するには?

    こんにちは。 MS AccessからExcelを開いて、Excel上のデータを取得したいのですが、下記のようにしたらエラーとなりました。CellsがNGみたいなのですが、AccessではCellsは使用出来ないのでしょうか? 宜しくお願いします。 Dim oApp As Object Set oApp = CreateObject("Excel.Application") oApp.Visible = True On Error Resume Next oApp.UserControl = True oApp.Workbooks.Open Filename:="C:\TEST\Book1.xls" GYO = 1 Do KI = Cells(GYO, 1).Value MsgBox KI GYO = GYO + 1 Loop Until Cells(GYO, 1) = ""

  • AccessからExcelが開かない

    Access2000 の●●mdb から Excel2007 のAAA.xls を開こうとしますが オートメーションエラー(サーバーによって例外が返されました) が表示され開きません。 ●●mdb と AAA.xls は同じフォルダーに入れてます。 Accessの「参照設定」では、   Microsoft Excel 12.0 Object Library を選んでます。 ボタン(Cmd1)を押して表示させたいので Private Sub Cmd1_Click() Dim Appexcel As New Excel.Application Dim wb As Excel.Workbook Dim strfile As String strfile = CurrentProject.Path & "\AAA.xls" Set Appexcel = New Excel.Application Set wb = Appexcel.Workbooks.Open(strfile) Appexcel.Visible = True End Sub のように書いてますが、どうもうまく開いてくれません。 どうすれば表示させることができますか。

  • アクセスからアクセスファイルを開くには?

    アクセスからアクセスファイルを開きたいのですがうまく出来ないので教えてください。 Option Compare Database Option Explicit Sub test() Dim App As Access.Application Dim MyFileName As String Set App = CreateObject("Access.Application") MyFileName = CurrentProject.Path & "\アクセスファイル名.mdb" With App .Visible = True End With Set App = Nothing End Sub で、 .Visible = True でアプリケーションは開きますが Set App = Nothing を通過すると開いたアプリケーションが閉じてしまいます。 それにアプリケーションが開くだけで肝心のファイルが開かれません。 なので「.ファイルを開くVBAコード」が必要だと思うのですがそのコードがわかりません。

  • アクセスからアクセスを立ち上げたいのですが

    オフィス2007です。 アクセスからアクセスを立ち上げたいのですが、うまくいきません。 test1.accdbにフォームとコマンドボタンを設置して、 Private Sub コマンド1_Click() Dim acApp As Object Set acApp = CreateObject("Access.Application") acApp.OpenCurrentDatabase C:\test2.accdb" acApp.Visible = True End Sub を実行したのですが、アクセスのアプリケーションが一瞬だけ開いて、閉じてしまいます。 「 acApp.Visible = True」の部分に、ブレークポイントを設定して、ステップインしてみたところ、 acApp.Visible = Trueでアクセスのアプリケーションが立ち上がり、test2.accdbが表示されますが 「End Sub」で閉じてしまいます。 ずっと開き続けるにはどうすればいいでしょうか?

  • アクセスからエクセルファイルが開けない

    Cドライブに、新規 Microsoft Office Excel ワークシート.xlsxと言うファイルを作成しました。 そのうえで、アクセスから ―――――――――――――――――――――――――――――――― Sub できない1() Dim xlsWB As Object Set xlsWB = CreateObject("C:\新規 Microsoft Office Excel ワークシート.xlsx") xlsWB.Application.Run xlsWB.Name Set xlsWB = Nothing End Sub ―――――――――――――――――――――――――――――――― をすると ------------------------ 実行時エラー '1004' マクロ'新規 Microsoft Office Excel ワークシート.xlsxを実行できません。 このブックでマクロが使用できないか、またはすべてのマクロが無効になっている可能性があります。 ------------------------ となります。 なので別の方法で開こうと、 ―――――――――――――――――――――――――――――――― Sub できない2() Dim xlApp As Excel.Application Dim xlBook As Excel.Application Set xlApp = CreateObject("Excel.Application") Set xlBook = xlApp.Workbooks.Open("C:\新規 Microsoft Office Excel ワークシート.xlsx") xlApp.Visible = True Set xlApp = Nothing Set xlBook = Nothing End Sub ―――――――――――――――――――――――――――――――― にしたのですが、 実行時エラー’13’型が一致しません になります。 何がダメなのでしょう? マクロ付きファイルにしないとダメですか? もしくはファイル名に空白があるからエラーになるのでしょうか? そして、なぜ二つのコードのエラー内容がちがうのでしょう? それと、なぜか上記マクロを実行していると ~$新規 Microsoft Office Excel ワークシート.xlsx と言うファイルが出来上がります。(添付画像参照) でもファイルは開いていません。 この状態で、新規 Microsoft Office Excel ワークシート.xlsx をダブルクリックして開こうとすると、一瞬だけ画面に表れてすぐ消えます。 オフィスのバージョンは2007です。 ご回答よろしくお願いします。

専門家に質問してみよう