- ベストアンサー
同じファイルが既に開いていた場合の対処方法
- 既に開いているファイルと同じファイルを開かないようにする方法を教えてください。
- accessを使用してexcelファイルを読み込み専用で開き、指定したシートも開いています。しかし、同じファイルが既に開かれている場合、2つ目のファイルも開いてしまいます。どのようにして2つ目のファイルを開かないようにすることができますか?
- 既に開かれているファイルと同じファイルを開かないようにしたいです。何か対処方法があれば教えてください。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
>何か1文を足して というわけにはいかないかもしれまえんが、 以下のサイトにファイルが既に開いているかの 関数を作成しておられます。 http://www.f3.dion.ne.jp/~element/msaccess/AcResTipsWarehouse1.html#TemplateExcelAuto 関数名はAleadyOpenedです。ほぼこれで対応 できると思いますが。
その他の回答 (2)
- keithin
- ベストアンサー率66% (5278/7941)
不思議ですね? 通常エクセルは今開いているブックを開き直そうとすると,今現在開いているエクセルブックの編集を破棄して開き直したブックを生かすか,それとも開くのを止めるか確認を求めます。 先に開いたエクセルで特に編集を行っていなければ,問答無用で単に開き直して終わってしまい「2つ目が開く」事はありません。readonlyで開いていてもこれは変わりません。 若しくは,今開いているブック(仮にBook1.xls)と同じ名前の別のブック(別の場所にあるBook1.xls)を開こうとすると,単純にエラーを出して開かせてくれません。 しかしご相談で「2つ開いてしまう」という「事実」があるのだとしたら,即ちご相談のマクロの掲示されていないもっと前段で,エクセルアプリケーション(oApp)が「そのマクロを実行するたび,毎回新たなインスタンスとして何個も起動されている」状況が想定されます。 そう考えると対処としては,今のマクロの前段をもっと見直して「最初に1つ起動したExcelアプリケーションを大事に使い廻す」マクロに修正する事が考えられます。 確実に一つのExcelアプリケーションオブジェクトの配下で同じブックを開くようにすれば,最初にご説明したように「2つ開いてしまう」事は起こりません。 それとももしかして,よくよく見てみたら「事実は違いました」といった事でしたら,改めて正しい状況を添えてご相談を投稿し直してみてください。
お礼
読み違いをしていたら申し訳ないのですが、質問の現象は起きないと言う事でしょうか? こちらのOSとVerを書き忘れたゆえの相違かもしれませんが一応下記のコードでボタンとファイルをご用意いただければ再現できると思います OSWIN2000 EXCEL,ACCESS共にVer.2003 Private Sub コマンド15_Click() On Error GoTo Err_コマンド15_Click Dim oApp As Object Set oApp = CreateObject("Excel.Application") oApp.Visible = True On Error Resume Next oApp.UserControl = True oApp.Workbooks.Open FileName:="\\■■■■■■■.xls", ReadOnly:=True oApp.Worksheets("■■■■").Select Exit_コマンド15_Click: Exit Sub Err_コマンド15_Click: MsgBox Err.Description Resume Exit_コマンド15_Click End Sub このコードで実行しますとクリックを踏む度に新しいウインドウで同じファイルを開いていってしまいます
- watabe007
- ベストアンサー率62% (476/760)
参考に fn = "■■■■■■■■■■■■" On Error Resume Next CreateObject("Scripting.FileSystemObject").MoveFile fn, fn If Err Then MsgBox fn & "開いています。" Else MsgBox fn & "開いていない。" End If
お礼
なるほど、ボックスで状態の確認を表示するのですね、 コードの貼る位置が悪いのか最初から開いていますになってしまうのですが 何が足りないのか良く考えて見ます こちらも参考にさせていただきたいと思います ご考慮頂きありがとうございました
お礼
お答え頂きありがとうございました やはり1文でと言うのは無理でしたか・・・どうやら考えが甘かったようだと理解できました もしかしたら楽に済むのではないかと思ったのですが、素直に教えて頂いたAleadyOpenedを学びます ご考慮頂きありがとうございました