"読み取り専用でファイルを開きたい" と御質問を頂きました。
過去に探した事が有り、"Unofficial CATIA User Forum" にも
記載したのですが・・・ 生憎、ソースコードの管理が悪く サンプルが見つかりませんでした。
結論としては、CATIAのマクロでドウコウでは無く、FileSystemObjectで
読み込むファイルの属性を読み込み専用に変更した上で読み込み、
その後元に戻します。 要は読み込む瞬間だけ "読み込み専用"
としてしまえば良いだけでした。
サンプルコードです。
'vba sample_FileOpen_ReadOnly_ver0.0.1 '読み取り専用でCATIAなファイルを読み込む Option Explicit Private Const SelectionType = "*.CAT*" '"*.CATPart" Private Const ReadOnly = 1& 'ファイル属性-読み取り専用 Sub CATMain() 'ファイル選択 Dim OpenFilePath As String Dim Msg As String: Msg = "読み取り専用で開くファイルを選択してください" OpenFilePath = CATIA.FileSelectionBox(Msg, SelectionType, CatFileSelectionModeOpen) If OpenFilePath = vbNullString Then Exit Sub 'ファイル属性取得 Dim Original As Long: Original = GetAttributes(OpenFilePath) '属性チェックし必要なら変更 If Not (Original And ReadOnly = ReadOnly) Then Call SetAttributes(OpenFilePath, ReadOnly) End If '読み込み Call CATIA.Documents.Open(OpenFilePath) '属性を変更していたら元に戻す If Not (Original And ReadOnly = ReadOnly) Then Call SetAttributes(OpenFilePath, Original) End If End Sub 'FileSystemObject Private Function GetFSO() As Object Set GetFSO = CreateObject("Scripting.FileSystemObject") End Function 'ファイル属性設定 Private Sub SetAttributes(ByVal Path As String, ByVal Value As Long) Dim Fso As Object: Set Fso = GetFSO Fso.GetFile(Path).Attributes = Value End Sub 'ファイル属性取得 Private Function GetAttributes(ByVal Path As String) As Long Dim Fso As Object: Set Fso = GetFSO GetAttributes = Fso.GetFile(Path).Attributes End Function
FileSelectionBoxを利用してファイルを選択させていますが、単に開きたい
ファイルのパスを指定してもOKです。
FileSelectionBoxについては、第二引数の表示させるファイルの拡張子の
指定なのですが複数の拡張子を指定できなさそうな為、苦し紛れな
ワイルドカードを利用しています。
(catvbaやCATScript等、本来表示させるべきではないものまで表示されます)
実際にマクロを利用して開いた感じはこちらです。
CATIA上では "読み込み専用" となっていますが、実際のファイルのプロパティ(右下)は
"読み込み専用" となっていません。
ファイルは例の宿題です。 忙しい上に、機械が空かなかったり・・・(言い訳)
※涙が出るほどの初歩的な誤記を修正しました・・・。