- ベストアンサー
エクセルVBAでサーバー上のブックを開けない場合の対処方法
Wendy02の回答
こんにちは。 排他的オープンなら、以下のようにすれば、チェック出来ると思うのです。 >Dir関数で該当エクセルファイルを指定しても、直ちにコントロールが戻ります。 まあ、VBAでは、それをコントロールとは言わないけれども、意味は分かります。 ------------------------------------------------- Sub BookEnableChecker() Dim MyPath As String Dim myFno As Integer Const Fname As String = "TestBook1.xls" MyPath = "\\サーバー名 \○○\" If Dir(MyPath & Fname) <> "" Then myFno = FreeFile On Error Resume Next Open MyPath & Fname For Binary Lock Read Write As #myFno Close #myFno End If If Err.Number = 70 Then MsgBox "ブックは開いています", 16 ElseIf Err.Number = 0 Then MsgBox "ブックは編集できます。", 64 Else MsgBox "ブックを調べてください", 32 End If On Error GoTo 0 End Sub
関連するQ&A
- サーバー上のブックを開けない時(エクセルVBA)
ネットワーク障害などでサーバー上のエクセルブックが開けない時、かなり待たされてから次のメッセージが出ます。 実行時エラー'1004' 'Open'メソッドは失敗しました。'Workbooks'オブジェクト しかもその間、Ctrl-Breakも受け付けてくれません。 正確に待ち時間は計ったわけではありませんが、10分くらいでしょうか。 なんとかこれを回避して、早い時間にエラーメッセージを出してコントロールを戻すことはできないでしょうか? 以下のVBAでオープンしています。 Workbooks.Open Filename:=myFileName, Readonly:=True よろしくお願い申し上げます。
- ベストアンサー
- オフィス系ソフト
- vba 読み取り専用で他のファイルを開くには
エクセルvbaで他のエクセルファイルを読み取り専用で開きたいのですが 「読み取り専用で!」とするにはどうすればいいですか? 今のままだとエラーになります。 ------------------------- Sub a() Set App = CreateObject("Excel.Application") Set xlBook = App.Workbooks.Open(MyFileName) With App .Visible = True .ReadOnly '実行時エラー438 End With Set App = Nothing End Sub
- ベストアンサー
- Excel(エクセル)
- EXCEL2010のVBAについて教えて下さい。
1つのBOOKから、 フォルダの中に入っているいろんなファイルを開くVBAです。 2002、2003では上手くいくのですが、2010で同じように記述したところ、 EXCEL以外のファイルが開きません。 どうかご教授よろしくお願いします。 With CreateObject("Scripting.FileSystemObject") FileType = .getfile(Myfilename).Type End With If Right(Myfilename, 4) = ".xls" Or Right(Myfilename, 5) = ".xlsx" Then Workbooks.Open Myfilename ElseIf Right(Myfilename, 4) = ".doc" Or Right(Myfilename, 5) = ".docx" Then Set objwd = CreateObject("Word.Application") objwd.Documents.Open Myfilename ElseIf Right(Myfilename, 4) = ".ppt" Or Right(Myfilename, 5) = ".pptx" Then Set PttApp = CreateObject("Powerpoint.Application") PttApp.Presentations.Open (Myfilename), ReadOnly:=msoFalse Else MsgBox "ファイル不正:" & FileType Exit Sub End If
- ベストアンサー
- オフィス系ソフト
- Excel VBA の ChangeFileAccess
Excel(2000 SP-3) VBAの ChangeFileAccessがうまく行きません。 VBAからあるExcelファイルをWorkbooks.Open で開く処理の制御で悩んでいます。 2人で同時にマクロでhoge.xls をOpenすると、どちらも「他のユーザが使用中です」的なメッセージが出ませんでした。 (エクスプローラからクリックしたりして、hoge.xlsを直接開くと、他のユーザが使用中かどうかがわかります) それでは困るので、ChangeFileAccess のNotify:=true をセットしてみたら、2人目は他のユーザが使用中である旨のメッセージが出るようになりました。 しかし、ChangeFileAccess のNotifyはちゃんと設定されているようなのですが、 'ChangeFileAccess'メソッドは失敗しました:'_Workbook'オブジェクト とエラーが出ています。 ChangeFileAccessはどう使うのが正しいのでしょうか? ソースは Workbooks.Open Filename:=ThisWorkbook.Path & "\hoge.xls", updatelinks:=1, Notify:=True ActiveWorkbook.ChangeFileAccess Mode:=xlReadWrite, Notify:=True って感じなのですが。 Workbooks.Openはちゃんとできています。Workbooks.OpenがコケたらOn Error Goto で拾ってMsgBoxでメッセージを出す、という処理をしているのですが、Workbooks.OpenはOKなのにChangeFileAccessでコケて、On Error Goto に引っかかってしまっています。
- ベストアンサー
- Visual Basic
- エクセルVBAで共有ファイル読込時の競合を感知できますか?
職場ネットワークで、エクセルのファイルの共有を しています。 誤ったファイル名を指定した場合は、次のVBAで メッセージを出せますが、他の人が同一ファイルを 既に開いていることを、VBAでどのように検出 すればよいのでしょうか。(当方VBA素人です) On Error Resume Next Workbooks.Open Filename:=PathName & "\" & FileName If Err.Number <> 0 Then x = MsgBox("ファイルが見つかりません", vbOKOnly) End If
- ベストアンサー
- オフィス系ソフト
- エクセルVBA
こんばんは! エクセルマクロ初心者です。 エクセルVBAについて教えてください! パス(?)を指定して、ファイルを開けてから実行する マクロを書きたいのですが、エラーになってしまいます。 Dim Filename as string (1)Workbooks.Open Filename:= "\D\MyDocument\●●.xls" (●●はファイル名) (2)Workbooks("●●").Activate (1)の部分は実行されて目的のファイルは開くのですが(2)でエラーになってしまいます。 どなたか教えてください! 以前までは、このマクロ実行できていたのですが、突然できなくなりました。 困ってます。
- ベストアンサー
- Visual Basic
- EXCEL VBAでブックを開いても遷移したくない
EXCEL VBAでWorkbooks.Openを使ってブックをオープンしていますが、 Application.ScreenUpdating = False を記述しているにもかかわらず、画面が遷移してしまいます。 どなたかわかる方、ご教授願います。
- 締切済み
- その他MS Office製品
- VBAでファイルを閉じる時に、他のエクセルファイルを閉じるには?
VBAで、 Private Sub Workbook_Open() Workbooks.Open FileName:="バス時刻表.xls",ReadOnly:=True End Sub で、バス時刻表.xlsを自動的にオープンした後、 閉じる時に、 Private Sub Workbook_BeforeClose(Cancel As Boolean) Workbooks("バス時刻表.xls").Close End Sub で記述したら、エラーとなります。 どのようにすればいいのでしょうか? よろしくお願いします。
- ベストアンサー
- オフィス系ソフト
- AppActivate Appではなぜだめなのでし
エクセルファイルをvbaで開いて全画面表示したいのですが Sub Sample1() Dim App As Excel.Application Dim xlBook As Workbook Dim MyFileName As String MyFileName = "D:\test.xls" Set App = CreateObject("Excel.Application") Set xlBook = App.Workbooks.Open(MyFileName, ReadOnly:=True) App.Visible = True AppActivate App 'エラー発生 End Sub このコードだと AppActivate Appでエラーが発生します。 たまにシステムの裏側で開いてしまうので 常に前面に持ってこれるようにしたいのですが AppActivate Appではなぜだめなのでしょうか?
- ベストアンサー
- Visual Basic
- エクセルvba
エクセルvbaなのですが Sub test() Dim xlApp As Object Dim xlBook As Object Set xlApp = CreateObject("Excel.Application") Set xlBook = xlApp.Workbooks.Open(ActiveWorkbook.FullName) 'コード・・・ Set xlApp = Nothing Set xlBook = Nothing End Sub これだと Set xlBook = xlApp.Workbooks.Open(ActiveWorkbook.FullName) の部分で、エラーになります。 実行時エラー1004です。 自身ファイルをオブジェクトに格納して操作したいのですがどうすればいいでしょうか?
- ベストアンサー
- オフィス系ソフト
お礼
回答ありがとうございます。 使用するのは職場です。 トライするのは3連休の後になると思います。 結果は"補足"で報告いたします。
補足
教えていただいたロジックは入れてありますが、もう1ヶ月以上経ちますが、このような事象は発生しませんでした。 この質問は〆させていただきたいと思います。 どうもありがとうございました。