• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:エクセル・VBA エラーメッセージの表示をしたい)

VBAエクセルで他人がファイルを開いている場合のエラーメッセージ表示方法

このQ&Aのポイント
  • エクセルのVBAで他のエクセルファイルを開き、新しいデータをペーストし保存する命令文を入れている場合、他の人がファイルを開いている場合にどのように対応すれば良いかについての質問です。
  • 現在のコードでは、他の人がファイルを開いている場合でも何も聞かれずに読み取り専用でファイルが開かれ、新しいデータをペーストしてしまいます。そのため、他の人がファイルを開いていることを知らせるためにはどのようなコードを書けば良いか悩んでいます。
  • ファイルが開かれている場合には、MsgBoxを表示し、他の人がファイルを開いていることを知らせるようなコードを書く必要があります。具体的なコードの書式や内容についてアドバイスをいただきたいです。

質問者が選んだベストアンサー

  • ベストアンサー
  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.1

私が良くやるのは、ブックをファイルとして開いて見て、エラーだったら使用中と判断する方法です。 Sub Sample()  Dim nFile As Integer  On Error Resume Next  nFile = FreeFile()  Open "\\192.168.1.1\hogehoge\hoge.xls" For Append As #nFile  Close #nFile  If Err.Number > 0 Then   MsgBox ("誰かが使用中")   Exit Sub  End If End Sub あるいは、そのブックを共有ブックにしてしまって、UserStatusオブジェクトを見るのも良いかも知れません。

TENSAW
質問者

お礼

mt2008さん、 本当にありがとうございました。 安心して週末を迎えられます。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • エクセルVBAで「はい」「いいえ」のないメッセージを表示する方法

    エクセル95およびエクセル97を使用しています。 エクセルVBAでメッセージを表示する場合、通常は、 Sub メッセージ() MsgBox "~メッセージ本文~", vbOKOnly + vbinformatoin, "メッセージタイトル" End Sub のように書くと思います。他にも、vbOKCancel、 vbYesNo などもあります。 しかしこれらはいづれにせよ、ユーザーがメッセージに表示された「はい」や「いいえ」をクリックしないと先に進みません。、このメッセージから「はい」「いいえ」等の表示を無くし、メッセージを何秒か表示したら、あとは自動的に消えるようにするにはどうすればいいのでしょうか?

  • エクセルVBAにて、2回エラーになってしまう

    現在、エクセルVBAにて、エラーのチェックを行っているのですが、 他の数値項目は問題ないのですが、下記の個所のみ、 エラーメッセージが2回出力されます。 (1回目のExitSubがきかない) お分かりになる方がおられましたら、ご回答、よろしくお願い致します。 '費用(明細1) Private Sub txtMei4_1_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean) Set mytxt = Me.Controls("txtMei4_1") If mytxt.Text <> "" And _ IsNumeric(mytxt.Text) = False Then MsgBox "数値を入力してください" Cancel = True Exit Sub ←ここで、Exitせず、もう一度このPrivate Subに戻ってくる End If End Sub 他のテキストでも同様のチェックをしているのですが、 この部分のみ、msgboxが2回出力されます。 申し訳ありません。 よろしくお願い致します。

  • VBAでエラーが出たらメッセージを出す。

    VBAで関数の結果が"#N/A"だったらメッセージをだしたいののですが、うまくいきません。 初心者です。よろしくお願いします。 Private Sub CommandButton1_Click() '商品を検索する If Range("E8").Value = "#N/A" Then MsgBox "この商品サイズはありません!" Else MsgBox "商品あります。" End If End Sub セルE8には「=MATCH($D$1,データ!A:A,0)」が入力されています。 お願い致します。

  • VBAでCSVファイルが使用中かどうかの確認

    お世話になっております。 Excel VBA についてご質問します。 今、VBAでCSVファイルを作成してデータ管理を行うソフトを作成しております。 このソフトは、共有をかけて複数の人で使用するため同じCSVファイルに同時にアクセスする可能性があります。そのため、CSVファイルに混同したデータが書き込まれてしまう恐れがあります。 そこで、CSVファイルがオープン中または、アクセス中が認識できる命令等はないでしょうか? よろしくお願いします。

  • VBAのinputboxで何もいれずに[OK]を押した時エラーになります

    よろしくお願い致します。 EXCELのVBAで「inputbox」を使ってセルを選択させたいと考えております。 下記のコードだと「キャンセル」や「×」で閉じられた時はmsgbox「キャンセル」が出てExit subするのですが、何も入力しないで「OK」を押した場合がどうしてもエラー(入力した数式は正しくありません)になります。 いろいろ調べて試したのですがどうしてもできず困っています。 どなたか教えてください。 Sub test() Dim myAns As Range On Error Resume Next Set myAns = Application.InputBox(Prompt:="セルを選択してください。", Title:="セル選択", Type:=8) On Error GoTo 0 If myAns Is Nothing Then MsgBox "キャンセル" Exit Sub ElseIf myAns = "" Then MsgBox "最低1つは選択してください" Exit Sub Else MsgBox myAns.Address(0, 0) End If End sub

  • excel vbaでデータベース構築

    現在、excel vbaで共有サーバ上にあるデータベース(excelファイル)を複数人で利用していますが、データ数に限りがあるし、データ数が増えて動きが鈍くなっています。 そこで、共有サーバ上のデータベースをmdbファイルに変更してみようかと考えてWeb検索してみたら、危険な行為みたいな記述が多く、困惑しています。 そこで、ご存知の方にお尋ねします。なお、私はvba以外は知らない超初心者です。 1.excel vba で mdbファイル を利用することの是非。 2.もし、mdbファイルを利用する場合、ここさえ注意すればOK!というアドバイス よろしくお願いします。

  • メッセージボックスを表示させるエクセルマクロ

    こんにちは。マクロ初心者です。 エクセル(Excel2003)でメッセージボックスを 表示させるマクロが思うようにいかず困っています。 B列に「○○会社」と入力されれば、 「取引先です。」 とメッセージボックスを表示させたいと思い、 次のとおりマクロを作成しました。 -------------------------------- Private Sub Worksheet_Change(ByVal Target As Range) If Target.Column = 2 And Target Like "*会社" Then MsgBox "取引先です。" End If End Sub -------------------------------- しかし、コピーなどで複数のセルを貼り付ける(入力)行為をすると、 「実行エラー'13': 型が一致しません」と出てしまいます。 Worksheet_Change(ByVal Target As Range)を使っているので、 -------------------------------- Private Sub Worksheet_Change(ByVal Target As Range) If Target.Count > 1 Then Exit Sub If Target.Column = 2 And Target Like "*会社" Then MsgBox "取引先です。" End If End Sub -------------------------------- と、「If Target.Count > 1 Then Exit Sub 」を入れれば、 メッセージは出なくなるのですが、 これだと、A列セルに、コピー&ペーストで複数セルを貼り付けた場合、 「○○会社」があっても、マクロが効いてきません。 複数セルの貼り付けにも対応させるには、 どのようにすればよろしいでしょうか? 基本的なところが理解できていないのだと自覚しておりますが、 どうかご教授願います。 長々とわかりづらい文章ですみません。よろしくお願いします。

  • エクセルVBAで「通知」を選ぶには?

    ネットワーク上にあるエクセルファイルを開こうとする場合、誰かが先に開いている場合、「使用中のファイル」というダイアログが出てきて、「xxx.xlsは編集のためロックされています」とメッセージが表示され、ボタンが「読み取り専用」「通知」「キャンセル」と出ます。 通知を選ぶと読み取り専用で開かれ、先に開いた人が終了した場合、OKになった旨の連絡がきます。 この「通知」を選ぶのと同様の操作をVBAで行うにはどのような命令を行ったらよいのでしょうか? 要は「読み取り専用」で開いて、先に開いた人が閉じた場合、メッセージを出したいのですが、どのようにVBAを作ったらよいのでしょうか? よろしくお願い申し上げます。

  • Excel VBAで新たな保存先のパスの取得方法は?

    エクセルVBAで新たに一度に作成する複数のブックを保存するフォルダーをあらかじめ指定したいのですが、下記のような方法しか思い浮かびません。 もっとスマートなやり方はないでしょうか?(直接入力以外の方法で) Sub Path_Get() Dim myPath As String, damy As Variant MsgBox "作成するファイルの保存先を選択します。" _ & vbCr & "なお、表示されたファイル名は気にしないで" _ & vbCr & "下さい。(笑)" damy = Application.GetSaveAsFilename(fileFilter:="Excel (*.xls),*.xls") MsgBox damy If damy = False Then Exit Sub For i = Len(damy) To 0 Step -1 If Mid(damy, i, 1) = "\" Then myPath = Mid(damy, 1, i) Exit For End If Next i MsgBox "パスは " & myPath & "です。" End Sub

  • エクセルVBAのエラーについて

    以前のPC(Windows2000、Office2000)で作成したエクセルファイルのVBAを新しいPC(WindowsXP、Office2003)で修正し保存したところ古いPCでVBAのコンパイルエラーが出るようになってしまいました。 TrimとかMidのような極く基本的命令でエラーになっております。 イミディアットウィンドウで該当命令個所をPrint文で表示させようとしても命令が認識されません。 何が原因なのでしょうか?どのように対応すればよろしいのでしょうか? よろしくお願い申し上げます。

専門家に質問してみよう