Inicio > Microsoft Excel > santiagomf > Utilizar datos introducidos mediante inputbox

Utilizar datos introducidos mediante inputbox

Experto:
Usuario:
Fecha: 20/11/2009
Valoración: Categoría: Microsoft Excel
20/11/2009
susanasg, usuario preguntando en Microsoft Excel
Usuario
Hola!
Estoy haciendo una macro que, entre otras, permite al usuario nombrar al archivo como quiera. Esto lo hago mediante un inputbox de esta forma (en este caso para cambiar el nombre de un archivo existente):
Dim nombrearchivo As String
nombrearchivo = InputBox("Por favor, introduzca el nuevo nombre del archivo.", "Insertar nuevo nombre de archivo", Nombre_sin_extensión)
'Y una vez introducido el nuevo nombre por el usuario, se lo cambio al archivo existente sin problemas'
Workbooks.Open Filename:="C:\Users\su\Desktop\Encuesta\Cuestionar io.xlsm"
ChDir "C:\Users\su\Desktop\Encuesta"
ActiveWorkbook.SaveAs Filename:= _
"C:\Users\su\Desktop\Encuesta\" + nombrearchivo + ".xlsm", FileFormat:= _
xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False
A partir de aquí, quisiera seguir trabajando con la macro haciendo referencia a ese nombre, y es aquí donde empieza a darme problemas en instrucciones como:
Workbooks("nombrearchivo").Sheets("Hoja3").Delete
Y lo mismo cuando quiero utilizar la ruta y nombre de un archivo seleccionado por el usuario:
Inicio:
Dim cierre As Boolean
cierre = Application.Dialogs(xlDialogOpen).Show
'El valor de cierre sera False si se cancela el cuadro de diálogo sin elegir un archivo, y True cuando el usuario sí ha realizado su elección'
If cierre = False Then
GoTo Inicio
End If
'Y se captura el nombre y ruta de acceso a este archivo elegido por el usuario'
Dim nombre As String
Dim ruta As String
nombre = ActiveWorkbook.Name
ruta = ActiveWorkbook.Path
Y otra vez me da error cuando intento referirme a este archivo a través de estas variables en cuanto deja de ser libro activo, por ejemplo, para borrarlo cuando ya he terminado de trabajar con él:
Kill "ruta\nombre"
Resumiendo (espero haberme explicado medianamente bien :P): ¿cómo hacer referencia a un archivo elegido por usuario (luego no conoceré a priori ni nombre ni ubicación del mismo) para trabajar con él una vez deja de ser libro activo?
Muchas gracias por la ayuda de antemano!!
20/11/2009
susanasg, experto respondiendo en Microsoft Excel
Experto
Me parece que tienes un ligero problema de base.
El problema que veo en tu código es que no distingues entre una variable de tipo texto (string) y lo que es un texto fijo.
Si tu tienes una variable llamada nombrearchivo cuyo contenido es 'libroDeJuan', cuando pones workBooks(nombrearchivo) te estás refiriendo al workbooks("libroDeJuan"), pero si pones workBooks("nombrearchivo") te refieres a un libro que se llama "nombrearchivo", y lógicamente no existe.
Si pones el nombre de la variable entre comillas, en lugar de usar el contenido de la variable estás poniendo un texto fijo.
Otro caso: pones Kill "ruta\nombre". Eso se refiere al fichero 'nombre' que está dentro de la carpeta 'ruta'. Lo que tu quieres poner es:
        Kill ruta & "\" & nombre
Fijate que construimos un texto con las dos variables e intercalamos la barra entre medias.
Por cierto, tu unes cadenas de caracteres usando el operador "+". En Visual Basic suele funcionar pero es aconsejable dejar ese operador para la suma matemática y utilizar el carácter "&" para concatenar cadenas.
Espero haberme explicado bien.
Un saludo
20/11/2009
susanasg, usuario preguntando en Microsoft Excel
Usuario
Pues si, más que ligero, tengo un importante problema de base. De hecho me metí en estas historias hace menos de un mes, y ya se ve que no es lo mío jeje.
Muchisímas gracias por la explicación, tomo nota.
Un saludo!
Enlaces patrocinados