UniversoExcelForo

Respuesta a consultas.
Fecha de creación: 09.Abril.2012

Fundadores: Wibly,Tyno,Servando,Sakkar,Rosendo2,RMaximo,Railar,Mcoronel,Ioyama,Igtelo,Hugotron,Drochar,Dedos,Alberto,Adolfo

No se pueden hacer consultas de Excel o VBA por mensaje privado.
Utiliza el botón buscar del foro y te ahorras tiempo para obtener "ayuda".

No estás conectado. Conéctate o registrate

Ver el tema anterior Ver el tema siguiente Ir abajo  Mensaje [Página 1 de 1.]

dlinchao


Buenas tardes, alguien podría ayudarme con este código, lo he encontrado en internet y realiza casi lo que necesito, pero al momento de guardar no sé dónde me envía el archivo y tampoco si me guarda solo la hoja copia sin el código fuente que es realmente lo que ando buscando.

Si alguien me puede decir si el error está en la ruta, oh que es lo que estoy haciendo mal.
codigo macro
Sub Button905_gerneras()
Dim s As Integer
If s = ctrl + s Then
ThisWorkbook.Save
Dim NombreFichero As String
Dim Fecha As String
NombreFichero = "salida #:" 'A1 corresponde a la celda con el nombre de fichero"
Selection.Copy
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Application.CutCopyMode = False
   
Fecha = Format(f11, Range("n11")) 'Puedes cambiar el formato a tu gusto
MsgBox " " & NombreFichero & Range("n11") & " guardado"
Range("e20:j27").Select '-> Escribe aqui el rango de celdas que quieres borrar
Selection.ClearContents '-> Esta instruccion borra el contendido de las celdas.
Range("e20:j27").Select '-> Escribe aqui el rango de celdas que quieres borrar
Selection.ClearContents '-> Esta instruccion borra el contendido de las celdas.
Range("n11").Select
ActiveCell.FormulaR1C1 = Range("n11").Value + 1
Range("n11").Activate


End If
End Sub


gracias.

tyno


Hola dlinchao.
No se si ya has resuelto tu problema porque veo que esta como resuelto el tema, pero por las dudas te comento que ese código de macro no te guarda el archivo en ninguna parte en especial lo único que hace es guardar los cambios hace un "Guardar o Save" no un  "Guardar como o Save as" por eso tiene esta instrucción:
ThisWorkbook.Save


Luego de guardar sigue corriendo la macro y hace algunos procedimientos más en la Hoja.


Saludos

dlinchao


Hola tyno, gracias amigo por la aclaración eso no lo sabía porque no soy bueno con los macros, pero aún no he solucionado mi problema mala mía si el tema se ve como cerrado eso es que también soy Nuevo en el foro.

Podrías brindarme alguna solución para que se me guarde el archive en esta dirección C:\Users\Inventario\Desktop\CONTROL\CONTEOS

Te lo agradezco desde ya amigo.

 

salu2 

tyno


Lo mejor para este caso es que uses la grabadora de macros en la pestaña de Programador,
Entonces en tu archivo ejecutas el botón de grabar  macro y luego del asistente que te indica como se va a guardar la macro ,  lo que haces es un Guardar como o Save as de tu archivo (siempre en modo grabación), te aparece el explorador de Windows para guardar como, seleccionas el destino donde quieres guardar el archivo y una vez que terminaste de Guardar como, detienes la grabación de la macro, abres el editor de macros con Alt+F11 y vas al modulo donde se guardo la macro que acabas de grabar, si  no tenias ninguna macro grabada entonces vas a ver a la izquierda del editor una carpeta llamada Módulos y dentro de esta el Modulo1, abres el Modulo1(o el que sea) dentro vas a ver el código que se generó con la grabación de la macro. Este código contiene la instrucción de guardar mas la ruta donde se guardo el archivo algo parecido a esto:

ActiveWorkbook.SaveAs Filename:= _
        "C:\Users\Inventario\Desktop\CONTROL\CONTEOS ..."

Puede variar dependiendo del Windows que tengas, pero creo te vas a dar cuenta de lo que te estoy indicando. Copias ese código y lo pegas en el código que me has mostrado al principio:

puede ser asi:

Sub Button905_gerneras()
Dim s As Integer
If s = ctrl + s Then
ActiveWorkbook.SaveAs Filename:= _
        "C:\Users\Inventario\Desktop\CONTROL\CONTEOS ..."                     
Dim NombreFichero As String
Dim Fecha As String
NombreFichero = "salida #:" 'A1 corresponde a la celda con el nombre de fichero"
Selection.Copy
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Application.CutCopyMode = False
   
Fecha = Format(f11, Range("n11")) 'Puedes cambiar el formato a tu gusto
MsgBox " " & NombreFichero & Range("n11") & " guardado"
Range("e20:j27").Select '-> Escribe aqui el rango de celdas que quieres borrar
Selection.ClearContents '-> Esta instruccion borra el contendido de las celdas.
Range("e20:j27").Select '-> Escribe aqui el rango de celdas que quieres borrar
Selection.ClearContents '-> Esta instruccion borra el contendido de las celdas.
Range("n11").Select
ActiveCell.FormulaR1C1 = Range("n11").Value + 1
Range("n11").Activate


End If
End Sub


Luego debrías probar de ejecutar la macro completamente a ver si todo funciona, de ser así Excel te va a preguntar si deseas reemplazar el archivo que ya tienes en el destino con el mismo nombre. Saludos

dlinchao


Excelente  hermano hice lo que me indicaste y funciona muy bien estamos avanzando, ya se guarda en la carpeta que le asigne. Solo dos detalles más y quedaría perfecto. Necesito  que cuando se guarde sea de esta manera, salida 001 guardado, salida 002, guardado esto  cada vez que le doy a guardar, osea que no me reemplace el archivo  porque lo que quiero es tener un historiar de todas las salidas que haga. También que esta copia que se guarda solo sea l ahoja de salida sin macros ni nada.

Disculpa que a lo mejor no fui muy claro con todas mis necesidades, espero puedas seguir ayudándome .

Gracias de nuevo.

tyno


Bueno, ahora lo que vas a hacer es grabar nuevamente otra macro porque el proceso es un poco disitinto, siguiendo estos pasos:
1 Grabar Macro
2 Seleccionar la Hoja
3 Copiar la selección
4 Abrir un nuevo libro
5 Seleccionar la celda A1 del nuevo libro
6 Pegar solo valores
7 Sin salir de la celda A1 Pegar formatos
8 Guardar como (en la ruta que tienes establecida)
9 Cerrar el libro que acabas de Guardar como
10 Detener la macro

Luego, al igual que antes vas  a copiar el código grabado y lo vas  a poner en reemplazo del anterior entre las instrucciones ScreenUpdating, además vamos a agregar un cuadro para ingresar la numeración 001 al nombre del archivo salida, por lo tanto el código te va a quedar así:


Sub Button905_gerneras()
Dim s As Integer
If s = ctrl + s Then

a = InputBox("Ingresar Numero de Archivo " & Chr(13) & "Ejmplo:001,002,etc", "Numero")
If a = "" Then Exit Sub

Application.ScreenUpdating = False

'linea código grabado
'linea código grabado
'linea código grabado
ActiveWorkbook.SaveAs Filename:= _
        "C:\Users\Inventario\Desktop\CONTROL\CONTEOS\Salida " & a & ".xlsm"

'...
 Application.ScreenUpdating = true
               
Dim NombreFichero As String
Dim Fecha As String
NombreFichero = "salida #:" 'A1 corresponde a la celda con el nombre de fichero"
Selection.Copy
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Application.CutCopyMode = False
   
Fecha = Format(f11, Range("n11")) 'Puedes cambiar el formato a tu gusto
MsgBox " " & NombreFichero & Range("n11") & " guardado"
Range("e20:j27").Select '-> Escribe aqui el rango de celdas que quieres borrar
Selection.ClearContents '-> Esta instruccion borra el contendido de las celdas.
Range("e20:j27").Select '-> Escribe aqui el rango de celdas que quieres borrar
Selection.ClearContents '-> Esta instruccion borra el contendido de las celdas.
Range("n11").Select
ActiveCell.FormulaR1C1 = Range("n11").Value + 1
Range("n11").Activate


End If
End Sub

Observa que en la linea donde va a estar la instrucción Save as he concatenado el nombre del archivo "Salida"+ a + extensión, siendo "a" la variable que toma el valor que hemos ingresado en el  inputbox y la extension ".xlsm". Por lo tanto deberías copiar este código, insertar el codigo que te he indicado grabar y modificar la linea Save as como esta en el ejemplo. Saludos

dlinchao


Hola tyno nuevamente, gracias por tu paciencia he realizado la acción que me dijiste pero me sale un cuadro pidiendo que meta el número.  El código  a= InputBox("Ingresar Numero de Archivo " & Chr(13) & "Ejmplo:001,002,etc", "Numero")
If a = "" Then Exit Sub es el que hace que me salga el cuadro de meter el número, pero necesito que coloque el número que tiene la salida en ese momento de forma automática. La cosa es que este archivo lo usaran personas que no tienen conocimiento de informática y por eso quiero que sea de manera automática todo. Si pudiéramos conseguir que se guarde el número de salida en la dirección de la carpeta establecida y que me coloque en la hoja original un número siguiente quedando asi lista para realizar otra salida, eso fuera perfecto.



Gracias nuevamente por las molestias que te tomas, créeme que aunque no he conseguido todo lo que necesito he aprendido mucho con tus instrucciones.



Espero tu respuesta.



Salu2 Laughing 

tyno


Entiendo lo que estas necesitando, el tema que el numero del archivo tiene que estar registrado en alguna parte de la Hoja Excel de manera que la macro pueda encontrar cual fue el último numero registrado  y luego incrementarlo a la hora de guardar la copia. Por eso te pregunto ¿en que celda de la Hoja te parece que podría quedar registrado el numero sin que afecte el diseño de tu archivo? Esta celda puede estar oculta o fuera del rango visible del diseño, por ejemplo AAA1, etc

dlinchao


hola amigo, tengo una celda que tiene esta accion en este caso la (n11) pero no me hace nada, a lo major estoy hacienda algo mal en la macro que no lo reconoce. te adjunto el archivo que tengo el cual mas oh menos hace lo que quiero, este macro es antes de que me dieras tu idea el cual cambia el numero y todo, pero no lo guarda.

mediafire.com download/5u5b6dk5ae5n79r/SALIDA_PRUEBA.xls
 
 a lo major con este archivo podemos solucionar el problema.

gracias de antemano.
saludos

tyno


Hola dlinchao.
Te paso el archivo con la modificación en la macro para que se incremente el numero del archivo luego de guardar. Es decir el archivo se guarda con el numero que se encuentra al momento de efectuar el guardado luego se incrementa. Después deberías adaptar el código grabado para guardar el archivo con el nombre salida + numero + extensión. Esto creo que lo habías entendido, por lo que veo como esta dispuesto tu código se me ocurre que dicho código grabado tendría que ir aquí:

Sub Button905_gerneras()
Dim s As Integer
If s = ctrl + s Then
ThisWorkbook.Save

Dim NombreFichero As String
Dim Fecha As String
NombreFichero = "salida:" 'A1 corresponde a la celda con el nombre de fichero"
ruta = "C:xxxxxxxxx"

'código grabado'


....

Cualquier cosa por aqui estaremos. Saludos
Archivos
SALIDA PRUEBA.zip
No tienes los permisos para descargar los archivos.
(37 KB)

dlinchao



Hola tyno, perdóname que al parecer con tantos intentos me he vuelto un lio porque no entendí una parte de lo que me explicaste, este archivo que me envías muy bien hace lo que dices guarda con el número que se encuentra al momento de efectuar el guardado luego se incrementa. Pero la otra parte entiendo que es hacer un guardar como oh save as, pero esta es la parte que me guarda el archivo con un nombre especifico, osea el nombre que le puse en el gravado del macro y esto no me permite que siempre sea salida 001, salida 002 y sucesivamente. Cuando le gravo un código de la ruta donde debe guardar no me funciona correctamente. si estoy haciendo algo mal te pido que lo pruebes en:cry:  tu maquina haver que tal funciona.

Gracias hermano por la paciencia.

Saludos

tyno


Hola dlinchaho.
El proceso de grabar una macro con los pasos que te he indicado es solo en primera instancia para obtener el código exacto para crear un nuevo archivo donde va copiada la Hoja SALIDA y  la ruta donde se guarda como el archivo. Una vez que obtienes esto obviamente si lo dejas como al código grabado siempre vamos a Guardar como un archivo con el mismo nombre el cual Windows nos pedirá si queremos reemplazarlo. Has la grabación como te lo indique anteriormente, y me pasas el código grabado, antes que nada verifica que no tengas que llegar a reemplazar algun archivo guardado con el mismo nombre, luego voy a intentar adaptar el código que me pases. Saludos

dlinchao


buenas noches tyno gracias nuevamente por contestar y alcararme esa parte
he realizado el grabado del macro como me indicaste esta vez lo he hecho de dos formas, 1. es el guardado que hace la copia de la hoja en otro libro y el Segundo es la ruta de guardar como:

te paso los dos codigos para que elijas el que creas mejos y mas conveniente.

1-
Sub ruta_a_guardar()
'
' ruta_a_guardar Macro
'

'
    Range("C8:P28").Select
    Selection.Copy
    Application.CutCopyMode = False
    Range("F21:J21").Select
End Sub


2-
Sub guardar_como_rutafija()
'
' guardar_como_rutafija Macro
'
'
    ChDir "C:\Users\Inventario\Desktop\CONTROL\Salida de Almacen"
    ActiveWorkbook.SaveAs Filename:= _
        "C:\Users\Inventario\Desktop\CONTROL\Salida de Almacen\SALIDA PRUEBA.xls", _
        FileFormat:=xlExcel8, Password:="", WriteResPassword:="", _
        ReadOnlyRecommended:=False, CreateBackup:=False
    Range("F21:J21").Select
End Sub

buenas noches amigo
saludos.

tyno


Hola dlinchao.
Te envío el archivo con la adaptación de la macro que has grabado al botón  GENERAL SALIDA.
Prueba si funciona, recuerda que el numero del archivo se incrementa luego de guardar.

De paso te consulto por una linea del código que tienes para el botón GENERAL SALIDA:  

Fecha = Format(f11, Range("n11")) 'Puedes cambiar el formato a tu gusto '

A primera vista parece que esta linea no cumple ninguna función. Te comento esto porque si es así puedes eliminarla de tu código para que quede más prolijo.Saludos
Archivos
Copia de SALIDA PRUEBA.zip
No tienes los permisos para descargar los archivos.
(36 KB)

dlinchao


Buenos dias tyno

exelente, justamente lo que me faltaba, me funciona muy bien con los cambios que hiciste, te gradezco muchisimo la ayuda y la paciencia con este tema. te mereces un 10. he seguido tu consejo de borrar la linea que no me estaba hacienda nada en el codigo. Very Happy 

te comento que voy abrir otro tema para una ultima accion que me falta para terminal con este archivo con respect a unaa suma.

gracias mil tyno.
un saludo.

tyno


Bueno, me alegro que resultara. Saludos

Ver el tema anterior Ver el tema siguiente Volver arriba  Mensaje [Página 1 de 1.]

Permisos de este foro:
No puedes responder a temas en este foro.