Creo que se refiere a la ruta completa, prueba con esto:
Código:
Public Function CrearRuta(ByVal s_Ruta As String) As String
Dim direc As String
Dim sTemp As String
Dim pos As Long
On Error Resume Next
'Si ocurre un error distinto de los especificados
'devolvemos una cadena vacía
CrearRuta = ""
'Usamos una variable temporal
sTemp = s_Ruta
Do
'Buscamos la barra invertida '\'
pos = InStr(sTemp, "\")
If pos <> 0 Then
'Cargamos el directorio en una variable
direc = Left(sTemp, pos)
'Creamos el directorio
MkDir direc
'"Entramos" al directorio
ChDir direc
'Comprobamos que sea un error conocido
'(75 es cuando el direcrotio ya existe
'y 76 cuando es inaccesible o algo por
'el estilo :P )
If Err.Number <> 75 And Err.Number <> 76 And Err.Number <> 0 Then
Exit Function
End If
'Limpiamos el error
Err.Clear
'Eliminamos la parte ya "usada" de la ruta
sTemp = Right(sTemp, Len(sTemp) - pos)
End If
Loop While pos <> 0
'Devolvemos la ruta pasada como parámetro
CrearRuta = s_Ruta
End Function
Y para usarla en tu ejemplo:
Código:
Dim foo As Integer
foo = FreeFile(RichTextBox)
Open CrearRuta("C:\Archivos de programa\Archivo3.txt") For Output As #foo
Print #foo, reemplazo
Close #foo
Un saludo