大変お世話になっています。
サーバ上にあるファイルを更新する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.4
- 回答日時:
たびたびすみません。
>If Dir(MyPath & Fname) → If Dir(MyPath)
>としても大丈夫ですよね?
ご指摘のとおりです。
こんにちは。
お陰様で、無事今回の一連の作業は終了しました。
教えて頂いたコードは、今の私には、一人では絶対に書けなかったと思います。
本当に助かりました。ありがとうございました。
No.3
- 回答日時:
>サーバ名から指定しているコードの、ファイル名より前の部分をそのままコピペしたのですが
MyPath = "\\サーバー名\共有フォルダ" & "\"
すみません。"" 「クォーテーション」が入っていませんでした。
ただ、コピーしたものをそのまま、
'Const Fname As String = "" 'ファイル名
↑これは使わないで、
以下に、貼り付けてよいです。
MyPath = "\\サーバー名\共有フォルダ\test.xls"
ありがとうございます!無事機能を追加することができました!
それですみません、一点だけ確認させて頂きたいのですが、「'Const Fname ~」の部分を削除したということは、例えばここの行などは「 & Fname」を削除して、
If Dir(MyPath & Fname) → If Dir(MyPath)
としても大丈夫ですよね?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
ハマっている「お菓子」を教えて!
この世には、おいしいお菓子がありすぎて……。 次何を食べたらいいか迷っています。 みなさんが今、ハマっている「お菓子」を教えてください!
-
人生最悪の忘れ物
今までの人生での「最悪の忘れ物」を教えてください。 私の「最悪の忘れ物」は「財布」です。
-
ホテルを選ぶとき、これだけは譲れない条件TOP3は?
ホテルを探す時、予約サイトで希望条件の絞り込みができる便利な世の中。 あなたは宿泊先を決めるとき「これだけは譲れない」と思う条件TOP3を教えてください。
-
【お題】絵本のタイトル
【お題】 「ないた あかおに」「ねないこ だれだ」「はらぺこあおむし」みたいだけど、一体これどういう内容?と思った絵本のタイトルを教えて下さい
-
「お昼の放送」の思い出
小学校から中学校、ところによっては高校まで お昼休みに校内放送で、放送委員が音楽とかおしゃべりとか流してましたよね。 最近は自分でもラジオができるようになって、そのクオリティもすごいことになっていると聞きます。
-
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
ExcelVBAで今開いているユーザ情報を取得できますか?
Visual Basic(VBA)
-
エクセルで誰が今開いているか調べる方法。
Excel(エクセル)
-
-
4
エクセルマクロで、別のブックが開いているかを判定したいのですが。
その他(Microsoft Office)
-
5
ユーザーフォームを表示中にシートの操作をさせるには
Excel(エクセル)
-
6
【Excel VBA】ネットワーク上の共有フォルダにあるExcelを開く
Excel(エクセル)
-
7
VBAでブックを非表示で開いて処理して閉じる方法
Excel(エクセル)
-
8
VBAでエクセルシートを更新(リフレッシュ)する方法を教えて下さい。
Excel(エクセル)
-
9
エクセルのラベルの値(文字列)を垂直方向で中央揃えにするには?
Excel(エクセル)
-
10
エクセルVBAのフォームを最前面にする方法を教えてください。
Visual Basic(VBA)
-
11
Application.ScreenUpdating = Falseが効きません
Visual Basic(VBA)
-
12
worksheetFunctionクラスのVlookupプロパティを取得できません エラーへの対応
Visual Basic(VBA)
-
13
EXCEL VBAで全選択範囲の解除
Excel(エクセル)
-
14
VBAでCSVファイルが使用中かどうかの確認
Visual Basic(VBA)
-
15
エクセルVBAが途中で止まります
Visual Basic(VBA)
-
16
エクセルVBA 開いているブックのコピー
Excel(エクセル)
-
17
エクセルVBAで、MsgBox やInputBox は、画面の中央以外に表示させたい。
Excel(エクセル)
-
18
バックグラウンドのプロセスのエクセルを閉じる方法
Visual Basic(VBA)
-
19
VBA シートをコピーする際に Copyメソッドは失敗しましたのエラーが出てしまいます
Visual Basic(VBA)
-
20
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・14歳の自分に衝撃の事実を告げてください
- ・架空の映画のネタバレレビュー
- ・「お昼の放送」の思い出
- ・昨日見た夢を教えて下さい
- ・【お題】絵本のタイトル
- ・【大喜利】世界最古のコンビニについて知ってる事を教えてください【投稿~10/10(木)】
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・ハマっている「お菓子」を教えて!
- ・最近、いつ泣きましたか?
- ・夏が終わったと感じる瞬間って、どんな時?
- ・10秒目をつむったら…
- ・人生のプチ美学を教えてください!!
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
EXCELファイルに誰がアクセスし...
-
Webフォルダでサーバーからイン...
-
URLに~/cgi-bin/~を隠す方法
-
ユーザの所属するグループを取...
-
FTPにて553エラー
-
MVCモデルとIIS(IHS)、WAS
-
XサーバーでCGIを使うには??
-
ログアウト処理でWebブラウザを...
-
$ENV{'QUERY_STRING'}以外で引...
-
DiaryCGI nicky! について 新し...
-
サーバーのエクセルファイルを...
-
CとPerlどれくらい違うか?
-
AS/400 QUERYの集計結果について
-
.htaccess による携帯からのア...
-
ホームページのレイアウトが崩...
-
古語の読み方が、?です。
-
PCと携帯で閲覧可能なHP作成に...
-
ソースを見せたくないです。
-
古ーくからフリーのtree.cgi掲...
-
LAN内に接続されているPCをリ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
EXCELファイルに誰がアクセスし...
-
《エクセルVBA》「他の人が該当...
-
VBScriptで、ファイルから任意...
-
VBAでサーバーにアクセスするに...
-
JAVAで別サーバーのファイルの...
-
空のファイル
-
vbでFTPサーバーに対して、サー...
-
ホームページのログインパスワ...
-
statの戻り値が返ってこない
-
C# ファイル削除のエラーコード
-
ホームページの画像や音声のみ...
-
ウィンドウズ XPの検索で拡張...
-
basp21でのファイルアップロー...
-
自宅サーバーに大容量(1GB...
-
超初心者ですが、、
-
CGIを使用してブラウザからファ...
-
logファイルがあるといつまでも...
-
HTML5のFileAPIでファイルの存...
-
実行および文字列の受け渡し
-
Thickboxの設置方法について
おすすめ情報