データを取得するために別のファイルを開くコードを使用しています。 これは、という名前のどこかで見つかった関数を使用して、ファイルがすでに開いているかどうかを確認します。 このコードはうまくいきますが、読み取り専用モードで動作させようとしています。Excel VBAの読み取り専用モードを認識する関数
私がしたいのは、ファイルを読み取り専用モードで開くことです。 だから私は読み取り専用でファイルを開くには、このコードを更新しようとしているが、マクロがファイルを認識しない Workbooks.Open FileName:="R:\Development\Copy of Product Information.xlsm", ReadOnly:=True, Password:="bcd"
を更新し、既に(読み取り専用モードで)開いていると、再びそれを開こうとします。
Ret = IsWorkBookOpen("R:\Development\Copy of Product Information.xlsm")
If Ret = True Then
Workbooks("Copy of Product Information.xlsm").Activate
Sheets("Main").Select
Else
Workbooks.Open FileName:="R:\Development\Copy of Product Information.xlsm", Password:="bcd"
Sheets("Main").Select
End If
機能コード:
Function IsWorkBookOpen(FileName As String)
Dim ff As Long, ErrNo As Long
On Error Resume Next
ff = FreeFile()
Open FileName For Input Lock Read As #ff
Close ff
ErrNo = Err
On Error GoTo 0
Select Case ErrNo
Case 0: IsWorkBookOpen = False
Case 70: IsWorkBookOpen = True
Case Else: Error ErrNo
End Select
End Function
私は、読み取り専用モードにしてください処理するためにを変更する方法を知っていただきたいと思います。
ループでXLA/XLAMワークブックが見つかりません。あなたの文字列比較はバイナリ比較です。 'TargetWorkbook'が設定されるとすぐにループを終了することができます。 'ReadOnly'プロパティは、ファイルが読み取り専用属性を持っているのではなく、Excelがファイルを読み取り専用として開いているかどうかを示します。 – ThunderFrame