Ejemplos de macros En 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 ActiveWorkbook.Close Savechanges:=True ActiveWorkbook.Close(True) Cerrar libro Excel (sin guardar cambios) ActiveWorkbook.Close(False) ActiveWorkbook.Close Savechanges:=False Cerrar libro Excel (variable, sin guardar cambios) Application.DisplayAlerts = False Windows(Libro_mayor).Close Application.DisplayAlerts = True Abrir libro Excel (ruta fija) Workbooks.Open FileName:=”C:TrabajoInforme.xls” Desplazarnos a la última hoja del libro Sub ultima_hoja() Sheets(Sheets.Count).Select End Sub Desplazarnos a la primera hoja del libro Sub primera_hoja() Sheets(1).Select End Sub Copiar el contenido seleccionado en otra hoja Sub CopiaColumnas() Dim mirango As Range Dim col As Range Dim NuevaHoja As Worksheet Dim i As Integer Set mirango = Selection Worksheets.Add i=0 For Each col In mirango.Columns col.Copy ActiveSheet.Range(“A1″).Offset(, i) i=i+1 Next col End Sub Macro para crear índices de hojas en libros <Private Sub Worksheet_Activate() Dim cHoja As Worksheet Dim L As Long L=1 With Me .Columns(1).ClearContents .Cells(1, 1) = “INDICE” .Cells(1, 1).Name = “Indice” End With For Each cHoja In Worksheets If cHoja.Name <> Me.Name Then L=L+1 With cHoja .Range(“A1″).Name = “Inicio” & cHoja.Index .Hyperlinks.Add Anchor:=.Range(“A1″), Address:=” “, SubAddress:=”Indice”, TextToDisplay:=”Volver al índice” End With Me.Hyperlinks.Add Anchor:=Me.Cells(L, 1), Address:=” “, SubAddress:=”Inicio” & cHoja.Index, TextToDisplay:=cHoja.Name End If Next cHoja End Sub Macro para imprimir hoja activa con datos Sub macro imprimir_ha() Range(“A1″) = “Lo que sea” ‘Imprimimos la hoja de excel con una sola copia ActiveWindow.SelectedSheets.PrintOut Copies:=1 End Sub Buscar la última fila vacía Sub ultimafila() ‘variable donde almacenamos el número de fila Dim ultima As Long ‘vamos subiendo por la columna A desde la última fila ultima = Range(“A65536″).End(xlUp).Row ‘le sumamos una porque queremos la 1ª fila vacía ultima = ultima + 1 ‘seleccionamos si queremos otra columna cambiar el número Cells(ultima, 1).Select End Sub Encontrar última fila (en columna especificada) Dim intUltimaFila As Range If WorksheetFunction.CountA(Columns(1)) > 0 Then Set intUltimaFila = Range(“65536″).End(xlUp) MsgBox intUltimaFila.Address End If Suprimir filas vacías intLastRow = Columns(“A:A”).Range(“A65536″).End(xlUp).Row For r = intLastRow To 1 Step -1 If Application.CountA(Rows(r)) = 0 Then Rows(r).Delete Next r Suprimir filas vacías Dim intNumDeFilas As Long Selection.SpecialCells(xlCellTypeLastCell).Select intNumDeFilas = Selection.Row For i = 1 To intNumDeFilas If Application.WorksheetFunction.CountA(Rows(i)) = 0 Then Rows(i).Delete End If Next intUltimaFila = ActiveSheet.UsedRange.Row – 1 + ActiveSheet.UsedRange.Rows.Count For r = intUltimaFila To 1 Step -1 If Application.CountA(Rows(r)) = 0 Then Rows(r).Delete Next r Suprimir filas por condición Dim rngString As Range Do Set rngString = Cells.Find(“Aglis”, MatchCase:=False, _ LookAt:=xlPart, LookIn:=xlValues) If Not rngString Is Nothing Then rngString.EntireRow.Delete End If Loop Until rngString Is Nothing Suprimir filas vacías por dos condiciónes X, Y For i = intUltimaFila To 1 Step -1 Let strTest= Application.Cells(i, 2) If strTest <> “X” And strTest <> “Y” Then Rows(i).Delete Next i Macro que elimina las barras de desplazamiento Sub elimina_barra() With ActiveWindow .DisplayHorizontalScrollBar = False .DisplayVerticalScrollBar = False End With End Sub Macro que protege el libro y la hoja Sub proteger() ActiveWorkbook.Protect Password:=”1234″ Sheets(“Hoja1″).Protect Password:=”1234″ End Sub Calculo del NIF Esta función calcula el NIF (Número de Identificación Fiscal). Function nif(dni As Long) As String nif = Mid(“TRWAGMYFPDXBNJZSQVHLCKE”, (dni Mod 23) + 1, 1) End Function