大変お世話になっています。
サーバ上にあるファイルを更新するVBAを作りました。
該当ファイルはあらかじめ閉じられていて、オープンして処理終了後保存して閉じるという仕様になっているのですが、そのファイルは複数人が使用するもののため、「閉じている」ことを前提としたVBAにもかかわらず、ファイルが開いている可能性があります。
そこで、一番最初に「ファイルが開かれていたら何もせずに終了する」という判断をしたいのですが、いい方法はあるでしょうか。
過去の質問を検索したところ、
If .ReadOnly Then
’処理を行わない
Else
’処理を行う
End If
という書き方があるようですが、VBAを使わない場合でも「他の人が使用中です。読み取り専用で開きますか?」というメッセージが自動で出てしまうため、これを出さずに強制終了できると嬉しいです。
達人の皆様、どうかお知恵をかして下さいませ。
No.2ベストアンサー
- 回答日時:
こんにちは。
>過去の質問を検索したところ、
>If .ReadOnly Then
それは正しい回答だったのでしょうか?
ダミーのバイナリ編集をすればよいのではありませんか?既に開いていれば、エラーが返りますので、それでチェックできます。
サンプル:
Sub BookEnableEdit()
Dim MyPath As String
Dim myFno As Integer
Const Fname As String = "test.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 > 0 Then
MsgBox "ブックは開いています", vbInformation
Exit Sub
End If
On Error GoTo 0
End Sub
この回答への補足
いつもお世話になっております。
例によって、参考書と首っ引きでコードを読ませていただきました。
そこでテストしてみようと思ったところ、MyPath~の所でなぜかコンパイルエラーになってしまうのですが…
ファイルをオープンする時の、サーバ名から指定しているコードの、ファイル名より前の部分をそのままコピペしたのですが、それがよくないのでしょうか。
No.3
- 回答日時:
>サーバ名から指定しているコードの、ファイル名より前の部分をそのままコピペしたのですが
MyPath = "\\サーバー名\共有フォルダ" & "\"
すみません。"" 「クォーテーション」が入っていませんでした。
ただ、コピーしたものをそのまま、
'Const Fname As String = "" 'ファイル名
↑これは使わないで、
以下に、貼り付けてよいです。
MyPath = "\\サーバー名\共有フォルダ\test.xls"
ありがとうございます!無事機能を追加することができました!
それですみません、一点だけ確認させて頂きたいのですが、「'Const Fname ~」の部分を削除したということは、例えばここの行などは「 & Fname」を削除して、
If Dir(MyPath & Fname) → If Dir(MyPath)
としても大丈夫ですよね?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 複数のcsvファイルをExcelに一括変換したい 2 2023/03/03 12:44
- Visual Basic(VBA) エクセルVBA コードが同じでもファイルによって処理速度が大きく変わるのはなぜ 5 2022/11/06 21:34
- Visual Basic(VBA) マクロVBA 1シートをまとめる 閉じ方 初心者 SOS! 1 2022/06/17 14:54
- Visual Basic(VBA) Excel-VBAでのファイルの開き方 4 2023/02/14 11:01
- Excel(エクセル) CSVファイルでVBAを動かす方法 3 2023/04/04 10:22
- Visual Basic(VBA) VBAのユーザーフォームのテキストボックスに入力制限をしたい 6 2022/11/15 08:28
- Excel(エクセル) Excel VBAどこが間違ってますか? 4 2023/07/17 10:04
- Visual Basic(VBA) ExcelからAccessのテーブルに書き込む時に時間がかかる 1 2022/10/14 20:38
- Excel(エクセル) エクセルでcsvファイルを開いてVBAを使いたい 7 2022/04/28 11:12
- Excel(エクセル) 2つのVBAを一緒にしたら機能しなくなりました(エクセル) 7 2022/06/02 12:41
このQ&Aを見た人はこんなQ&Aも見ています
-
プロが教えるわが家の防犯対策術!
ホームセキュリティのプロが、家庭の防犯対策を真剣に考える 2組のご夫婦へ実際の防犯対策術をご紹介!どうすれば家と家族を守れるのかを教えます!
-
ExcelVBAで今開いているユーザ情報を取得できますか?
Visual Basic(VBA)
-
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
エクセルで誰が今開いているか調べる方法。
Excel(エクセル)
-
-
4
エクセルマクロで、別のブックが開いているかを判定したいのですが。
その他(Microsoft Office)
-
5
VBAでブックを非表示で開いて処理して閉じる方法
Excel(エクセル)
-
6
【Excel VBA】ネットワーク上の共有フォルダにあるExcelを開く
Excel(エクセル)
-
7
Excel VBA でファイルが開かれているか確認する
Excel(エクセル)
-
8
数式による空白を無視して最終行を取得するマクロ
Excel(エクセル)
-
9
VBAでエクセルシートを更新(リフレッシュ)する方法を教えて下さい。
Excel(エクセル)
-
10
VBAでCSVファイルが使用中かどうかの確認
Visual Basic(VBA)
-
11
メッセージボックスのOKボタンをVBAでクリックさせたい
Visual Basic(VBA)
-
12
Excelvbaの 編集のためロックされています について
Excel(エクセル)
-
13
EXCEL VBAで全選択範囲の解除
Excel(エクセル)
-
14
【Excel VBA】書き込み先ブックが既に開かれてた場合の処理
Visual Basic(VBA)
-
15
エクセルVBAで共有ファイル読込時の競合を感知できますか?
Excel(エクセル)
-
16
Excel VBA Windowsにログインしているユーザ名
Excel(エクセル)
-
17
エクセルVBAでセルに入力したパスでブックを開く
Excel(エクセル)
-
18
VBA 変数名に変数を使用したい。
Visual Basic(VBA)
-
19
VBA シートをコピーする際に Copyメソッドは失敗しましたのエラーが出てしまいます
Visual Basic(VBA)
-
20
VBでファイルが開かれているかどうかを確認したい
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
EXCELファイルに誰がアクセスし...
-
《エクセルVBA》「他の人が該当...
-
VBAでサーバーにアクセスするに...
-
VBScriptで、ファイルから任意...
-
ウィンドウズ XPの検索で拡張...
-
FTPにて553エラー
-
特定のCGIだけ、作動するかわり...
-
URLに~/cgi-bin/~を隠す方法
-
SFTPなどは使わないホームペー...
-
cgiファイルを直接は見れなくす...
-
Image::Magickの呼び出し
-
PerlでFindFirst/FindNext
-
FFFTPでアップロードできない?
-
htmlにアクセスと同時に、あるC...
-
mathtexの導入方法について。
-
ユーザの所属するグループを取...
-
ApacheでのCGIについての質問
-
インクルードファイルのエラー
-
CGIって何ですか?簡潔に教えて...
-
ネットワーク上の共有フォルダ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
EXCELファイルに誰がアクセスし...
-
《エクセルVBA》「他の人が該当...
-
VBAでサーバーにアクセスするに...
-
JAVAで別サーバーのファイルの...
-
VBScriptで、ファイルから任意...
-
サーバー上のフォルダ削除が出...
-
Webでのファイルアップロードに...
-
vbでFTPサーバーに対して、サー...
-
C# ファイル削除のエラーコード
-
WEB上で文書のアイコンを配置す...
-
HTMLソースファイルからタグを...
-
contenttypeについて
-
Dreamweaver(ドリームウィーバ...
-
個人的なアップローダーの設置
-
ローカルファイルをサーバーか...
-
自前のアップローダの作り方
-
30分ごとに更新
-
Perl 別ドメインのファイル存在...
-
PHPが動いてCGIが動かない?
-
空のファイル
おすすめ情報