こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

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

のように書いてますが、どうもうまく開いてくれません。

どうすれば表示させることができますか。

投稿日時 - 2010-04-14 10:54:32

QNo.5825092

困ってます

このQ&Aは役に立ちましたか?

2人が「このQ&Aが役に立った」と投票しています

回答(4)

ANo.4

回答ではなく、情報にすぎませんが、
Access2000->Excel2000なら、下記で問題なく開きました。
>Excel2007 のAAA.xls を開こうとしますが
というところが問題なのかもしれませんが、環境が無いので試せません。ご参考まで。
'Excel9.0 Object Library
Sub test()
Dim Appexcel As New Excel.Application
Dim wb As Excel.Workbook
Dim strfile As String

strfile = CurrentProject.Path & "\Book1.xls"
'Set Appexcel = New Excel.Application 先にNewしているので不要、有ってもエラーにならない
Set wb = Appexcel.Workbooks.Open(strfile)
Appexcel.Visible = True
End Sub

投稿日時 - 2010-04-15 23:59:21

ANo.3

読み取り専用になる場合は他に非表示で
Excelが起動されている可能性がある場合
です。
このコードで読み取り専用になるわけでは
ありません。訂正しておきます。

このような書き方もあるということで
少しコードを変更しておきます。
読み取り専用にはならないと思います。


Private Sub コマンド1_Click()
On Error GoTo Err_コマンド1_Click

Dim oApp As New Excel.Application
Dim wkb As Excel.Workbook

Set oApp = CreateObject("Excel.Application")
Set wkb = oApp.Workbooks.Open(Filename:=CurrentProject.Path & "\AAA.xls", ReadOnly:=False)
oApp.Visible = True
On Error Resume Next
oApp.UserControl = True

Exit_コマンド1_Click:
Exit Sub

Err_コマンド1_Click:
MsgBox Err.Description
Resume Exit_コマンド1_Click
wkb.Close
Set wkb = Nothing
oApp.Close
Set oApp = Nothing
End Sub

投稿日時 - 2010-04-15 04:20:32

ANo.2

どこかのソースを拝借するのもいいですが、
まずは、ウィザードを利用してExcelを
開く方法を取得してください。以下は
Access2000なので他のバージョンでは
違うコードが生成されるかもしれませんが
おおよそ似たようなものです。
その方法は、

(1)
フォームにボタンを取り付ける前に
ツールボックスの右上のボタンをクリック
してONにします。
(2)
フォームにボタンを付けるとウィザードが
表示されます。
(3)
アプリケーションを選択し、Excelの起動を
選択して次にいきます。
(4)
ボタンに表示するピクチャあるいは文字列
を適当に選択します。
(5)
ボタンの名前を設定します。

これで完了です。

保存してコード表を開くと以下のような
コードが生成されています。

Private Sub コマンド1_Click()
On Error GoTo Err_コマンド1_Click

Dim oApp As Object

Set oApp = CreateObject("Excel.Application")
oApp.Visible = True
'Only XL 97 supports UserControl Property
On Error Resume Next
oApp.UserControl = True

Exit_コマンド1_Click:
Exit Sub

Err_コマンド1_Click:
MsgBox Err.Description
Resume Exit_コマンド1_Click

End Sub

このままボタンをクリックすると空の
Excelが起動します。

そこで作っておいたファイルを起動するために
以下のように付け加えます。

Private Sub コマンド1_Click()
On Error GoTo Err_コマンド0_Click

Dim oApp As Object
'追加
Dim wkb As Excel.Workbook

Set oApp = CreateObject("Excel.Application")
'追加
Set wkb = oApp.Workbooks.Open(Filename:=CurrentProject.Path & "\AAA.xls")
oApp.Visible = True
'Only XL 97 supports UserControl Property
On Error Resume Next
oApp.UserControl = True

Exit_コマンド1_Click:
Exit Sub

Err_コマンド1_Click:
MsgBox Err.Description
Resume Exit_コマンド1_Click

End Sub

これは同じフォルダに置いたAAA.xlsを指定して
開きます。
これで開いたファイルは読み取り専用で開かれます。

これからいろいろ応用するのが一番いいのでは。

投稿日時 - 2010-04-15 02:47:15

ANo.1

実験はしておりませんので、違ってたらご容赦を  (^^;

> Dim Appexcel As New Excel.Application
 は Dim Appexcel As Excel.Application

> Set Appexcel = New Excel.Application
 は Set Appexcel = CreateObject("Excel.Application")

ではないでしょうか?

Set文の直後に Msgbox で Appexcel.Name を表示させてみると
そこがうまくいっているかどうかわかりますよ。

投稿日時 - 2010-04-14 17:18:37

あなたにオススメの質問