Excel: crear archivo en un directorio determinado

Hola Valedor:
No he podido resistir la tentación de y tuve que probar la respuesta que me facilitaste, me desplacé al trabajo (y eso que estoy de vacaciones) para poder abrir el programa y desarrollar la macro.
Tu explicación fue perfecta (hasta para mi que soy un profamo en esto de las macros, me resultó fácil), no obstante cometí un pequeño desliz al formular la pregunta. Decía:
" Así mismo desearía que se me creara un archivo, en un directorio determinado, con el nombre de la fecha introducida y que este archivo sea con el que vamos a trabajar".
Pues bien, lo que en realidad deseaba es que se generara u archivo, en un directorio determinado, con el nombre de la fecha introducida, pero que este archivo sea el que abrí ( lo que necesito es trabajar con el formato de hoja que abrí) y al mismo tiempo siga activo.
No se si consigo explicarme.
Nuevamente gracias y perdona mi torpeza.

1 Respuesta

Respuesta
1
Como que no entendí, quieres CREAR un archivo, pero que este sea el que ABRAS, ¿solo quieres dejar activo el libro que abriste, desde donde se ejecuta la macro?, si es así, tan solo agrega la linea después de los asteriscos
'Lo guardo en la celda A3
Range("A3").Value = Val(strNum)
'*************************
ThisWorkbook. Activate
'Libero la memoria usada
Set wbNuevo = Nothing
Creo que no consigo explicarme correctamente.
Lo que deseo es que al abrir una hoja (la cual ya tengo hecha), ésta (la que esoy abriendo) se me guarde automáticamente en el directorio que yo especifique y con nombre de archivo que será la fecha que introduje al abrir dicho hoja.
Feliz año 2002.
Como que ya me perdí un poquito, veamos...
Tienes un archivo "preformateado"
Al abrir este archivo quieres que te pregunte una fecha
Quieres que con esta fecha, "copie" una hoja de este libro y la ponga en un directorio predeterminado, con el nombre de la fecha que se introdujo el usuario
Que este libro quede activo...
¿Es así..?
Exactamente, eso es lo que desearía hacer.
El código es prácticamente el mismo, solo con un pequeño cambio, pero te pongo todo de nuevo, no te me pierdas en el y te agradecería finalizar la pregunta, claro, si ya no tienes dudas...
Private Sub Workbook_Open()
Dim strFecha As String
Dim strRuta As String
Dim strNum As String
Dim wbNuevo As Workbook
'Ruta donde quiero el archivo
strRuta = "C:\Mis documentos\"
'Solicito la fecha
strFecha = Trim(InputBox("Introducir la fecha", "Fecha"))
'Compruebo que sea una fecha
If IsDate(strFecha) Then
'Le doy formato a la fecha como yo quiera
strFecha = Format(strFecha, "dd-mm-yy")
'Contruyo el nombre del archivo con la fecha y la ruta completa
strRuta = strRuta & "Archivo_" & strFecha & ".xls"
Set wbNuevo = Workbooks.Add
'Copio la hoja que me interesa
ThisWorkbook.Worksheets("Mi hoja").Copy before:=wbNuevo.Worksheets(1)
'Guardo el libro en la ruta especificada
wbNuevo.SaveAs strRuta
'Agrego al fecha a la celda A1
Range("A1").Value = CDate(strFecha)
'Solicito el primer numero
strNum = Trim(InputBox("Introducir numero", "Numero 1"))
'Lo agrego a la celda A2
Range("A2").Value = Val(strNum)
'Solicito el segundo numero
strNum = Trim(InputBox("Introducir numero", "Numero 2"))
'Lo guardo en la celda A3
Range("A3").Value = Val(strNum)
'Activo el nuevo libro
wbNuevo.Activate
'Libero la memoria usada
Set wbNuevo = Nothing
Else
'Si la fecha es incorrecta, informo al usuario, existe la
'posibilidad de "obligar" al usuario a introducir una fecha
'valida y no dejarlo pasar hasta que lo haga
MsgBox "Fecha incorrecta"
End If
End Sub
Hola.
Decirte que al abrir la hoja me da el siguiente error:
"Se ha producido el error '9' en tiempo de ejecución:
El subíndice está fuera del intervalo."
Y este error me lo da en la línea de VB:
ThisWorkbook.Worksheets("Mi hoja").Copy before:=wbNuevo.Worksheets(1)
¿Se puede hacer algo?
Ten presente que de VB no tengo ni la más remota idea.
Un saludo.
ThisWorkbook.Worksheets("Mi hoja").Copy before:=wbNuevo.Worksheets(1)
Solo cambia donde dice "Mi hoja", por el nombre de la hoja que quieres copiar, por ejemplo si tu hoja se llama Datos, quedaría así...
ThisWorkbook.Worksheets("Datos").Copy before:=wbNuevo.Worksheets(1)
Hola Valedor.
Ante todo quiero disculparme por el tiempo que te estoy haciendo perder.
Dicho esto voy al grano.
ThisWorkbook.Worksheets("Datos").Copy before:=wbNuevo.Worksheets(1)
Sigo teniendo el mismo problema que antes, pues como te pedía con anterioridad el nombre de la hoja que deso copiar es la que se genera con el nombre de la fecha, la que introduje en el momento de abrirla.
Un saludo.
No, lo que tu me pediste generar fue un "libro", un archivo con la fecha, no una hoja, y bueno, creo que si pudieses ser mucho más explicita seria mejor, tal vez hay alternativas a lo quieres...
Tienes razón. Quizás no sepa expresarme correctamente, voy a intentarlo por última vez.
En la siguiente dirección de mi disco duro tengo un archivo de excel:
C:\datos\excel\diario.xls
Deseo abrir "diario.xls" para trabajar con él. Al abrirlo deseo que me solicite la fecha y todo lo demás que te había pedido.
También deseo que en el momento de abrirlo se me guarde en:
c:\datos\copias\fecha-introducida.xls.
Donde fecha_introducida sea la fecha que introduje con anterioridad.
Así mismo deseo que me quede activo con el nombre de la fecha introducida.
Un saludo.
De acuerdo, solo que no me cuentas que has intentado, si has probado el código, te soy sincero, no esperos que te lo resuelva yo todo, es mi deseo ayudar pero también que participen, el código que te he dado casi resuelve todo lo que quieres, pero hay que estudiarle un poquito nada más...
Comprendo perfectamente tu desaliento, pero tienes que comprender que si solicito ayuda es porque no sé o no consigo descifrar los códigos de VB, no obstante te doy las gracias por todo el trabajo que te hice realizar, aunque no me sirva de nada, de todas formas voy a valorarlo con la puntuación máxima porque considero que todo esfuerzo tiene que ser recompensado como se merece.
Nuevamente te doy las gracias y te ruego disculpes mi ignorancia (en esto del VB).
Un saludo

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas