Sub Sample1()
''C:\Sample.txtは読み取り専用属性
Open "C:\Sample.txt" For Append As #1
Print #1, "tanaka"
Close #1
End Sub
OpenステートメントやChDirステートメントなどで指定したパスやファイルの形式が不正のとき発生します。
あるいは、上のコードのように、読み取り専用ファイルをOutputモードやAppendモードで開こうとするときにも起こります。
ファイルの属性を調べるには、GetAttr関数を使います。
Sub Sample2() ''C:\Sample.txtは読み取り専用属性 Dim Atr As Long Atr = GetAttr("C:\Sample.txt") If Atr And vbReadOnly Then MsgBox "読み取り専用です" Else Open "C:\Sample.txt" For Append As #1 Print #1, "tanaka" Close #1 End If End Sub
パスやファイル名が不正のときに、このエラーが起こりますが、パスやファイルの書式が正しくても、存在しないパスやファイルを指定したときには「パスが見つかりません」のエラーが発生します。よく似たエラーメッセージですが、こちらの方が起こりやすいエラーです。
「パスが見つかりません」の解説Windows VistaまたはWindows 7の環境ではユーザーアカウント制御の設定によっては、Cドライブのルート(C:\)へのアクセスが制限されます。その状態では、次のコードを実行すると「パス名が無効です」エラーが発生します。
Sub Sample3() Open "C:\Sample.txt" For Append As #1 Print #1, "tanaka" Close #1 End Sub
コードは、どこも間違っていません。ただ、ユーザーアカウント制御によってCドライブのルート(C:\)へのアクセスが制限されるため、エラーになります。
このエラーを回避するには、Cドライブのルートにアクセスしないか、ユーザーカウント制御の設定を変更します。
なんだかなぁ・・・