Вы делаете c:\xxx\users\
, затем открываете c:\xxx\users\name\list.txt
, но вы не создали подкаталог name
, это не произойдет автоматически.
Вам нужно будет создать \users
, затем \name
. (Вы, вероятно, также должны учитывать ошибку, которая произойдет, если вы mkdir
существующий каталог)
Что-то вроде
sub foo
Dim BasePath As String
Dim name As String: name = "bob"
'// get App.Path accounting for "DRIVE:\" which has a trailing \
Dim root As String: root = App.Path & IIf(Right$(App.Path, 1) <> "\", "\", "")
BasePath = root & "users\"
makeDir BasePath
makeDir BasePath & name & "\"
'//you have this:
Open BasePath & name & "\list.txt" For Input As #1
'//but if you have just created the directory, the file wont exist so this will error?
end sub
Sub makeDir(sPath As String)
If Len(Dir(sPath, vbDirectory)) = 0 Then MkDir sPath
End Sub