MACROS (II)

Anuncio
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
Descargar