Saludos!!!!!!!!!!
Continuamos con las sesiones dedicadas a Visual Basic para Excel. Esta sesión es un poco especial. Es la primera en la que voy a intentar responder a dudas que me han planteado dos personas en el Blog, Manuel y Javier.
De vez en cuando prepararé sesiones de este tipo con vuestras dudas y que desconectarán un poco del ritmo que lleva el curso de VBA para Excel que voy publicando. Esta sesión nos va servir para repasar algunos de los conceptos que se han comentado en las sesiones del Curso de VBA para Excel, pero también nos va permitir conocer cosas nuevas.
De vez en cuando prepararé sesiones de este tipo con vuestras dudas y que desconectarán un poco del ritmo que lleva el curso de VBA para Excel que voy publicando. Esta sesión nos va servir para repasar algunos de los conceptos que se han comentado en las sesiones del Curso de VBA para Excel, pero también nos va permitir conocer cosas nuevas.
Esto puede suponer un problema para los que estáis aprendiendo, ya que algunos de los temas que voy a comentar todavía nos faltan unas cuantas sesiones para llegar a ellos.
No voy a explicar todo lo que uso en el vídeo al 100%, algunas cosas necesitarían incluso más de una sesión para su explicación. Lo que voy hacer es dar solución a las dudas, o lo voy a intentar y de algunas de las herramientas que use en la sesión os daré pinceladas para que entendáis que hacen y podáis empezar a investigar un poco por vuestra cuenta.
Manuel, me planteo a grandes rasgos lo siguiente. Quería tener un documento de Excel y crear una copia de ese documento. Además viendo el código que me mando, parece que lo que quiere es coger el nombre que tendrá la copia de una celda y que este nombre sea una fecha. Esto creo que es lo que me pedía Manuel.
Javier de Perú, me pedía que le ayudara a realizar como una plantilla de una factura. Quiere por ejemplo rellenar la factura y que se guarde la factura rellenada pero el archivo original, la plantilla siga intacta para la siguiente factura. Además quiere ir numerando la factura consecutivamente y que esto se haga automáticamente. Esto creo que es lo que me pedía Javier.
Creo que esta sesión es muy interesante porque se tocan muchos conceptos relacionados con los objetos de Excel que se usan habitualmente por ejemplo el trabajo con libros, con hojas y con celdas. Vamos a desarrollar una Factura muy simple.
Todos mis vídeos son Gratis, pero si te gusta mi trabajo, puedes realizar una donación para que pueda continuar con este proyecto. Cualquier cantidad desde 1€/1$ es bienvenida. Gracias!!!!!!!!!!!!!!
Para seguir esta sesión podéis descargar el siguiente archivo que utilizo en el Vídeo.
Como siempre, aquí tenéis la información del vídeo, enlaces para ver los vídeos y comentarlo en el foro del Blog.
- Nombre: Curso Programación VBA Excel 2010: Ejercicio Práctico Factura.
- Nivel: Avanzado.
- Duración Total: 45m 51s.
- Duración Vídeo 1: 25m 51s.
- Duración Vídeo 2: 20m 00s.
Vídeo 1 de 1.
Nada más. La siguiente sesión la dedicaré a Word pero ya os aviso que tardará un poco. Voy a reorganizar algunas cosas del Blog y del Foro y tengo que dedicarle un poco de tiempo. Saludos a todos.
David... nuevamente interesante video. Tengo un problema un poco mas complejo, espero tengas tiempo de ayudarme a resolverlo. Yo trabajo con bases de datos grandes, y mi herramienta del dia a dia son las tablas dinamicas. Como tu sabes, tengo que actualizar la informacion de la base de datos, por lo menos una vez a la semana, y es aca en donde viene mi pregunta, yo necesito agregar campos personalizados que utilizo para mi analisis coemrcial, por decirte algo, con las 3 primeras letras del codigo de cliente lo segmento en un rubro, o si esta enciertos rangos de cantidades, lo coloco en otra clasificacion. Todo esto lo he logrado resolver con VBA y el grabador de macros, pero cuando intento conertir estas bases, y convertilas en tablas dinamicas, con los campos y caracteristicas que necesito, siempre me genera error y me detiene el proceso. He intentado una y otra vez con el grabador de macros, copio exactamente las sentencias, pero nada.
ResponderEliminarPregunta concreta: Como puedo crear y actulizar tablas dinamicas a paratir de VBA????
Gracias David!!!!
Carlos, si me puedes enviar el archivo y lo miro mejor. De todas las maneras a ver si tengo un momento y miro algo de lo que tengo para el curso relacionado con las tablas dinámicas. Si tienes problemas para enviarme el archivo por la información que contenga, mándamelo con información ficticia pero que se parezca a la que usas. Así me hare una idea de lo que quieres y además igual es algún pequeño detalle lo que da el problema.
ResponderEliminarSaludos.
hola David felicidades por el blog estoy aprendiendo muchisimo.
ResponderEliminarTengo un problema a la hora de guardar un documento con fecha, y la idea es que cree la fecha automaticamente en que se creo el documento, que eso no tiene mayor problema utilizando hoy(), pero si necesito abrir el documento para rectificarlo no me varie la fecha de creación.
Resumiendo creo un documento el dia 1 de agosto con la funcion hoy() y si lo abro el 4 de septiembre me aparecerá la fecha 4/09/2011 y a la hora de guardarlo no es la fecha de creación real es la fecha de la modificación.
gracias.
Gracias. Ahora mismo estoy en el pueblo de mi mujer un par de días. Cuando vuelva a Pamplona pensamos en esto. De todas las maneras cuando me preguntéis dudas, ayudaría mucho que me mandarais también el archivo, así se puede ver mejor como solucionarlo.
ResponderEliminareste es el código q he puesto, la celda en la q esta la fecha viene con formato de fecha, sería bueno, que en tu blog pusieras los códigos para poderlos copiar y evitar errores, o¿ lo haces para obligarnos a trabajar? desde luego haciendo le se aprende mas, un saludo y gracias, eres un crak
ResponderEliminarPrivate Sub cmdBorrarfactura_Click()
BorrarFactura
End Sub
Private Sub BorrarFactura()
Range("B1").ClearContents
Range("A6:D7").ClearContents
End Sub
Private Sub cmdGuardarFactura_Click()
GuardarFactura Range("E1"), Range("B1")
End Sub
Private Sub GuardarFactura(NumeroFactura As Integer, FechaFactura As Date)
Dim NuevoDocumento As Workbook
Dim Nombredocumento As String
'Dim Factura As Workbooks
Application.DisplayAlerts = False
Application.ScreenUpdating = False
Application.SheetsInNewWorkbook = 1
Set NuevoDocumento = Workbooks.Add
'Set Factura = Workbooks("Factura.xlsm")
Application.SheetsInNewWorkbook = 3
Nombredocumento = "Factura Nº" & NumeroFactura & ". " & Format(FechaFactura, dd - mm - yyyy) & ".xlsx"
NuevoDocumento.SaveAs Filename:=Workbooks("Factura.xlsm").Path & "\" & Nombredocumento
Workbooks("Factura.xlsm").Worksheets("Factura").Copy Before:=NuevoDocumento.Worksheets("Hoja1")
'Factura.Worksheets("Factura").Copy Before:=NuevoDocumento.Worksheets("Hoja1")
'NuevoDocumento .Worksheets("Factura").Copy Before:=NuevoDocumento.Worksheets("Hoja1")
NuevoDocumento.Worksheets("Factura").Shapes("cmdGuardarFactura").Delete
NuevoDocumento.Worksheets("Factura").Shapes("cmdBorrarFactura").Delete
NuevoDocumento.Worksheets("Hoja1").Delete
NuevoDocumento.Close SaveChanges:=True
'Set NuevoDocumento = Nothing
Range("E1") = Range("E1") + 1
BorrarFactura
Set NuevoDocumento = Nothing
End Sub
aunque firmamos los dos como anónimo no somos el mismo, ni creo q sea el mismo problema yo soy el del comentario de yuotuve, lo q pasa q no coge y por eso te lo he puesto aquí, no se podria hacer lo mismo pero guardando las facturas en word con formato de texto, ya que son solo para archivarlas, y asi ocuparía menos sitio?
ResponderEliminarHola
ResponderEliminarPrimero al primer anónimo, ya tengo localizado el problema, es en esta línea.
Nombredocumento = "Factura Nº" & NumeroFactura & ". " & Format(FechaFactura, dd - mm - yyyy) & ".xlsx"
Faltan las comillas dobles alrededor del formato de la fecha, quedaría así:
Format(FechaFactura, "dd-mm-yyyy")
También le he quitado los espacios que había entre los guiones, a mi me gusta más sin espacios, pero lo que daba el problema era que el formato que aplica la instrucción Format debe ir entre comillas dobles.
En cuanto a lo de obligaros a trabajar un poco si que es así, sobre todo para los que empezáis a programar, creo que es mejor que escribáis el código en lugar de copiar y pegar, jejejeje.
Ahora para el segundo anónimo.
ResponderEliminarSi que se podría hacer, de hecho es uno de los temas que tengo pensando tratar. El llevar información de Excel a Word. Quizás prepare una sesión como esta en la que no profundice al 100% en el tema todavía, pero así tengáis unas pistas para empezar en el tema.
Saludos.
problema solucionado, gracias, para mandarte los archivos para otar vez q utilizamos el correo electronico?
ResponderEliminarun saludo y reiterar las congratulaciones y el agradecimiento por el trabajo, creo q es el mejor blog para aprender todo claro y ordenado
Gracias. Si las próximas veces podéis preguntar aquí o en el Foro y me enviáis el archivo por correo electrónico.
ResponderEliminarSaludos.
Hola
ResponderEliminarLa persona que tenía este problema, si me manda el archivo con lo que tiene hecho mejor. Es que dependiendo de como lo tengas hecho se pueden llegar a diferentes soluciones.
"hola David felicidades por el blog estoy aprendiendo muchisimo.
Tengo un problema a la hora de guardar un documento con fecha, y la idea es que cree la fecha automaticamente en que se creo el documento, que eso no tiene mayor problema utilizando hoy(), pero si necesito abrir el documento para rectificarlo no me varie la fecha de creación.
Resumiendo creo un documento el dia 1 de agosto con la funcion hoy() y si lo abro el 4 de septiembre me aparecerá la fecha 4/09/2011 y a la hora de guardarlo no es la fecha de creación real es la fecha de la modificación.
gracias."
Saludos.
Gracias David y enhorabuena por el blog, te paso ha explicar mi problema, al guardar la factura, si alguno de los campos tiene una formula del tipo
ResponderEliminarSi (a2="";"";"Concatenar (A2;A4), la plantilla de la factura queda vacia pero el nuevo archivo en vez de poner la concatenacion pone #¡REF!, y copia la siguiente formula
=SI(#¡REF!="";"";CONCATENAR(#¡REF!;"/";#¡REF!)), en las celdas, un saludo
Hola
ResponderEliminarGracias por lo del Blog.
Si me puedes mandar tu archivo para encontrar el problema mejor. Ya comenté que este ejemplo dependiendo de las necesidades de cada uno, igual había que optar por otras solución o cambiar algún pequeño detalle. Mándamelo y lo miro.
Saludos.
Hola
ResponderEliminarYa se cual era el problema. Cuando copiabas la hoja al nuevo documento eliminabas los datos que esas fórmulas utilizaban para calcular los resultados. Esta línea:
NuevoDocumento.Worksheets("AnexoVIII").Range("G8:J60").Delete
La solución a la que he llegado que no se si te servirá es que después de realizar la copia de la hoja en el nuevo documento, hago una copia del rango en el que están esas fórmulas con los resultados.
Y a continuación la pego en las mismas celdas pero pegando solo los valores, los resultados. Es decir al pegar se quita la fórmula y se quedan solo los resultados. Quedaría así:
NuevoDocumento.Worksheets("AnexoVIII").Range("C13:C34").Copy
NuevoDocumento.Worksheets("AnexoVIII").Range("C13").PasteSpecial Paste:=xlPasteValues
NuevoDocumento.Worksheets("AnexoVIII").Range("G8:J60").Delete
Espero que te sirva. Te mando el archivo con el código.
Saludos.
gracias, sirve ,sirve, funciona, la cosa parece sencilla, cuando la sabes, pero las vueltas q había dado yo, poniendo codigo para ocultar filas y soluciones peregrinas, muchas gracias
ResponderEliminarMe alegro.
ResponderEliminarYo en los curso de VBA siempre digo lo mismo. Cuanto más sepáis del programa mejor, porque es lo que luego vais a poder utilizar desde código.
Saludos.
Sr.David você é o CARA bommmmmm!!!! de VBA e Excel
ResponderEliminarestou aprendendo muito com teus videos obrigado
tenho 66 anos ate 15-11 e comecei o estudo de excel agora. E sei que vou aprender mais com o Sr. muito grato meu E-mail é osvaldojuzenas@hotmail.com.br
Abraços de Osvaldo e de Todo o Brasil
Gracias por el comentario Osvaldo.
ResponderEliminarAsí da gusto seguir. Lo importante es tener ganas de aprender y a usted le sobran.
Saludos.
Saludos David
ResponderEliminarTe felicito haces un excelente trabajo en el blog, super didactico, pero quede con una duda que no encuentro como resolver. Como seria el codigo para que me imprima la factura creada antes de cerrala,ya que seria buena idea entregarsela al cliente :) porque desde la plantilla saldrian los botones
Gracias
ResponderEliminarEn cuanto pueda te lo miro y te pongo por aquí el código. Ahora mismo estoy configurando mi equipo, me costará unos días contestarte,
Saludos.
Hola David, como estas, la verdad que he visto tus videos y son muy didácticos, me ayuda mucho a repasar temas que había hecho en la universidad. En la parte que estoy mas interesado es en el tema de VBA, ya que por mi tipo de trabajo tengo que almacenar información en hojas de excel, pero la repetitividad en información y la posibilidad de errar es grande. De ser posible, agradeceré me brindes tu correo para ser mas claro con mi problema de excel y la solución que deseo dar. Gracias por tu tiempo. Saludos desde Lima-Perú. Julio César Campomanes
ResponderEliminarHola Julio Cesar
EliminarLa dirección la tienes arriba a la derecha, justo debajo de lo de donar. Pero ya te aviso que no tengo prácticamente tiempo para resolver dudas que se salgan de los vídeos. Me han dado más trabajo para Febrero y ahora mismo ya ando justo de tiempo incluso para preparar las sesiones del Blog.
Saludos.
Soy de mexico segui al pie de la letra el tuto de programacion "Factura" y al ejecutar guardar me sale un mensaje que es el sigueinte: ERROR DE COMPILACION NO SE ENCONTRO ARGUMENTO CON NOMBRE sera que me puedes ayudar esta muy bueno tu blog gracias por tus videos publicados me han servido de mucho te envio el codigo Gracias.
ResponderEliminarPrivate Sub cmdBorrarFactura_Click()
BorrarFactura
End Sub
Private Sub BorrarFactura()
Range("B8:E12").ClearContents
Range("B14").ClearContents
Range("G14").ClearContents
Range("A17:F33").ClearContents
End Sub
Private Sub cmdGuardarFactura_Click()
GuardarFactura Range("G8"), Range("G14")
End Sub
Private Sub GuardarFactura(NumeroFactura As Integer, FechaFactura As Date)
Dim NuevoDocumento As Workbook
'Dim Factura As Workbook
Dim NombreDocumento As String
Application.SheetsInNewWorkbook = 1
Set NuevoDocumento = Workbooks.Add
Application.SheetsInNewWorkbook = 3
'Set Factura = Workbooks("Factura.xlsm")
NombreDocumento = "Factura N " & NumeroFactura & ". " & Format(FechaFactura, "dd-mm-yyyy") & ".xlsx"
NuevoDocumento.SaveAs Filename:=Workbooks("Factura.xlsm").Path & "\" & NombreDocumento
'NuevoDocumento.SaveAs Filename:=Factura.Path & "\" & NombreDocumento
Workbooks("Factura.xlsm").Worksheets("Factura").Copy Before:=NuevoDocumento.Worksheets("Hoja1")
'Factura.Worksheets("Factura").Copy Before:=NuevoDocumento.Worksheets("Hoja1")
NuevoDocumento.Worksheets("Factura").Shapes("cmdGuardarFactura").Delete
NuevoDocumento.Worksheets("Factura").Shapes("cmdBorrarFactura").Delete
NuevoDocumento.Worksheets("Hoja1").Delete
NuevoDocumento.Close Savechange:=True
Range("G8") = Range("G8") + 1
BorrarFactura
Set NuevoDocumento = Nothing
'Set Factura = Nothing
End Sub
sera que lo elabore bien
Jorge de mexico te envia saludos y Que Dios te bendiga
Gracias. Mándame el archivo mejor, que no lo tengo a mano. Es de los que perdí en el disco duro estropeado. Además así encontraré el problema más rápido.
EliminarSaluodos.
Esta línea era el problema, se te había olvidado poner la "s" final en "SaveChanges". Habías puestos "SaveChange". Ya te lo he mandado corregido.
EliminarNuevoDocumento.Close Savechanges:=True
Saludos.
David, enhorabuena por tu excelente blog formativo. Soy José Luis y te sigo desde Málaga. Es de lo mejor que hay en la red en materia de formación. Sería posible aportar una clase o ejercicio sobre la programación de FORMULARIOS para introducir grandes cantidades de datos de forma más automatizada (p.e. formulario de facturación de proveedores y/o clientes).Lo considero un paso previo a otros ejercicios en los que ya nos enseñas cómo extraer datos e informes programando.
ResponderEliminarGracias mil de antemano.
Gracias Jose Luís
EliminarAsí da gusto. Si que es un tema que hay que tocar. Primero acabaré el ejercicio de Excel 2007 y después retomaré el tema de Excel 2010 y ahí puede que lo toque.
O bien, como prepararé otro ejercicio para la 2010 lo toque ahí. Quiero meter todo lo que he aprendido estos meses con la cinta de opciones y estoy ya pensando otro ejercicio.
Saludos.
Estimado David:
ResponderEliminarNuevamente agradeciendote por los conocimientos que he adquirido a través de tu blog.
Te hago una consulta sobre el tema de facturación en excel:
Tengo un procedimiento en excel 2003 que uso para imprimir la factura en PDF (Impresora PDF CREATOR).
Pregunto:
Existe un código genérico que pueda agregar al final del procedimiento para que vuelva a activarse la impresora predeterminada (liberando la impresora PDF CREATOR y que deje nuevamente a la impresora real como titular), sin tener que hacer referencia a la marca y el modelo de la misma.
Esto con el propósito de que si utilizo el libro en otros lugares, no tenga que reescribir el código para activar la impresora predeterminada con su nombre y su puerto.
De antemano muchas gracias y disculpa si no soy tan resumijdo en mis ideas.
Hola
EliminarPues la verdad es que yo no lo conozco. Además con la versión 2003 hace mucho que ya no trabajo y no te se decir.
Para eso son mucho más cómodas las versiones 2007 en adelante que permiten guardar archivos PDF sin usar la impresora. Pero me imagino que si usas la versión 2003 todavía será por que no puedes realizar el cambio a una versión superior.
De todas las maneras se me ocurre lo siguiente. Si has sido capaz de cambiar la impresora predeterminada a PDF Creator, antes de realizar el cambio, guarda la información de la impresora que estaba predeterminada.
A continuación haz el cambio para guardar en PDF y cuando acabes vuelve a la impresora predeterminada con la información que habías guardado previamente.
Igual estoy diciendo una tontería, pero es que no he necesitado hacer esto antes y no se si es posible.
Saludos.
Gracias David por responderme.
EliminarYo creo que es mejor actualizar a la versión de MS Office 2007 o 2010 y problema resuelto.
Nuevamente muchas gracias por la atención prestada.
OK, yo también lo creo. Pero hay veces que no depende de nosotros hacer el cambio.
EliminarSaludos.
Estimado David:
ResponderEliminarNuevamente te agradezco por tus conocimientos. Al fin Pude terminar un mini sistema de facturación e inventario. Gracias al código para guardar con número y fecha factura (que explicaste con lujo de detalles), mi trabajo a quedado de lujo.
Saludos desde Cali, Colombia
Me alegro!!!!! La idea de este blog es que aprendáis, no que os haga yo las cosas. Y si te he ayudado con mis vídeos misión cumplida.
EliminarSaludos.
Hola David, en verdad me resultaron muy utiles tus tutoriales para lo que yo manejo que son recibos y facturas, se agradece, tengo una duda en particular, cuando guarda la factura en el mismo directorio del archivo xlsm quisiera que me creara automáticamente una carpeta en este mismo directorio, por ejemplo que se llame "Facturas Emitidas" y que dentro de esta factura me guarde mi factura para visualizarla solamente e imprimirla, es decir no editarla, aqui se me ocurre dos métodos para hacer esto, el primero, que cuando me guarde la copia de la hoja en el nuevo archivo bloquee todas sus celdas y solo permita imprimirla. Y el segundo método se me ocurre que cuando guarde la copia del archivo lo haga automáticamente en PDF, de esta manera ya no sera editable. Espero puedas ayudarme con esto, y de nuevo te agradezco mucho tus video tutoriales, que la verdad están 100% comprensibles y entendibles.
ResponderEliminarSaludos
Hola
EliminarPara lo que tu quieres sería mejor guardarlo en PDF.
De todas las maneras ahora mismo estoy casi sin tiempo y para las dudas que se salen del contenido de los vídeos establecí unos costes para evitar avalancha de solicitudes, que por cierto estos últimos días se está produciendo, jejeje. En el siguiente enlace puedes leer más al respecto.
http://davidasurmendi.blogspot.com.es/p/contacta-con-david-asurmendi-ochoa.html
Saludos.
Estimado David ante todo dale mi norabuena por su ayuda en sus ejercicios de Excel y otros. Mi pregunta es la siguiente como puedo cambiar para que en vez que me guarde la factura como numero de factura y fecha me lo Guarde con el D.N.I. y la fecha de la factura gracias por todo José
ResponderEliminarNo es muy difícil modificar mi código para hacerlo. Suponiendo que el DNI esté en la celda D2, por ejemplo. Quedaría así.
EliminarNombredocumento = "Factura Nº" & NumeroFactura & ". " & Format(FechaFactura, "dd-mm-yyyy") & ". " & Range("D2") & ".xlsx"
Lo único que tienes que hacer es añadir la celda en la que está el Nif como lo he hecho yo.
Saludos.
hola David
EliminarSoy Miguel, en primer lugar mi agradecimiento por tus sabias lecciones.
intento hacer lo que propone Anónimo el (12 de abril 2013) con tu respuesta y me da un (error de compilación:el argumento no es opcional). te envio el codigo
Private Sub cmdBorrarFactura_Click()
BorrarFactura
End Sub
Private Sub BorrarFactura()
Range("A6:D7").ClearContents
End Sub
Private Sub cmdGuardarFactura_Click()
GuardarFactura Range("E1"), Range("B1")
End Sub
Private Sub GuardarFactura(NumeroFactura As Integer, FechaFactura As Date, B2 As Integer)
Dim NuevoDocumento As Workbook
'Dim Factura As Workbook
Dim NombreDocumento As String
Dim B2
Application.DisplayAlerts = False
Application.ScreenUpdating = False
Application.SheetsInNewWorkbook = 1
Set NuevoDocumento = Workbooks.Add
'Set Factura = Workbooks("Factura.xlsm")
NombreDocumento = " Factura Nº " & NumeroFactura & ". " & Format(FechaFactura, "dd-mm-yyy") & ". " & Range("B2") & ".xlsx"
NuevoDocumento.SaveAs Filename:=Workbooks("Factura.xlsm").Path & "\" & NombreDocumento
'NuevoDocumento.SaveAs Filename:=Factura.Path & "\" & NombreDocumento
Workbooks("Factura.xlsm").Worksheets("Factura").Copy Before:=NuevoDocumento.Worksheets("Hoja1")
'Factura.Worksheets("Factura").Copy Before:=NuevoDocumento.worhsheets("hoja1")
NuevoDocumento.Worksheets("Factura").Shapes("cmdGuardarFactura").Delete
NuevoDocumento.Worksheets("Factura").Shapes("cmdBorrarFactura").Delete
NuevoDocumento.Worksheets("Hoja1").Delete
NuevoDocumento.Close SaveChanges:=True
Range("E1") = Range("E1") + 1
BorrarFactura
Set NuevoDocumento = Nothing
'Set Factura = Nothing
Application.DisplayAlerts = True
Application.DisplayAlerts = True
Application.SheetsInNewWorkbook = 3
End Sub
te animo a continuar con esta labor.
Gracias.
un abrazo
En qué linea te da el error????
EliminarSaludos.
hola David. QUE RAPIDO.
Eliminaren:
Private Sub cmdGuardarFactura_Click()
GuardarFactura Range("E1"), Range("B1")
No te acostumbres por que no es lo normal ;)
EliminarCuando llamas al procedimiento GuardarFactura le pasas dos argumentos y en la declaración tiene tres. Hablo de memoria pero creo que en mi ejemplo le pasaba dos argumentos, la fecha y el número de factura.
O te sobra en la declaración uno o te falta en la llamada uno.
Saludos.
no me acostumbro, se que tienes poco tiempo. aprecio tus comentarios en lo que valen. Apúntate un chino. espero no ser muy pesado. cuando puedas podías concretar un poco mas la respuesta. Trato de hacer un sistema de facturación para un almacén de materiales de construcción propiedad de mi padre en el que cada cliente tiene distintas cuentas (obras). También me gustaría contactar contigo de forma mas directa, por correo electrónico, si es posible.
Eliminarmuchas gracias por contestar, si puedo hacer algo por ti, con gusto lo haré.
un abrazo.
PD
Eliminarlo que quiero que haga es poner el Nº de factura, Fecha, nombre del cliente obra e importe.
saludos
Miguel
En esta línea:
EliminarGuardarFactura Range("E1"), Range("B1")
Pasas dos argumentos al procedimiento GuardarFactura para que haga su trabajo. Que en principio deberían el número de factura y la fecha.
Pero en la declaración de ese procedimiento:
Private Sub GuardarFactura(NumeroFactura As Integer, FechaFactura As Date, B2 As Integer)
Tienes tres, ese B2 As Integer no se que es pero en la llamada al procedimiento no lo pones.
En cuanto a lo demás, mi correo está a la derecha... pero para todo lo que son consultas que se salen de los vídeos hay precio. Antes de liarte a hacer nada por tu cuenta mira si no te sale más rentable usar algo que ya exista, como FacturaPlus o similares. Al final las cosas personalizadas salen más caras.
Saludos.
Si quieres poner todo eso en el nombre del documento sólo tienes que poner cuatro argumentos en la declaración y en la llamada.
EliminarPrivate Sub GuardarFactura(NumeroFactura As Integer, FechaFactura As Date, NombreClientes As String, Precio As Currency)
Y en la lamada
GuardarFactura Range("E1"), Range("B1"), Range("C1"), Range("F20")
Los dos últimos ranges me los he inventado porque no se donde tendrás el nombre del cliente y el precio. Debes poner los correctos.
Saludos.
Y claro dentro del procedimiento GuardarFactura tendrás que cambiar alguna línea para que se usen esos datos al guardar el documento. Pero eso ya es tu trabajo.
EliminarSaludos.
tengo una pregunta que no tiene que ver con el tema pero quizá puedan ayudarme, trabajaba en mis macros con la ayuda de los vídeos de David y pues la macro q estaba desarrollando era algo importante para mi y no quería que nadie mas estuviera en capacidad de modificarla por lo que protegí el documento con una clave pero parece que la introduje mal y ahora no se como desbloquear el documento. Alguien sabe una manera efectiva de hacerlo? la clave es bastante segura, tiene letras en mayúscula minúscula números y caracteres.
ResponderEliminarDe antemano Gracias.
Por cierto Muchas Gracias a David, He aprendido Varias Cosas.
Pues la verdad es que no se si han cambiado las cosas, pero hasta hace poco la situación era esta.
EliminarSi has guardado con formato anterior a la 2007, es decir .xls si se puede. Si guardas con formato 2007 o posterior, es decir .xlsm, no se puede.
No se si esto último ha cambiado porque no lo he necesitado y no estoy muy informado, pero creo que no.
Saludos.
Muchas gracias.Más ejemplos de visual basic ,cuando puedasssss.
ResponderEliminarMe gustaría tener más ejemplos,ejercicios pero de forma de sesiones,tutorial,manual de los tuyos.Me gustán muchos y siempre aprendo algo nuevo.Gracias.
ResponderEliminarTiempo, tiempo y tiempo... Eso es lo que necesito y mientras mi situación económica siga como ahora es algo difícil conseguirlo. Que más quisiera yo que poneros un vídeo cada día. :(
EliminarSaludos.
Hola David, te scribo para agradercete tu tiempo y felicitarte por la claridad con la que explicas, he aprendido mucho...
ResponderEliminarMuchas gracias!!!!
EliminarSe agradece.
Saludos.
Hola tengo un error 9 subindice fuera del intervalo me podrias pasar tu codigo?
ResponderEliminarEste comentario ha sido eliminado por el autor.
EliminarNo lo tengo a mano. Creo que fue de los que murieron e un desastre de mi disco duro.
EliminarRevisa bien, los nombres de las hojas y de los libros que usas, seguro que ahí está el problema. Si no lo solucionas mandamelo, pero solo si es el mismo ejemplo. Si has hecho modificaciones o es para otra cosa que no sea aprender no me lo mandes. No soluciono dudas personales.
Saludos.
Hola David. Tengo una duda que necesito resolver. He visto tus vídeos programación VBA concretamente la plantilla de la factura y le estoy haciendo algunos cambios para adaptarla a mis necesidades. Desde la plantilla uso un botón para guardarla como Albarán y otro para guardarlo como factura desde la misma plantilla. Hago los cambios pertinentes en las celdas para que tenga el formato de factura pero no consigo guardarla directamente con un número de factura que he de introducir y dejar intacto el formato de la plantilla. ¿Cömo podría plantearlo?
ResponderEliminarA ver si con el vídeo de hoy encuentras respuestas a tus dudas.
EliminarSaludos.
Efectivamente he dado con la solución viendo el vídeo. Muchas gracias por el tiempo que dedicas a resolver las dudas de los que no sabemos.
ResponderEliminarGracias y un saludo
De nada!!!!!!!!!!!
EliminarHola David soy Vicente y ante todo darte las gracias por tu inversión en tiempo y esfuerzo en difundir tus conocimientos en estas aplicaciones. He seguido con entusiasmo estos videos pero no doy con la solución a un error "Error 1004 en tiempo de ejecución" "Error en el método 'Copy' de objeto 'Sheets' al darle al botón "Guardar" . En ocasiones me sale el error "Microsoft Excel dejó de funcionar" y en otras ocasiones no da problema (pero son las menos) y siempre al guardar el albarán. No sé si será abusar pero transcribo el código asociado por si ves el origen del problema. Estoy a punto de desistir. Gracias y saludos cordiales.
ResponderEliminarPrivate Sub GuardarAlb(NumeroAlbaran As Integer, nombre As String)
Dim NuevoDocumento As Workbook
Dim NombreDocumento As String
Application.DisplayAlerts = False
Application.ScreenUpdating = False
Application.SheetsInNewWorkbook = 1
Set NuevoDocumento = Workbooks.Add
Application.SheetsInNewWorkbook = 3
NombreDocumento = "Albarán Nº " & NumeroAlbaran & " - " & nombre & ".xlsm"
NuevoDocumento.SaveAsFilename:="C:\FACTURACION\ALBARANES\" & NombreDocumento, _ FileFormat:=xlOpenXMLWorkbookMacroEnabled
Workbooks("PLANTILLA.xlsm").Worksheets.Copy before:=NuevoDocumento.Worksheets("Hoja1")
NuevoDocumento.Worksheets("Principal").Shapes("cmdBorrarAlb").Delete
NuevoDocumento.Worksheets("Principal").Shapes("cmdGuardarAlbaran").Delete
NuevoDocumento.Worksheets("Principal").Shapes("cmdAbrir").Delete
NuevoDocumento.Worksheets("Principal").Shapes("cmdAltaClientes").Delete
NuevoDocumento.Worksheets("Principal").Shapes("cmdCopia").Delete
NuevoDocumento.Worksheets("Hoja1").Delete
NuevoDocumento.Close SAVECHANGES:=True
Range("F4") = Range("F4") + 1
Borrar_albaran
Set NuevoDocumento = Nothing
End Sub
-----------------------------------------------------------------------------
Private Sub cmdGuardarAlbaran_Click()
GuardarAlb Range("F4"), Range("L1")
End Sub
Hola soy Vicente. Repasando el código creo que el problema está en que la línea del copy before no había puesto el nombre de la hoja: "Workbooks("PLANTILLA.xlsm").Worksheets("Principal"). copy before.....". Gracias de todos modos y un saludo
EliminarDavid estoy llevandolo a cabo pero tengo un problema.
ResponderEliminarCuando intento utilizar el boton de guardar me da un error 9
Y me abre una hoja en blanco desapareciendo mis datos
David estoy llevandolo a cabo pero tengo un problema.
ResponderEliminarCuando intento utilizar el boton de guardar me da un error 9
Y me abre una hoja en blanco desapareciendo mis datos
A new tools for best accounting, budgeting, and bookkeeping I have found for my business downloadable at https://www.excel-accounting-budget-analysis.com You may also use these tools to prepare financial statement on annual basis and monthly basis and for economic analysis for current year budgeting as well.
ResponderEliminar