Rutas de archivo con espacios

Pues tengo una base datos access y creo botones para abrir libros excel pero los que tienen espacios en el nombre o archivo no me los abre. Yo pongo esto:

Private Sub Comando2_Click()
Dim abrir As Long
abrir = Shell("excel.exe c:\ejemplosuma.xls", vbMaximizedFocus)
End Sub  

Si el archivo se llamara ejemplo suma no lo encuentra.

1 respuesta

Respuesta
1

Algunos archivos, los que tienen un nombre de más de 8 caracteres, tienen lo que se llama "nombre corto", para el sistema operativo los archivos se almacenan con un "nombre corto" y "con un nombre largo".

En este caso, el archivo:

ejemplo suma.xls

Su "nombre corto" es:

Ejempl~1.xls

Para revisar el "nombre corto," puedes ejecutar directo en MS-DOS la instrucción

dir ejem* /X

el resultado se ve así

Ahora para saber cuál es su "nombre corto" en VBA, aplica lo siguiente:

Private Declare Function GetShortPathName _
    Lib "kernel32" Alias "GetShortPathNameA" _
    (ByVal lpszLongPath As String, _
     ByVal lpszShortPath As String, _
     ByVal lBuffer As Long) As Long
Private Sub Comando2_Click()
'Mod.Por.DAM
    Dim temp As String * 250
    archivo = "c:\ejemplo suma.xls"
    corto = String(255, 0)
    Ret = GetShortPathName(archivo, temp, 164)
    corto = Replace(temp, Chr(0), "")
    abrir = Shell("excel.exe " & corto, vbMaximizedFocus)
End Sub

Saludos.Dante Amor

Si es lo que necesitas. Recuerda valorar la respuesta.

Hola gracias por la respuesta,pero no es la solución exacta ,ya que el aunque el nombre si lo cambio y pongo sin espacios funciona,pero si la ruta donde está el archivo tiene un espacio tampoco lo encuentra.

saludos y gracias

Deberás buscar el nombre corto también del directorio.

Si vas a abrir un archivo de excel, puedes usar directamente:

workbooks.open ruta & archivo

ruta puede ser:

ruta = "C:\mis documentos\archivos de trabajo\datos del dia\"

Archivo: "Este es un ejemplo de archivo con espacios.xls"

Gracias de nuevo pero creo soy muy novato, te pongo como dices tu en el ejemplo y me sale error 424 se espera un objeto, es una base de datos access y el botón de un formulario y quiero abrir cualquier archivo excel tengo dos en el escritorio para praccticar uno se llama "pedidos.xls" y otro "los pedidos.xls"

Esto es lo que puse al botón que llamo Pedidos ¿qué esta mal?

Private Sub PEDIDOS_Click()
workbooks.Open "C:\Users\MGS\Desktop\" & "PEDIDOS.XLS"

End Sub

Prueba así:

Private Sub PEDIDOS_Click()
Dim xls As Object
Set xls = CreateObject("excel.application")
xls.Visible = True
xls.Workbooks.Open ("C:\Users\MGS\Desktop\" & "PEDIDOS.XLS.xls")
End Sub

GRACIAS :)  funciona ,un pequeño detalle se abre en una ventana¿que tengo que añadir para que se abra maximizada?

saludos

Prueba así:

Private Sub PEDIDOS_Click()
Dim xls As Object
Set xls = CreateObject("excel.application")
xls.Visible = True
xls.Workbooks.Open ("C:\Users\MGS\Desktop\" & "PEDIDOS.XLS.xls")
xls.WindowState = -4137
End Sub

Recuerda valorar la respuesta

¡Gracias! PUSE EXCELENTE, creo es lo máximo que puedo poner.

Y de nuevo muchas gracias además por la rápido de tus respuestas.

Disculpa me apareció un improvisto, cuando le doy al botón la primera vez si se maximiza pero después de cerrar la base datos y abrirla me abre el excel pero en la barra de tareas del windows.

Espero me entiendas

Saludos

Busca en la red parámetros para esta instrucción

xls.WindowState = -4137

Prueba con diferentes para ver cuál es el que necesitas

Pues por más que busco no encuentro probé WindowState = xlMaximized 'Para que la ventana aparezca maximizada. Y nada.

¿De qué depende el parámetro? De version de windows o excel, igual estoy dicidiendo una tontería pero no encuentro nada en casi 2 horas :(

Saludos

Tal vez sea la versión de windows, tengo xp y office 2007 y me funciona

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas