Automatizacion con excel |
Responder |
Autor | |
01loko
Colaborador Unido: 17/Agosto/2017 Localización: Santander Estado: Sin conexión Puntos: 807 |
Tema: Automatizacion con excel Enviado: 20/Febrero/2021 a las 12:44 |
Saludos de nuevo Creo un fichero, le doy el formato correcto, lo guardo y funciona perfecto, pero si vuelvo a hacerlo seguido me reporta un error: Se ha producido el error '1004' en tiempo de ejecución: Error en el método 'range' del objeto '_global' entiendo que tiene que ver con que no se cierra bien o deja abierto algo (mas por intuición que otra cosa). ¿Alguien me puede echar una mano? Gracias por anticipado P.D.: el código es muy largo para plantarlo aquí, así que hice un ejemplo (Bajar) |
|
Recordar de que soy nuevo y estoy aprendiendo.
|
|
prga
Moderador Unido: 16/Noviembre/2004 Localización: España Estado: Sin conexión Puntos: 3523 |
Enviado: 21/Febrero/2021 a las 10:15 |
hola.
Prueba colocando delante de todos los "range", "activecell", "selection", "activewindows", "activesheet", "activeworkbook",...... el xlapp. o sea xlapp.selection.... Por otra parte, al final del código pon el Set xlApp = Nothing, si no es así, "matas" la variable y a partir de ahí la cosa puede fallar. Quda mas o menos así: xlApp.ActiveWorkbook.Close xlApp.Quit Set xlApp = Nothing Al menos a mí con el office 19 me ha funcionado. Espero que ayude a resolver la duda Ya comentas Un saludo a todos
|
|
01loko
Colaborador Unido: 17/Agosto/2017 Localización: Santander Estado: Sin conexión Puntos: 807 |
Enviado: 21/Febrero/2021 a las 11:30 |
Muchas gracias: ¡POR FIN....FUNCIONA!
Ahora me gustaría la explicación: Entiendo que, si no hago referencia al objeto "xlapp", alguna cosa se queda abierta al cerrar el objeto, por lo que la segunda vez casca. si no es así, por favor explica el motivo. Mil gracias, llevaba un tiempo con ello. P.D. Podéis cerrar el hilo
|
|
Recordar de que soy nuevo y estoy aprendiendo.
|
|
AnSanVal
Ver perfil usuario
Enviar mensaje privado
Ver los mensajes del usuario
Visite la página de los usuarios
Añadir a la lista de amigos
Administrador Unido: 16/Marzo/2005 Localización: España Estado: Sin conexión Puntos: 5970 |
Enviado: 21/Febrero/2021 a las 12:36 |
«Santa grabadora» ayuda y mucho, pero... incluye código innecesario (por si acaso) ... .TintAndShade = 0 ... la selección de celdas... Range("B" & inicio_1 + 9 & ":G" & inicio_1 + 9).Select Selection.Borders(xlDiagonalDown... ... en la práctica no es necesario, ... etc. Por ejemplo; donde tienes... Selection.Borders(xlInsideHorizontal).LineStyle = xlNone Range("B" & inicio_1 + 9 & ":G" & inicio_1 + 9).Select Selection.Borders(xlDiagonalDown).LineStyle = xlNone Selection.Borders(xlDiagonalUp).LineStyle = xlNone With Selection.Borders(xlEdgeLeft) .LineStyle = xlContinuous .ColorIndex = xlAutomatic .TintAndShade = 0 .Weight = xlMedium End With With Selection.Borders(xlEdgeTop) .LineStyle = xlContinuous .ColorIndex = xlAutomatic .TintAndShade = 0 .Weight = xlMedium End With With Selection.Borders(xlEdgeBottom) .LineStyle = xlContinuous .ColorIndex = xlAutomatic .TintAndShade = 0 .Weight = xlMedium End With With Selection.Borders(xlEdgeRight) .LineStyle = xlContinuous .ColorIndex = xlAutomatic .TintAndShade = 0 .Weight = xlMedium End With With Selection.Borders(xlInsideVertical) .LineStyle = xlContinuous .ColorIndex = xlAutomatic .TintAndShade = 0 .Weight = xlMedium End With Selection.Borders(xlInsideHorizontal).LineStyle = xlNone With Selection.Interior .Pattern = xlSolid .PatternColorIndex = xlAutomatic .ThemeColor = xlThemeColorDark1 .TintAndShade = -0.249946592608417 .PatternTintAndShade = 0 End With ... te bastaría depurarlo así... With Range("B" & inicio_1 + 9 & ":G" & inicio_1 + 9) .Borders(xlEdgeLeft).LineStyle = xlContinuous .Borders(xlEdgeTop).LineStyle = xlContinuous .Borders(xlEdgeBottom).LineStyle = xlContinuous .Borders(xlEdgeRight).LineStyle = xlContinuous .Borders(xlInsideVertical).LineStyle = xlContinuous .Interior.Pattern = xlSolid .Interior.ThemeColor = xlThemeColorDark1 .Interior.TintAndShade = -0.249946592608417 End With ... para obtener el mismo resultado. ►Yo trabajaría con una plantilla que integrase ya los formatos necesarios (incluso los textos fijos) y me evitaría construirlos cada vez. |
|
Saludos desde Tenerife.
|
|
xavi
Ver perfil usuario
Enviar mensaje privado
Ver los mensajes del usuario
Visite la página de los usuarios
Añadir a la lista de amigos
Administrador Terrassa-BCN Unido: 10/Mayo/2005 Localización: Catalunya |||| Estado: Sin conexión Puntos: 14720 |
Enviado: 21/Febrero/2021 a las 16:23 |
Coincido plenamente con Antonio: la grabadora va de miedo... en los 2 sentidos. Nos muestra el código que hace lo que hemos dicho... y lo que no hemos dicho. Así que hay que separar el grano de la paja y quedarnos con la esencia. Aun así, no siempre muestra la forma más eficiente. Que conste que no he descargado el ejemplo pero creo que, si lo que se desea es pintar todos los bordes, podría ser un pelín más cortito: Y si, como parece, no se desean los bordes interiores horizontales, bastaría con ponerlos en xlNone Range("B" & inicio_1 + 9 & ":G" & inicio_1 + 9).Borders(xlInsideHorizontal).LinesStyle = xlNone En resumen, si la propiedad Borders de un objeto Range no indica específicamente uno de ellos, se asumen todos (excepto los diagonales). Eso lo vi tiempo atrás en otro foro y, curiosamente, la ayuda de Excel no lo menciona. Un saludo |
|
Responder | |
Tweet
|
Ir al foro | Permisos de foro Usted No puede publicar nuevos temas en este foro Usted No puede responder a temas en este foro Usted No puede borrar sus mensajes en este foro Usted No puede editar sus mensajes en este foro Usted No puede crear encuestas en este foro Usted No puede votar en encuestas en este foro |