insertando macros

8
esta página iremos insertando macros y códigos que pueden servirle de ayuda. Macro para solicitar confirmación de salir de Excel . ‘macro que solicita al usuario que confirme salir de Excel Private Sub salir() If msgbox(“¿Desea salir de Excel?”,vbQuestion+ vbYesNo)=vbYes Then Application.quit End If End Sub Macro para guardar archivo seleccionando ubicación Sub guardar_archivo() Dim stArchivo stArchivo = Application.GetOpenFilename(“Hoja de Excel , *.xls*”, _ , “Seleccione archivo “) End Sub Macro para guardar archivos en otro formato Sub guardar_archivo_otro() ‘con esta macro guardamos el archivo con la fecha y hora actual y formato csv Dim nombre, nombrearch, hoja, ruta nombre = Format(Now, “dd-mm-yy hh.mm.ss”) ruta = ActiveWorkbook.Path nombrearch = ActiveWorkbook.Name hoja = ActiveSheet.Name ActiveWorkbook.SaveAs Filename:=ruta & “\” & hoja & nombre & “.csv”, FileFormat:=xlCSV ActiveSheet.SaveAs ruta & “\” & nombrearch & nombre & “.xlsm” End Sub Copiar rango de una hoja a otra Si queremos que se quiera copiar los rangos de la hoja activa de una hoja a otra ejecutariamos la macro siguiente: Option Explicit Dim f, c Public Sub CopiarRango() ActiveCell.CurrentRegion.Select f = ActiveCell.Row c = ActiveCell.Column Selection.Copy Sheets(“Hoja2″).Activate Cells(f, c).Activate ActiveSheet.Paste End Sub Cerrar libro Excel (guardar cambios) ActiveWorkbook.Close

Upload: comas-olivos

Post on 26-Sep-2015

212 views

Category:

Documents


0 download

DESCRIPTION

MACROS

TRANSCRIPT

esta pgina iremos insertando macros y cdigos que pueden servirle de ayuda.

Macro para solicitar confirmacin de salir de Excel.

macro que solicita al usuario que confirme salir de ExcelPrivate Sub salir()If msgbox(Desea salir de Excel?,vbQuestion+ vbYesNo)=vbYes Then Application.quit End IfEnd SubMacro para guardar archivo seleccionando ubicacinSub guardar_archivo()Dim stArchivostArchivo = Application.GetOpenFilename(Hoja de Excel , *.xls*, _ , Seleccione archivo )End SubMacro para guardar archivos en otro formatoSub guardar_archivo_otro()con esta macro guardamos el archivo con la fecha y hora actual y formato csvDim nombre, nombrearch, hoja, rutanombre = Format(Now, dd-mm-yyhh.mm.ss)ruta =ActiveWorkbook.Pathnombrearch =ActiveWorkbook.Namehoja =ActiveSheet.NameActiveWorkbook.SaveAs Filename:=ruta & \ & hoja & nombre & .csv, FileFormat:=xlCSVActiveSheet.SaveAs ruta & \ & nombrearch & nombre & .xlsmEnd SubCopiar rango de una hoja a otraSi queremos que se quiera copiar los rangos de la hoja activa de una hoja a otra ejecutariamos la macro siguiente:

Option ExplicitDim f, cPublic Sub CopiarRango()ActiveCell.CurrentRegion.Selectf =ActiveCell.Rowc = ActiveCell.ColumnSelection.CopySheets(Hoja2).ActivateCells(f, c).ActivateActiveSheet.PasteEnd SubCerrar libro Excel (guardar cambios)ActiveWorkbook.CloseActiveWorkbook.Close Savechanges:=TrueActiveWorkbook.Close(True)Cerrar libro Excel (sin guardar cambios)ActiveWorkbook.Close(False)ActiveWorkbook.Close Savechanges:=FalseCerrar libro Excel (variable, sin guardar cambios)Application.DisplayAlerts = FalseWindows(Libro_mayor).CloseApplication.DisplayAlerts = TrueAbrir libro Excel (ruta fija)Workbooks.OpenFileName:=C:\Trabajo\Informe.xlsDesplazarnos a la ltima hoja del libroSub ultima_hoja()Sheets(Sheets.Count).SelectEnd SubDesplazarnos a la primera hoja del libroSub primera_hoja()Sheets(1).SelectEnd SubCopiar el contenido seleccionado en otra hojaSub CopiaColumnas()Dim mirango As RangeDim col As RangeDim NuevaHoja As WorksheetDim i As IntegerSet mirango = SelectionWorksheets.Addi = 0For Each col In mirango.Columnscol.CopyActiveSheet.Range(A1).Offset(, i)i = i + 1Next colEnd SubMacro para crear ndices de hojas en librosPrivate Sub Worksheet_Activate()Dim cHoja As WorksheetDim L As LongL = 1With Me.Columns(1).ClearContents.Cells(1, 1) = INDICE.Cells(1, 1).Name = IndiceEnd WithFor Each cHoja In WorksheetsIfcHoja.NameMe.NameThenL = L + 1With cHoja.Range(A1).Name = Inicio &cHoja.Index.Hyperlinks.AddAnchor:=.Range(A1), Address:= , SubAddress:=Indice, TextToDisplay:=Volver al ndiceEnd WithMe.Hyperlinks.AddAnchor:=Me.Cells(L, 1), Address:= , SubAddress:=Inicio &cHoja.Index, TextToDisplay:=cHoja.NameEnd IfNext cHojaEnd SubMacro para imprimir hoja activa con datos

Sub macro imprimir_ha()Range(A1) = Lo que seaImprimimos la hoja de excel con una sola copiaActiveWindow.SelectedSheets.PrintOut Copies:=1End SubBuscar la ltima fila vacaSub ultimafila()variable donde almacenamos el nmero de filaDim ultima As Longvamos subiendo por la columna A desde la ltima filaultima = Range(A65536).End(xlUp).Rowle sumamos una porque queremos la 1 fila vacaultima = ultima + 1seleccionamos si queremos otra columna cambiar el nmeroCells(ultima, 1).SelectEnd SubEncontrar ltima fila (en columna especificada)Dim intUltimaFila As RangeIf WorksheetFunction.CountA(Columns(1)) > 0 ThenSet intUltimaFila = Range(65536).End(xlUp)MsgBox intUltimaFila.AddressEnd IfSuprimir filas vacasintLastRow = Columns(A:A).Range(A65536).End(xlUp).RowFor r = intLastRow To 1 Step -1If Application.CountA(Rows(r)) = 0 Then Rows(r).DeleteNext rSuprimir filas vacasDim intNumDeFilas As LongSelection.SpecialCells(xlCellTypeLastCell).SelectintNumDeFilas =Selection.RowFor i = 1 To intNumDeFilasIf Application.WorksheetFunction.CountA(Rows(i)) = 0 ThenRows(i).DeleteEnd IfNextSuprimir filas vacasintUltimaFila =ActiveSheet.UsedRange.Row 1 +ActiveSheet.UsedRange.Rows.CountFor r = intUltimaFila To 1 Step -1If Application.CountA(Rows(r)) = 0 Then Rows(r).DeleteNext rSuprimir filas por condicinDim rngString As RangeDoSet rngString =Cells.Find(Aglis, MatchCase:=False, _LookAt:=xlPart, LookIn:=xlValues)If Not rngString Is Nothing ThenrngString.EntireRow.DeleteEnd IfLoop Until rngString Is NothingSuprimir filas vacas por dos condicines X, YFor i = intUltimaFila To 1 Step -1Let strTest=Application.Cells(i, 2)If strTest X And strTest Y Then Rows(i).DeleteNext iMtodos abreviados de teclado en Excel

Lmites de ExcelNmero total de columnas disponibles en Excel. Lmite Excel 2003: 256 (2^8)

Lmite Excel 2007: 16.384 (2^14)

Nmero total de filas disponibles en Excel. Lmite Excel 2003: 65.536 (2^16)

Lmite Excel 2007: el 1.048.576 (2^20)

Las celdas por hoja es la multiplicacin de las filas por las columnas.

Un libro puede tener un nmero variable de hojas, segn nuestras necesidades. El lmite estaba en 256 y est ahora en 1024.

Nmero total de hojas disponibles en Excel. Lmite Excel 2003: 256 (2^8)

Lmite Excel 2007: 1.024 (2^10)

Cantidad total de memoria del PC que Excelpuede utilizar. Lmite Excel 2003: 1GB.

Lmite Excel 2007: 2 GB.

Nmero de colores nicos permitido en un solo libro de trabajo. Lmite Excel 2003: 56 (color puesto en un ndice)

Lmite Excel 2007: 4.294.967.296 (casi 4300 millones, color 32-bit)

Nmero de condiciones condicionales del formato en una celda. Lmite Excel 2003: 3 condiciones

Lmite Excel 2007: Limitado por memoria disponible

Nmero de niveles para ordenar en una lista o una tabla. Lmite Excel 2003: 3

Lmite Excel 2007: 64

Nmero de datos mostrados en el Autofiltro. Lmite Excel 2003: 1.000

Lmite Excel 2007: 10.000

Nmero total de caracteres que puede exhibir una celda. Lmite Excel 2003: 1.024 (cuando se ajusta a formato el texto)

Lmite Excel 2007: 32.768 o tanto como quepa en la celda (sin importar el formato)

Nmero de caracteres por celda que el Excelpuede imprimir. Lmite Excel 2003: 1.024

Lmite Excel 2007: 32.768

Nmero total de los estilos nicos de la celda en un libro de trabajo (combinaciones de todo el formato de la celda). Lmite Excel 2003: 4000

Lmite Excel 2007: 65.536

Longitud mxima de frmulas (encaracteres). Lmite Excel 2003: carcteres 1.024

Lmite Excel 2007: carcteres 8.192

Nmero de niveles de anidacin que Excelpermite en frmulas. Lmite Excel 2003: 7

Lmite Excel 2007: 64

Nmero mximo de discusiones a una funcin. Lmite Excel 2003: 30

Lmite Excel 2007: 255

Nmero mximo de artculos que encuentra el comando buscar todos. Lmite Excel 2003: ~64k (65472)

Lmite Excel 2007: ~2 mil millones

Nmero de filas permitidos en una tabla dinmica. Lmite Excel 2003: 65.536

Lmite Excel 2007: 1.048.576

Nmero de columnas permitidoen una tabla dinmica. Lmite Excel 2003: 255

Lmite Excel 2007: 16.384

Nmero mximo de artculos nicos dentro de un solo campo de una tabla dinmica. Lmite Excel 2003: 32.768

Lmite Excel 2007: 1.048.576

Longitud del nombre de MDX para un artculo de una tabla dinmica; tambin la longitud de la secuencia para una tabla dinmica emparentada. Lmite Excel 2003: 255 caracteres

Lmite Excel 2007: 32.768

Longitud a la cual se truncan los campos que etiquetan una tabla dinmica; esto tambin incluye limitaciones de la longitud del subttulo. Lmite Excel 2003: 255

Lmite Excel 2007: 32.768

El nmero de campos (segn lo visto en la lista del campo) que una sola tabla dinmica puede tener. Lmite Excel 2003: 255

Lmite Excel 2007: 16.384

Nmero de celdas que pueden depender de un solo rango antes que Excelnecesite hacer clculos completos en vez de clculos parciales (porque no puede seguir las dependencias requeridas para hacer clculos parciales). Lmite Excel 2003: 8.192

Lmite Excel 2007: Limitado por memoria disponible

El nmero de rangos diversos en una hoja que pueden tener dependencias antes de que Excelnecesite hacer clculos completos en vez de clculos parciales (porque no puede seguir las dependencias requeridas para hacer clculos parciales). Lmite Excel 2003: 65.536

Lmite Excel 2007: Limitado por memoria disponible

Nmero de frmulas en conjunto en una hoja de trabajo que pueden referir a otra hoja de trabajo. Lmite Excel 2003: 65.536

Lmite Excel 2007: Limitado por memoria disponible

Nmero de categoras que las funciones personalizadas pueden encapsular. Lmite Excel 2003: 32

Lmite Excel 2007: 255

Nmero de caracteres que se pueden actualizar en una referencia externa que no pertenece al libro de trabajo. Lmite Excel 2003: 255

Lmite Excel 2007: 32.768

Nmero de filas de una o varias columnas que se pueden referir en una frmula matricial (array formula). Lmite Excel 2003: 65.335

Lmite Excel 2007: No hay lmites.

Nmero de caracteres que se pueden almacenar y exhibir en una celda ajustada a formato de texto. Lmite Excel 2003: 255

Lmite Excel 2007: 32.768

Macro que elimina las barras de desplazamientoSubelimina_barra()WithActiveWindow .DisplayHorizontalScrollBar = False .DisplayVerticalScrollBar = False End WithEnd SubMacro que protege el libro y la hojaSubproteger() ActiveWorkbook.Protect Password:=1234 Sheets(Hoja1).Protect Password:=1234End SubCalculo del NIFEsta funcin calcula el NIF (Nmero de Identificacin Fiscal).

Functionnif(dniAs Long)As String nif = Mid(TRWAGMYFPDXBNJZSQVHLCKE, (dniMod23) + 1, 1)End Function