
FileSearchを使って複数のエクセルファイルを順に開きシート内容の更新を行っています。更新すべきファイルは、LAN上のサーバ(LANハードディスク)内のフォルダにおいてありますが、複数の人がファイルを開いて作業を行います。その時、FileSearchで更新作業をしようとすると2重に開く現象が発生します。
ファイルを開く方法は、openメゾッドをworbooksコレクションに対して行っています。
Workbooks.Open Filename:=.FoundFiles(iCount), UpdateLinks:=0で開き、Workbooks(FlieName).Close SaveChanges:=Trueで閉じます。
しかしこのままですと、読み取り専用でファイルを開いてしまい、保存時にコピーを保存するでマクロが止まります。そこで、openメゾッドに、Notify:=Falseを着けると、「読み取り専用で開きますか?」で停止します。次に、On Error GoTo でトラップしようとすると、、「読み取り専用で開きますか?」のダイアログで、いいえを選択するとトラップが出来るのですが、ハイだと当然トラップできません。それよりも、ダイアログが表示されるのには変わりありません。
Displayalerts=Falseとすると、ダイアログは表示されなくなりますが、エラーがトラップ出来なくなります。ファイルの2重で開くのトラップってどうすれば出来るのでしょうか?似たようなものにOpenステートメントもあるようですが、うまく出来ませんでした。どなたか?詳しい方教えて頂けませんでしょうか?宜しくお願い致します。
目的としては、2重に開く現象となったファイル名をThisworkbookのシートに一覧保存してあとで対象のものだけ処理を行うようにしたいです。また、2重に開いたときに表示される使用者名もゲットしたいです。
宜しくお願い致します。
No.2ベストアンサー
- 回答日時:
補足です。
#1 の参考URLを参考に関数を書きましたが、Open strFULLPATH For Binary Access Write As #n
ではなくて、
Open strFULLPATH For Binary Lock Write As #n
とした方が今回の目的にはよりマッチしていると思います。
この回答への補足
いつも、いつも、いつも丁寧なご指導有難う御座います。毎回毎回、新しいことを教えて頂き、恐縮いたします。マイクロソフトも色々と情報を提供し手いるのですね?与えられている情報が全く活用できていないことを、またもや、痛感いたしました。
ほんのちょっとのアレンジが大切である!もっともだと思いました。
本当に、本当に有難う御座います。
今後とも宜しくお願い致します。
お礼の点数を割り振ることしか出来ないことに、申し訳なく感じます。
No.1
- 回答日時:
こんにちは。
KenKen_SP です。> ファイルの2重で開くのトラップってどうすれば出来るのでしょうか?
【参考】MS サポートオンライン より
[XL]他ユーザーが使用中のファイルを開く時任意のメッセージを表示する方法
http://support.microsoft.com/default.aspx?scid=k …
これを次のような関数にしてチェックします。
'ファイルが既に開かれているか確認する関数
Function FILE_OPENED(ByRef strFULLPATH As String) As Boolean
Dim n As Long
n = FreeFile
On Error Resume Next
Open strFULLPATH For Binary Access Write As #n
Close #n
If Err.Number > 0 Then
FILE_OPENED = True
End If
On Error GoTo 0
End Function
【使い方の例】
IF FILE_OPENED(.FoundFiles(iCount)) Then
Msgbox "ファイルは使用中です。"
End IF
とりあえず。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/08/03 11:27
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/07/06 17:46
- Excel(エクセル) 【マクロ】マクロが保存されているエクセルとは、別のエクセルブックの全シートの非表示列を再表示したい 1 2022/12/24 20:48
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/08/03 12:30
- Visual Basic(VBA) 集めたシートのシート名を変更したい。 下記のコードでサブフォルダにあるファイルのSheet3を集めて 6 2022/08/23 10:38
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/03/07 14:05
- Visual Basic(VBA) Excelのマクロコードについて教えてください。 1 2022/03/27 13:25
- Visual Basic(VBA) 貼り付けた値が消えていく 以下はソースファイルの2番目のシートのB6から最終行を取得 ターゲットファ 2 2023/07/27 12:23
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 1 2023/08/09 10:33
- Visual Basic(VBA) シートをコピーする下記記述でダイアログを用いた記述がわかりません?( A = Dir(ThisWor 4 2022/08/22 12:26
このQ&Aを見た人はこんなQ&Aも見ています
-
VBA、Excelのworkbook.open について質問です これを記載してマクロ実行後、boo
Excel(エクセル)
-
VBAで二重起動を防止したいのですが、
その他(Microsoft Office)
-
ファイルは既に開かれています(Error55)について
Visual Basic(VBA)
-
-
4
VBAでユーザーフォームを再表示させたい。
Excel(エクセル)
-
5
VBAのボタンの位置が変わって困ります
Visual Basic(VBA)
-
6
既にファイルが開いているのなら開かない(二重起動防
Access(アクセス)
-
7
エクセルVBAでセルに入力したパスでブックを開く
Excel(エクセル)
-
8
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
9
VBAでファイルを開くときにファイル名でワイルドカードを使用したいです
その他(プログラミング・Web制作)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excelブックの共有をしているの...
-
バッチファイルでExcelを読み取...
-
EXCEL共有ファイルの使用中の相...
-
ExcelのVBAでWordを読み取り専...
-
エクセルで他の人が開いたとき...
-
Excel>PERSONAL.XLSが開かれて...
-
NASのフォルダが読み取り専用に...
-
autocadが作業途中で読み取り専...
-
Excelのファイルが突然開けな...
-
excel で通知と読み取り専用の...
-
エクセルで誰が今開いているか...
-
読み取り専用にチェックが入っ...
-
ACCESSでデータ読み取り専用を...
-
Eclipse で同期するたびに読み...
-
「保存できません。ファイルが...
-
PCで作ったwordをスマホで編集...
-
危険なファイルを正常にする方法
-
Excelの表示を更新させる方法
-
Excelvbaの 編集のためロックさ...
-
Wordを添付してメールで送ると...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
EXCEL共有ファイルの使用中の相...
-
エクセルで誰が今開いているか...
-
Excelブックの共有をしているの...
-
excel で通知と読み取り専用の...
-
Excelが読み取り専用になる件に...
-
Excel>PERSONAL.XLSが開かれて...
-
Chromebookを使用しています。 ...
-
バッチファイルでExcelを読み取...
-
Excelのファイルが突然開けな...
-
エクセルで他の人が開いたとき...
-
ACCESSでデータ読み取り専用を...
-
危険なファイルを正常にする方法
-
読み取り専用にチェックが入っ...
-
エクセルで上書き保存すると
-
autocadが作業途中で読み取り専...
-
PCで作ったwordをスマホで編集...
-
Excelが読み取り専用にならない
-
ExcelのVBAでWordを読み取り専...
-
EXCELファイルが読み取り専用で...
-
エクセル共有ブックが読み取り...
おすすめ情報