• ベストアンサー

Excel VBA ワークブック閉じる

ExcelのVBAのコード記述についてなのですが、 ブックを閉じるの動作で、読み取り専用として開いているブックのみを閉じる方法ってあるのでしょうか? 補足ですが、2つブックを開いていて、ブック名も同じ名前で、読み取り専用を名前を付けないように閉じてもう一方のブックが見られる状態にしたいです。

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

  • ベストアンサー
  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.1

>2つブックを開いていて、ブック名も同じ名前で との事ですが、Excelでは、例え別のフォルダーにあるファイルであっても、全く同名のブックは、例え読み取り専用モードであっても開く事は出来なかったと思います。  ですから、その2つは一見するとブック名が同じである様に見えても、例えば片方の拡張子が.xlsのBookで、もう一方が.xlsxの拡張子を持つBookであると言ったように、厳密には異なるファイル名のBookではないかと思います。  その場合は以下の様なVBAを使う事で、現在、読み取り専用モードで開いている全てのBookを、名前を付けずに閉じる事が出来ます。 Sub QNo9088918_Excel_VBA_ワークブック閉じる() Dim i As Long For i = Workbooks.Count To 1 Step -1 With Workbooks(i) If .ReadOnly = True Then .Close SaveChanges:=False End With Next i End Sub

pigumin
質問者

お礼

回答ありがとうございます。 よく確認した結果、拡張子が少し違いました。 ありがとうございました。

その他の回答 (1)

  • dogs_cats
  • ベストアンサー率38% (278/717)
回答No.2

開いている読み取り専用エクセルファイルをclose方法の一例です。 同名ファイルはフォルダーが違っても同時に開くことは出来ないはずですが。 Sub test() Dim wb As Workbook For Each wb In Workbooks If wb.ReadOnly = True Then wb.Close SaveChanges:=False End If Next wb End Sub

pigumin
質問者

お礼

回答ありがとうございます。 参考にさせていただきます。