Página 1 de 1

Funciones de Excel

Publicado: 17 Abr 2012, 13:25
por frp64
Buenas, llevo un par de años utilizando las funciones de Excel dentro del entorno Autoit y me gustaría compartir las que he utilizado. Aparte de las funciones integradas dentro de la libreria 'Excel.au3'.

Código: Seleccionar todo

#include <Escel.au3>

$oExcel = _ExcelBookNew(1)
Una vez hemos creado la variable objeto $oExcel, que referencia a un nuevo fichero Excel, podemos definir una serie de funciones:

Código: Seleccionar todo

$oExcel.ActiveSheet.Cells(15, 1).Font.Bold = True ; Configura la celda de la fila 15 columna 1, de la hoja activa, con la fuente en negrita
$oExcel.ActiveSheet.Columns("A:B").EntireColumn.AutoFit ; Justifica horizontalmente las columnas A y B
$oExcel.ActiveSheet.Rows("19:21").EntireRow.AutoFit ; Justifica horizontalmente de la fila 19 a la 21
$oExcel.ActiveSheet.Columns("A:A").EntireColumn.Hidden = True ; Oculta la columna A
$oExcel.ActiveSheet.Columns("A:A").ColumnWidth = 20 ; Configura la anchura de la columna A
$oExcel.ActiveSheet.Rows("27:27").RowHeight = 20 ; Configura la altura de la fila 27
$oExcel.Activesheet.Cells(31,4).Formula = "=A31+B31" ; Suma el valor de la celda A31 con la B31 y almacena el resultado en la celda de fila 31 y columna 4
$oExcel.Application.Run ("Nombre de la macro") ; Ejecuta una macro dentro de Excel
$oExcel.ActiveSheet.Cells(1, 2).Interior.ColorIndex = 20 ; Modifica el color de fondo de la celda situada en la fila 1 y columna 2
$oExcel.ActiveSheet.Cells(1, 2).Borders.LineStyle = 1 ; Configura el borde de la celda situada en la fila 1 y columna 2
$oExcel.ActiveWorkBook.ActiveSheet.UsedRange.Rows.Delete ; Borra todo el rango de filas de la hoja activa
$oExcel.ActiveWorkBook.ActiveSheet.UsedRange.Rows.Count ; Identifica el número de filas que tenemos definida en la hoja
$oExcel.Activesheet.Range("A:O").Wraptext = True ; Aplica la propiedad 'wrappear' a las columnas de la A a la O
$oExcel.ActiveSheet.Range ("O:P").EntireColumn.Delete ; Borra las columnas O y P de la hoja activa
$oExcel.ActiveSheet.Cells (1, 5).Font.Color = 32768 ; Modifica el color de la fuente de la celda de la fila 1 y columna 5
$oExcel.ActiveSheet.Range("A1:C100").Sort($oExcel.ActiveSheet.Range("A1"), 1) ; Ordena el rango que va desde la fila 1 a la 100 y columnas de la A a la C por la columna 1 (A1) en formato Ascendente (1)
$oExcel.ActiveSheet.Range("A1:C100").Sort($oExcel.ActiveSheet.Range("A1"), 2) ; Idem al anterior en formato descendente (2)
Saludos

Re: Funciones de Excel

Publicado: 17 Abr 2012, 20:12
por BasicOs
Gracias por el aporte, si tuvieras otras para el opencalc o librecalc no estarían mal tampoco ;)
Salu22:)

Re: Funciones de Excel

Publicado: 17 Jul 2012, 14:22
por joana
Hola frp64,

Me parece genial tu aporte, es como leer algo que ya sabes por el VBA de Excel y aplicado en AutoIt ves que es más del lo mismo.

Es más yo que estoy todo el día dándole al excel lo veo indispensable aprenderse la librería de Excel.au3.

Muchas Gracias,

frp64 me podrías dar alguna idea para la que tener que usar AutoIt y no usar VBA?

:smt040 AutoIt cada vez me gusta más. Habrá que dedicarle 1000 horas.

Re: Funciones de Excel

Publicado: 23 Jul 2012, 14:50
por joana
Hola,

¿Como se puede mover el scroll bar del excel desde autoit?

¿Alguien lo sabe?

Re: Funciones de Excel

Publicado: 23 Jul 2012, 21:16
por Chefito
Te dejo dos formas (hay más).

Código: Seleccionar todo

$oExcel = ObjCreate("Excel.Application")                   ; Create an Excel Object
With $oExcel
	.Visible = 1                                        ; Let Excel show itself
	.WorkBooks.Add                                      ; Add a new workbook
	.Worksheets(1).ScrollArea = "A50"		;mueve hasta la celda que le indiques
;~     .ActiveWindow.ScrollColumn = 50			;mueve hasta la columna que le indiques
;~     .ActiveWindow.ScrollRow = 50			;mueve hasta la fila que le indiques
EndWith
Saludos.

Re: Funciones de Excel

Publicado: 24 Jul 2012, 07:16
por joana
Chefito escribió:Te dejo dos formas (hay más).

Código: Seleccionar todo

$oExcel = ObjCreate("Excel.Application")                   ; Create an Excel Object
With $oExcel
	.Visible = 1                                        ; Let Excel show itself
	.WorkBooks.Add                                      ; Add a new workbook
	.Worksheets(1).ScrollArea = "A50"		;mueve hasta la celda que le indiques
;~     .ActiveWindow.ScrollColumn = 50			;mueve hasta la columna que le indiques
;~     .ActiveWindow.ScrollRow = 50			;mueve hasta la fila que le indiques
EndWith
Saludos.
Funciona muy bien! Muchas gracias. :smt041

¿Hay alguna forma de ver en ayuda las distintas propiedades, métodos, atributos del objeto excel?

Ha espera... es usando la ayuda de excel. Juju que bien, ahora voy a poder hacer cosillas interesantes. :smt038

Re: Funciones de Excel

Publicado: 24 Jul 2012, 08:24
por joana

Código: Seleccionar todo

Global $oExcel = ObjCreate("Excel.Application")

$oExcel.Visible = 1
$oExcel.WorkBooks.Add

HotkeySet("^{UP}", "up_excel")
HotkeySet("^{DOWN}", "down_excel")

While 1
	Sleep(1000)
WEnd

Func up_excel()
	WinActivate("Microsoft Excel - ExcelD3.xls")
	$oExcel.WorkSheet(1).ScrollArea = "A1"
EndFunc

Func down_excel()
	WinActivate("Microsoft Excel - ExcelD3.xls")
	$oExcel.WorkSheet(1).ScrollArea = "A79"
EndFunc
¿Porque no funciona?

¡Mundo Cruel!

Re: Funciones de Excel

Publicado: 24 Jul 2012, 14:40
por Chefito
Porque te falta la "s" cuando llamas a la hoja del libro. Tu pones WorkSheet(1) y es WorkSheets(1).

Pon más atención en esas cosas :smt002 .

Saludos.

Re: Funciones de Excel

Publicado: 26 Jul 2012, 07:38
por joana
:smt023 Genial! Funciona!

Gracias!

Re: Funciones de Excel

Publicado: 21 Ene 2015, 18:11
por fresymet
Estaría de lujo saber como se puede leer el contenido de la celda como copiar y pegar de una a otra y como escribir.

seria perfecto para lo que estoy haciendo.

Re: Funciones de Excel

Publicado: 22 Ene 2015, 00:07
por Chefito
Todas esas funciones ya están creadas en autoit. Mira en la ayuda la udf>Excel Management. Son todas las funciones que empiezan por _Excel_ . Busca y encontrarás :smt024 :smt002 .

Saludos.