Vamos por partes:
1º/ Para tener una "vista previa" del informe, elimina el acHidden del DoCmd. OpenReport, o cámbialo por acWindowNormal.
2º/ Para guardar los informes en carpetas independientes, no te haría falta abrir un cuadro de diálogo, si, por ejemplo organizas los pdfs en estos directorios (partiendo de la carpeta donde tienes la BD)
\Informes PDF\Cliente1
\Informes PDF\Cliente2
\Informes PDF\Cliente...
Tan sólo has de modificar la asignación de la ruta. Por ejemplo, si en el formulario desde el que ejecutas el código tienes un campo con el nombre del cliente (txtCliente), te quedaría así:
RutaPDF = Application.CurrentProject.Path & "\InformesPDF\" & Me.txtCliente
Obviamente puedes hacerlo con otro campo (IDCliente) o cualquier combinación.
Si la carpeta del cliente no existe (puedes comprobarlo con la función Dir() ), la puedes crear con la función mkDir.
3º/ Si quieres aún así navegar y seleccionar la carpeta de destino, has de usar el objeto FileDialog (en la web de Neckkito tienes un ejemplo explicado sobre su uso), pero básicamente el proceso sería este:
a) Registras la referencia Microsoft Office xx.x Object Library
b) En un módulo independiente pegas esta función:
'--------------------------------------------------------------------------------------------
'Función para seleccionar una carpeta
'--------------------------------------------------------------------------------------------
Public Function fncSelectCarpeta() As String
'Creamos un control de errores
On Error GoTo sol_err
'Declaramos las variables
Dim fd As Object 'fd = FileDialog
Dim rutaIni As String
'Definimos la ruta inicial
rutaIni = Application.CurrentProject.Path
'Creamos el objeto FileDialog
Set fd = Application.FileDialog(msoFileDialogFolderPicker)
'Configuramos las características de nuestra ventana de diálogo
With fd
.Title = "Selecciona la carpeta"
.ButtonName = "Aceptar"
.InitialView = msoFileDialogViewList
.InitialFileName = rutaIni
'Detectamos el botón pulsado por el usuario
If .Show = -1 Then
'Asignamos a la función la carpeta seleccionada, convirtiéndola
'a un valor de tipo String
fncSelectCarpeta = CStr(.SelectedItems.Item(1))
Else
'Si se pulsa cancelar avisamos y salimos
MsgBox "Selección cancelada", vbExclamation, "CANCELADO"
Exit Function
End If
End With
Salida:
Exit Function
sol_err:
MsgBox "Se ha producido el error: " & Err.Number & " - " & Err.Description
Resume Salida
End Function
c) en tu código, la ruta la asignas así:
RutaPDF =fncSelectCarpeta()