質問: nothing exit_exopeneditc: exit sub err_exopeneditc: msgbox err.number & " - " & err.description resume exit_exopeneditc end sub accessからexcelファイルをシートを指定して開き、重複の場合は開かない様にし、メッセージボックスを表示させたいのです・・・
回答: 以下のサイトにexcelが開いていたり 使用中の場合に対処する関数を作られて います。関数名はaleadyopenedです。 http://www.f3.dion.ne.jp/~element/msaccess/acrestipswarehouse1.html#templateexcelauto この関数を標準モジュールに貼り付け、 提示のコードを以下のように訂正して ください。 一応、excelのファイル名をmydd.xlsに しています。必要に応じて変更してください。 このコードはaccess2000のウィザードを利用 してそのコードを作り直しています。他の バージョンでは生成されるコードが違う ところもあります。とくに、 oapp.usercontrol = true の部分は違うかもしれません。違えば 変更しておいてください。以下コードです。 private sub コマンド0_click() on error goto err_コマンド0_click dim oapp as new excel.application dim wkb as excel.workbook dim strfilename as string strfilename = currentproject.path & "\mydd.xls" 'ここでファイルが開かれているか、存在するかチェックする select case aleadyopened(strfilename) case vbyes msgbox "'" & strfilename & "' は使用中です。", vbcritical exit sub case vbcancel msgbox "'" & strfilename & "' が見つかりません。", vbcritical exit sub end select set oapp = createobject("excel.application") set wkb = oapp.workbooks.open(filename:=currentproject.path & "\mydd.xls", readonly:=false) oapp.visible = true on error resume next oapp.usercontrol = true exit_コマンド0_click: exit sub err_コマンド0_click: msgbox err.description resume exit_コマンド0_click wkb.close set wkb = nothing oapp.close set oapp = nothing end sub あとは、応用です。