teratail header banner
teratail header banner
質問するログイン新規登録
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

VBScript

VBScript(Visual Basic Scripting Edition)はMicrosftが開発したスクリプト言語であり、Visual Basicのサブセットです。

Q&A

解決済

2回答

209閲覧

VBSでExcelVBAにて対象ファイルを開くときに警告が出てくる

kakii

総合スコア7

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

VBScript

VBScript(Visual Basic Scripting Edition)はMicrosftが開発したスクリプト言語であり、Visual Basicのサブセットです。

0グッド

0クリップ

投稿2025/06/25 15:25

0

0

実現したいこと

VBS実行時の警告を無視したい

発生している問題・分からないこと

VBSおよびExcelVBAに関する質問です。
下記のVBSを実行するとき、「B.xlsm」が他の端末で開いたままだと、"B.xlsmは編集のためロックされています"というような警告が表示されます。
この際、下記のようなことは可能でしょうか?
・案①:読み取り専用で開く
・案②:"B.xlsmは編集のためロックされています"というような警告が表示される場合、VBSのxlApp.Run "OpenBFile"をSKIPするといったことはできますでしょうか?

エラーメッセージ

error

1"B.xlsmは編集のためロックされています"

該当のソースコード

VBS

1Dim xlApp, xlBook 2 3' Excelを起動 4Set xlApp = CreateObject("Excel.Application") 5xlApp.Visible = True 6 7' Excelファイルを開く(パスは適宜変更) 8Set xlBook = xlApp.Workbooks.Open("C:\パス\A.xlsm") 9 10' マクロを実行 11xlApp.Run "OpenBFile" 12 13' Excelを終了 14xlApp.Quit

VBA

1Sub OpenBFile() 2 Workbooks.Open Filename:="B.xlsm" 3End Sub

試したこと・調べたこと

  • teratailやGoogle等で検索した
  • ソースコードを自分なりに変更した
  • 知人に聞いた
  • その他
上記の詳細・結果

VBAの下記の前にエラーハンドリングを設定しても、VBSを実行すると同様の警告が出てきてしまいます。
Workbooks.Open Filename:="B.xlsm"

補足

"VBS" , "VBA"

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

meg_

2025/06/25 17:35

VBSは非推奨になっているかと思いますがVBSでなければならないのでしょうか?
guest

回答2

0

ベストアンサー

こんなかんじで

vb

1Dim fs 2Dim FilePath 3Dim objExcel 4 5Set fs = WScript.CreateObject("WScript.Shell") 6FilePath=fs.CurrentDirectory+"\b.xlsm" ' 7 8Set objExcel = WScript.CreateObject("Excel.Application") 9objExcel.Visible = True 10Call objExcel.Workbooks.Open(FilePath,,True) '読み取り専用で開く 11objExcel.DisplayAlerts = False 12objExcel.Run "OpenBFile"

投稿2025/06/26 00:41

yambejp

総合スコア117892

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kakii

2025/06/26 01:30

できれば、a.xlsmのマクロを実行したかったのですが諦めて、b.xlsmのマクロを直接実行するようにしました。ありがとうございました!
yambejp

2025/06/26 02:27

あー、vbsで開いたaのマクロでロックされたbをエラーなく開くのですね。 ちゃんと読んでませんでした。失礼しました
guest

0

案①:読み取り専用で開く

Application.DisplayAlerts プロパティを False にすると警告を表示しないで読み取り専用で開きます。

「Application.DisplayAlerts プロパティ」
https://learn.microsoft.com/ja-jp/office/vba/api/excel.application.displayalerts

案②:"B.xlsmは編集のためロックされています"というような警告が表示される場合、、VBSのxlApp.Run "OpenBFile"をSKIPするといったことはできますでしょうか?

こんな関数を作って事前にチェックしてはいかがでしょう?

vba

1Function IsFileInUse(filePath As String) As Boolean 2 Dim fileNo As Integer 3 On Error Resume Next 4 fileNo = FreeFile 5 Open filePath For Binary Access Read Write Lock Read Write As #fileNo 6 If Err.Number <> 0 Then 7 IsFileInUse = True 8 Err.Clear 9 Else 10 IsFileInUse = False 11 Close #fileNo 12 End If 13 On Error GoTo 0 14End Function

投稿2025/06/25 16:45

KOZ6.0

総合スコア2736

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.30%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問