2019

11 dic 2019

9 dic 2019

Calculadora aguinaldo 2019 en Excel


Hace algunos años, hice una calculadora de aguinaldo en Excel, ahora este año no será la excepción, con algunas actualizaciones al archivo del año pasado, les comparto está herramienta que nos ayudará, como bien su nombre lo dice, a calcular el Aguinaldo que le corresponde a cada trabajador, así como también, a calcular el ISR que se debe retener por la gratificación entregada, el cálculo del ISR es mediante el Art. 174 del RISR.



    Actualizaciones:
  • Tablas de ISR (2019)
  • Cambio de Fórmulas, para evitar posibles errores.
  • Impresión de Recibos (esto gracias a la ayuda de un usuario (huatson70) de  Todo Excel)
Agradezco la colaboración del C.P. Juan Carlos Barrera Mendoza.



El libro de Excel contiene macros, si no sabes como  habilitar las macros en Excel, da click en el siguiente enlace: Todo Excel

Pasos para imprimir los recibos:


1. Dar Click en Imprimir Recibos.


2. Seleccionar al Primer Trabajador.


3. Seleccionar al Ultimo Trabajador.



20 nov 2019

21 oct 2019

Carga Batch IEPS en Excel GRATIS


Hola a todos, les comparto esta aplicación de Excel para generar el carga batch IEPS anexo 1, es completamente compatible con la versión 6.0 del DEM.

El sistema se simplifica la presentación de la declaración informativa del Impuesto Especial sobre Producción y servicios (IEPS) llamada MULTI-IEPS, en específico la informativa correspondiente al anexo 1 de la "Información sobre importe y volumen de compras y ventas".



7 oct 2019

4 sept 2019

Macro para crear un documento de Word desde Excel


En muchas ocasiones necesitamos que Excel cree un archivo Word, y esto lo podemos hacer fácilmente con una macro:

Para que la macro funcione hay que seguir los siguientes pasos:
1. Abrir el editor Visual Basic para Aplicaciones (VBA).
2. Insertar un módulo.
3. Pegar el siguiente código:


Sub Crear_word()
'Declaración de las variables
Dim objWord As Object
Dim objDoc As Object
Dim objSelection As Object

'Se establece el objeto (word)
   Set objWord = CreateObject("Word.Application")
   Set objDoc = objWord.Documents.Add
 
   objWord.Visible = True 'se muestra la aplicación
 
   Set objSelection = objWord.Selection

   objSelection.TypeText ("Creando un archivo word con El Blog de Luis Reyes") 'se introduce el texto
 
End Sub



Descargar el Archivo

3 sept 2019

Súper Pack de 23 Macros en Excel que te pueden salvar la vida.


Hola a todos, les comparto este súper pack de 23 macros, que quizás te puedan salvar en algún momento.

Súper Pack de 23 Macros en Excel


'1. Seleccionar Celda
Sub Seleccionar_una_Celda()
Range("A1").Select
End Sub

'2. introducir un valor en la celda activa
Sub Escribir_en_la_celda_activa()
Range("A1").Value = "El Blog de Luis Reyes"
End Sub

'3-Copiar
Sub copiar()
Selection.Copy
End Sub

'4-Pegar
Sub Pegar()
ActiveSheet.Paste
End Sub

'5-Cortar
Sub cortar()
Selection.Cut
End Sub

'6-Insertar Fila
Sub Insertar_Fila()
Selection.EntireRow.Insert
End Sub

'7-Eliminar Fila
Sub Eliminar_Fila()
Selection.EntireRow.Delete
End Sub

'8-Insertar Columna
Sub Insertar_Columna()
Selection.EntireColumn.Insert
End Sub

'9-Eliminar Columna
Sub Eliminar_columna()
Selection.EntireColumn.Delete
End Sub

'10. poner negritas
Sub Letra_Negrita()
Selection.Font.Bold = True
End Sub

'11. letra cursiva
Sub Letra_Cursiva()
Selection.Font.Italic = True
End Sub

'12. Letra Subrayada
Sub Letra_Subrayada()
Selection.Font.Underline = xlUnderlineStyleSingle
End Sub

'13-Centrar Texto
Sub Centrar_Texto()
Selection.HorizontalAlignment = xlCenter
End Sub

'14-Alinear a la izquierda
Sub Alinear_a_la_izquierda()
Selection.HorizontalAlignment = xlLeft
End Sub

'15-Alinear a la Derecha
Sub Alinear_a_la_Derecha()
Selection.HorizontalAlignment = xlRight
End Sub

'16-Tipo de Letra
Sub Tipo_de_Letra()
Selection.Font.Name = "Arial"
End Sub

'17-Tamaño de Letra
Sub Tamaño_de_Letra()
Selection.Font.Size = 12
End Sub


'18-Ordenar Ascendente
Sub Ordenar_Ascendente()
Selection.Sort Key1:=Range("A1"), Order1:=xlAscending, Header:=xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
End Sub

'19-Orden Descendente
Sub Orden_Descendente()
Selection.Sort Key1:=Range("A1"), Order1:=xlDescending, Header:=xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
End Sub

'20-Buscar
Sub Buscar()
Cells.Find(What:="Luis", After:=ActiveCell, LookIn:=xlFormulas, LookAt:=xlPart, SearchOrder:=xlByRows, _
SearchDirection:=xlNext, MatchCase:=False).Activate
End Sub

'21-Abrir un Libro
Sub Abrir_un_Libro()
Workbooks.Open Filename:="La ruta donde se encuentra tu archivo"
End Sub

'22-Grabar un Libro
Sub Guardar_un_Libro()
ActiveWorkbook.SaveAs Filename:="La ruta donde se va a guardar tu archivo", FileFormat _
:=xlNormal, Password:="", WriteResPassword:="", ReadOnlyRecommended:= _
False, CreateBackup:=False
End Sub

'23-Encontrar la siguiente celda vacia
Sub Celda_Vacia()
Range("A1").Select

Do While ActiveCell <> Empty
    ActiveCell.Offset(1, 0).Select
Loop

End Sub

20 ago 2019

Sistemas de control de inventarios en Excel (Kardex en Excel Gratis).


Los Sistemas de control de inventarios son sistemas de contabilidad que se utilizan para registrar las cantidades de mercancías existentes y para establecer el costo de la mercancía vendida.

Existen básicamente dos sistemas para llevar a cabo los registros de inventario: el sistema periódico y el sistema perpetuo.


En esta ocasión les comparto una aplicación en Excel para llevar el sistema perpetuo con el método de valuación PRIMEROS EN ENTRAR, PRIMEROS EN SALIR (PEPS).

Ventajas de este archivo.

a) Se puede conocer en cualquier momento el valor del inventario final sin necesidad de practicar inventarios físicos.
b) No es necesario cerrar el negocio para determinar el inventario final de mercancías, puesto que existe una cuenta que controla las existencias.
c) Se pueden descubrir los extravíos, robos o errores ocurridos en el manejo de las mercancías,
puesto que se sabe con exactitud el valor de las mercancías que debiera haber.
d) Se puede conocer en cualquier momento el valor del costo de lo vendido.
e) Se puede conocer en cualquier momento el valor de la utilidad o de la pérdida bruta
f) Se puede utilizar un lector de código de barras. como por ejemplo: Barcode to PC.



9 ago 2019

Macro para pasar de números a letras - VBA Excel



Hace algunos ayeres me encontré en la web una función en VBA Excel que nos ayuda a pasar a los números a letra, en su momento a mi me fue muy útil, espero que a ustedes también les sirva.

Dicha función se llama: NumLetras, y solo se tiene que seleccionar la celda que contiene el valor que queremos convertir.


Macro para pasar de numeros a letras
Para que la función funcione hay que seguir los siguientes pasos:
1. Abrir el editor Visual Basic para Aplicaciones (VBA).
2. Insertar un módulo.
3. Pegar el siguiente código:


Function NumLetras(Valor As Currency, Optional MonedaSingular As String = "", Optional MonedaPlural As String = "MN") As String
Dim Cantidad As Currency, Centavos As Currency, Digito As Byte, PrimerDigito As Byte, SegundoDigito As Byte, TercerDigito As Byte, Bloque As String, NumeroBloques As Byte, BloqueCero
Dim Unidades As Variant, Decenas As Variant, Centenas As Variant, I As Variant
Dim ValorEntero As Long
Dim ValorOriginal As Double
    Valor = Round(Valor, 2)
    Cantidad = Int(Valor)
    ValorEntero = Cantidad
    Centavos = (Valor - Cantidad) * 100
    Unidades = Array("UN", "DOS", "TRES", "CUATRO", "CINCO", "SEIS", "SIETE", "OCHO", "NUEVE", "DIEZ", "ONCE", "DOCE", "TRECE", "CATORCE", "QUINCE", "DIECISEIS", "DIECISIETE", "DIECIOCHO", "DIECINUEVE", "VEINTE", "VEINTIUN", "VEINTIDOS", "VEINTITRES", "VEINTICUATRO", "VEINTICINCO", "VEINTISEIS", "VEINTISIETE", "VEINTIOCHO", "VEINTINUEVE")
    Decenas = Array("DIEZ", "VEINTE", "TREINTA", "CUARENTA", "CINCUENTA", "SESENTA", "SETENTA", "OCHENTA", "NOVENTA")
    Centenas = Array("CIENTO", "DOSCIENTOS", "TRESCIENTOS", "CUATROCIENTOS", "QUINIENTOS", "SEISCIENTOS", "SETECIENTOS", "OCHOCIENTOS", "NOVECIENTOS")
    NumeroBloques = 1
 
    Do
        PrimerDigito = 0
        SegundoDigito = 0
        TercerDigito = 0
        Bloque = ""
        BloqueCero = 0
        For I = 1 To 3
            Digito = Cantidad Mod 10
            If Digito <> 0 Then
                Select Case I
                Case 1
                    Bloque = " " & Unidades(Digito - 1)
                    PrimerDigito = Digito
                Case 2
                    If Digito <= 2 Then
                        Bloque = " " & Unidades((Digito * 10) + PrimerDigito - 1)
                    Else
                        Bloque = " " & Decenas(Digito - 1) & IIf(PrimerDigito <> 0, " Y", Null) & Bloque
                    End If
                    SegundoDigito = Digito
                Case 3
                    Bloque = " " & IIf(Digito = 1 And PrimerDigito = 0 And SegundoDigito = 0, "CIEN", Centenas(Digito - 1)) & Bloque
                    TercerDigito = Digito
                End Select
            Else
                BloqueCero = BloqueCero + 1
            End If
            Cantidad = Int(Cantidad / 10)
            If Cantidad = 0 Then
                Exit For
            End If
        Next I
        Select Case NumeroBloques
            Case 1
                NumLetras = Bloque
            Case 2
                NumLetras = Bloque & IIf(BloqueCero = 3, Null, " MIL") & NumLetras
            Case 3
                NumLetras = Bloque & IIf(PrimerDigito = 1 And SegundoDigito = 0 And TercerDigito = 0, " MILLON", " MILLONES") & NumLetras
        End Select
        NumeroBloques = NumeroBloques + 1
    Loop Until Cantidad = 0
 
 
    If Valor >= 1000000000 Then
        Dim millardos As Currency
        Dim millarodsInt As Integer
        Dim letras_Millardos As String
        millarodsInt = Int(Valor / 1000000000)
        millardos = millarodsInt
     
        letras_Millardos = Replace(Trim(NumLetras(millardos)), "00/100", IIf(millarodsInt = 1, "MIL MILLONES", "MIL MILLONES"))
        NumLetras = letras_Millardos & NumLetras
    End If
 
    NumLetras = Trim(NumLetras) & " " & Format(Str(Centavos), "00") & "/100 " & IIf(ValorEntero = 1, MonedaSingular, MonedaPlural)
End Function









7 ago 2019

VBA Excel macro para leer XML nómina 1.2 de forma masiva


Les comparto una macro que he adaptado para leer los XML de nómina versión 1.2 de forma masiva.
Para que la macro funcione hay que seguir los siguientes pasos:
1. Abrir el editor Visual Basic para Aplicaciones (VBA).
2. Insertar un módulo.
3. Agregar la referencia "Microsoft XML, v3.0" en el menú herramientas del editor VBA, dar click en referencias.
3. Pegar el siguiente código:
Private Sub Ruta_CFDI()
'macro para en listar los XML que va a leer
'Adapatado por Luis Reyes
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
Application.EnableEvents = False
ActiveSheet.DisplayPageBreaks = False

Dim fs, carpeta, archivo, subcarpeta As Object
contador = 2 'determinar en que fila comenzará a colocar la ruta y nombre de los XML

Set fs = CreateObject("Scripting.FileSystemObject")

With Application.FileDialog(msoFileDialogFolderPicker) 'se obtiene la ruta la carpeta

  If .Show = -1 Then
    ruta = .SelectedItems(1)
    Range("V1").Value = ruta & "\"
  End If

End With

Set carpeta = fs.GetFolder(ruta)

For Each archivo In carpeta.Files

If Right(archivo, 4) = ".xml" Then

Range("AD" & contador).Value = ruta & "\" & archivo.Name
 contador = contador + 1

End If

If Right(archivo, 4) = ".XML" Then
 Range("AD" & contador).Value = ruta & "\" & archivo.Name
 contador = contador + 1

End If

Next

  

If Application.WorksheetFunction.CountA(Columns(30)) = 0 Then
MsgBox "No se encontro ningún archivo *.XML" & Chr(10) & ruta, vbCritical, "Importar datos CFDI"
End

End If

Run "Lectura_CFDI" 'ejecuta la macro que lee los XML

End Sub

Private Sub Lectura_CFDI()

'Adapatado por Luis Reyes

With Application
   .ScreenUpdating = False
   .Calculation = xlCalculationManual
   .EnableEvents = False
   .DisplayStatusBar = False

Dim Concepto As String
Dim pctCompl As Single

Set DocumentoXML = New DOMDocument

Set R = Hoja1.Range("AD2").CurrentRegion 'determina apartir de donde comienza a contar
filas = R.Rows.Count

For i = 2 To filas + 1 'número de documentos que va a leer

DocumentoXML.Load ("" & Cells(i, 30) & "")

Set ListaNodo = DocumentoXML.SelectNodes("/cfdi:Comprobante")

On Error Resume Next

For Each Nodo In ListaNodo

Serie = Nodo.Attributes.getNamedItem("Serie").Text
Folio = Nodo.Attributes.getNamedItem("Folio").Text
Fecha = Mid(Nodo.Attributes.getNamedItem("Fecha").Text, 1, 10)
Sello = Nodo.Attributes.getNamedItem("Sello").Text
FormaPago = Nodo.Attributes.getNamedItem("FormaPago").Text
NoCertificado = Nodo.Attributes.getNamedItem("NoCertificado").Text
Certificado = Nodo.Attributes.getNamedItem("Certificado").Text
Subtotal = Val(Nodo.Attributes.getNamedItem("SubTotal").Text)
Descuento = Val(Nodo.Attributes.getNamedItem("Descuento").Text)
Moneda = Nodo.Attributes.getNamedItem("Moneda").Text
Total = Val(Nodo.Attributes.getNamedItem("Total").Text)
TipoDeComprobante = Nodo.Attributes.getNamedItem("TipoDeComprobante").Text
MetodoPago = Nodo.Attributes.getNamedItem("MetodoPago").Text
LugarExpedicion = Nodo.Attributes.getNamedItem("LugarExpedicion").Text

Next Nodo

''''''''''''''''''''''''''''''''''''''''''''''''Nombre del emisor'''''''''''''''''''''''''''''''''''''''''''''''''''

Set ListaNodo = DocumentoXML.SelectNodes("/cfdi:Comprobante/cfdi:Emisor")

For Each Nodo In ListaNodo
  NombreEmisor = Nodo.Attributes.getNamedItem("Nombre").Text
  RFCEmisor = Nodo.Attributes.getNamedItem("Rfc").Text
  Regimen = Nodo.Attributes.getNamedItem("RegimenFiscal").Text
Next Nodo

Set ListaNodo = DocumentoXML.SelectNodes("/cfdi:Comprobante/cfdi:Receptor")

For Each Nodo In ListaNodo

  NombreReceptor = Nodo.Attributes.getNamedItem("Nombre").Text
  RFCReceptor = Nodo.Attributes.getNamedItem("Rfc").Text
  Regimen = Nodo.Attributes.getNamedItem("RegimenFiscal").Text
  UsoCFDI = Nodo.Attributes.getNamedItem("UsoCFDI").Text

Next Nodo

''''''''''''''''''''''''''''''''''''''''''''''''Conceptos'''''''''''''''''''''''''''''''''''''''''''''''''''

Set ListaNodo = DocumentoXML.SelectNodes("/cfdi:Comprobante/cfdi:Conceptos/cfdi:Concepto")

For Each Nodo In ListaNodo

  ClaveProducto = ClaveProducto & Nodo.Attributes.getNamedItem("ClaveProdServ").Text & "|"
  CantidadP = CantidadP & Nodo.Attributes.getNamedItem("Cantidad").Text & "|"
  ClaveUnidadP = ClaveUnidadP & Nodo.Attributes.getNamedItem("ClaveUnidad").Text & "|"
  Concepto = Concepto & Nodo.Attributes.getNamedItem("Descripcion").Text & "|"
  ValorU = ValorU & Nodo.Attributes.getNamedItem("ValorUnitario").Text & "|"
  ImporteL = ImporteL & Nodo.Attributes.getNamedItem("Importe").Text & "|"
  DescuentoL = DescuentoL & Nodo.Attributes.getNamedItem("Descuento").Text & "|"

Next Nodo



Set ListaNodo = DocumentoXML.SelectNodes("/cfdi:Comprobante/cfdi:Complemento/nomina12:Nomina")

For Each Nodo In ListaNodo

  FechaFinal = Nodo.Attributes.getNamedItem("FechaFinalPago").Text
  FechaInicial = Nodo.Attributes.getNamedItem("FechaInicialPago").Text
  Pago = Nodo.Attributes.getNamedItem("FechaPago").Text
  DiasPagados = Nodo.Attributes.getNamedItem("NumDiasPagados").Text
  TipoNom = Nodo.Attributes.getNamedItem("TipoNomina").Text
  TotalDeduc = Nodo.Attributes.getNamedItem("TotalDeducciones").Text
  TotalPercep = Nodo.Attributes.getNamedItem("TotalPercepciones").Text
  VersionNomina = Nodo.Attributes.getNamedItem("Version").Text

Next Nodo



Set ListaNodo = DocumentoXML.SelectNodes("/cfdi:Comprobante/cfdi:Complemento/nomina12:Nomina/nomina12:Emisor")

For Each Nodo In ListaNodo

  RegistroPat = Nodo.Attributes.getNamedItem("RegistroPatronal").Text

Next Nodo



Set ListaNodo = DocumentoXML.SelectNodes("/cfdi:Comprobante/cfdi:Complemento/nomina12:Nomina/nomina12:Receptor")

For Each Nodo In ListaNodo

AntigüedadR = Nodo.Attributes.getNamedItem("Antigüedad").Text
BancoR = Nodo.Attributes.getNamedItem("Banco").Text
ClaveEntFedR = Nodo.Attributes.getNamedItem("ClaveEntFed").Text
CuentaBancariaR = Nodo.Attributes.getNamedItem("CuentaBancaria").Text
CurpR = Nodo.Attributes.getNamedItem("Curp").Text
DepartamentoR = Nodo.Attributes.getNamedItem("Departamento").Text
FechaInicioRelLaboralR = Nodo.Attributes.getNamedItem("FechaInicioRelLaboral").Text
NumEmpleadoR = Nodo.Attributes.getNamedItem("NumEmpleado").Text
NumSeguridadSocialR = Nodo.Attributes.getNamedItem("NumSeguridadSocial").Text
PeriodicidadPagoR = Nodo.Attributes.getNamedItem("PeriodicidadPago").Text
PuestoR = Nodo.Attributes.getNamedItem("Puesto").Text
RiesgoPuestoR = Nodo.Attributes.getNamedItem("RiesgoPuesto").Text
SalarioBaseCotAporR = Nodo.Attributes.getNamedItem("SalarioBaseCotApor").Text
SalarioDiarioIntegradoR = Nodo.Attributes.getNamedItem("SalarioDiarioIntegrado").Text
SindicalizadoR = Nodo.Attributes.getNamedItem("Sindicalizado").Text
TipoContratoR = Nodo.Attributes.getNamedItem("TipoContrato").Text
TipoJornadaR = Nodo.Attributes.getNamedItem("TipoJornada").Text
TipoRegimenR = Nodo.Attributes.getNamedItem("TipoRegimen").Text

Next Nodo



Set ListaNodo = DocumentoXML.SelectNodes("/cfdi:Comprobante/cfdi:Complemento/nomina12:Nomina/nomina12:Percepciones")

For Each Nodo In ListaNodo

TotalExentoPe = Nodo.Attributes.getNamedItem("TotalExento").Text
TotalGravadoPe = Nodo.Attributes.getNamedItem("TotalGravado").Text
TotalSueldosPe = Nodo.Attributes.getNamedItem("TotalSueldos").Text

Next Nodo


Set ListaNodo = DocumentoXML.SelectNodes("/cfdi:Comprobante/cfdi:Complemento/nomina12:Nomina/nomina12:Deducciones")

For Each Nodo In ListaNodo

TotalImpuestosRetenidosDe = Nodo.Attributes.getNamedItem("TotalImpuestosRetenidos").Text
TotalOtrasDeduccionesDe = Nodo.Attributes.getNamedItem("TotalOtrasDeducciones").Text

Next Nodo

Set ListaNodo = DocumentoXML.SelectNodes("/cfdi:Comprobante/cfdi:Complemento/nomina12:Nomina/nomina12:Deducciones/nomina12:Deduccion")

For Each Nodo In ListaNodo

If Nodo.Attributes.getNamedItem("TipoDeduccion").Text = "002" Then

ClaveDeISR = Nodo.Attributes.getNamedItem("Clave").Text
ConceptoDeISR = Nodo.Attributes.getNamedItem("Concepto").Text
ImporteDeISR = Nodo.Attributes.getNamedItem("Importe").Text
TipoDeduccionDeISR = Nodo.Attributes.getNamedItem("TipoDeduccion").Text
ElseIf Nodo.Attributes.getNamedItem("TipoDeduccion").Text = "001" Then
ClaveDeIMSS = Nodo.Attributes.getNamedItem("Clave").Text
ConceptoDeIMSS = Nodo.Attributes.getNamedItem("Concepto").Text
ImporteDeIMSS = Nodo.Attributes.getNamedItem("Importe").Text
TipoDeduccionDeIMSS = Nodo.Attributes.getNamedItem("TipoDeduccion").Text

End If

Next Nodo

Set ListaNodo = DocumentoXML.SelectNodes("/cfdi:Comprobante/cfdi:Complemento/tfd:TimbreFiscalDigital")

For Each Nodo In ListaNodo

UUIDTF = Nodo.Attributes.getNamedItem("UUID").Text
FechaTimbradoTF = Nodo.Attributes.getNamedItem("FechaTimbrado").Text
RfcProvCertifTF = Nodo.Attributes.getNamedItem("RfcProvCertif").Text
SelloCFDTF = Nodo.Attributes.getNamedItem("SelloCFD").Text
NoCertificadoSATTF = Nodo.Attributes.getNamedItem("NoCertificadoSAT").Text
SelloSATTF = Nodo.Attributes.getNamedItem("SelloSAT").Text

Next Nodo

Cells(i, 1) = Serie
Cells(i, 2) = Folio
Cells(i, 3) = Fecha
Cells(i, 4) = Sello
Cells(i, 5) = FormaPago
Cells(i, 6) = "'" & NoCertificado
Cells(i, 7) = "'" & Certificado
Cells(i, 8) = Subtotal
Cells(i, 9) = Descuento
Cells(i, 10) = Moneda
Cells(i, 11) = Total
Cells(i, 12) = TipoDeComprobante
Cells(i, 13) = MetodoPago
Cells(i, 14) = LugarExpedicion
Cells(i, 15) = NombreEmisor
Cells(i, 16) = RFCEmisor
Cells(i, 17) = Regimen
Cells(i, 18) = NombreReceptor
Cells(i, 19) = RFCReceptor
Cells(i, 20) = Regimen
Cells(i, 21) = UsoCFDI
Cells(i, 22) = ClaveProducto
Cells(i, 23) = CantidadP
Cells(i, 24) = ClaveUnidadP
Cells(i, 25) = Concepto
Cells(i, 26) = ValorU
Cells(i, 27) = ImporteL
Cells(i, 28) = DescuentoL
Cells(i, 29) = FechaFinal
Cells(i, 30) = FechaInicial
Cells(i, 31) = Pago
Cells(i, 32) = DiasPagados
Cells(i, 33) = TipoNom
Cells(i, 34) = TotalDeduc
Cells(i, 35) = TotalPercep
Cells(i, 36) = VersionNomina
Cells(i, 37) = RegistroPat
Cells(i, 38) = AntigüedadR
Cells(i, 39) = BancoR
Cells(i, 40) = ClaveEntFedR
Cells(i, 41) = CuentaBancariaR
Cells(i, 42) = CurpR
Cells(i, 43) = DepartamentoR
Cells(i, 44) = FechaInicioRelLaboralR
Cells(i, 45) = NumEmpleadoR
Cells(i, 46) = NumSeguridadSocialR
Cells(i, 47) = PeriodicidadPagoR
Cells(i, 48) = PuestoR
Cells(i, 49) = RiesgoPuestoR
Cells(i, 50) = SalarioBaseCotAporR
Cells(i, 51) = SalarioDiarioIntegradoR
Cells(i, 52) = SindicalizadoR
Cells(i, 53) = TipoContratoR
Cells(i, 54) = TipoJornadaR
Cells(i, 55) = TipoRegimenR
Cells(i, 56) = TotalExentoPe
Cells(i, 57) = TotalGravadoPe
Cells(i, 58) = TotalSueldosPe
Cells(i, 59) = TotalImpuestosRetenidosDe
Cells(i, 60) = TotalOtrasDeduccionesDe
Cells(i, 61) = ClaveDeISR
Cells(i, 62) = ConceptoDeISR
Cells(i, 63) = ImporteDeISR
Cells(i, 64) = TipoDeduccionDeISR
Cells(i, 65) = ClaveDeIMSS
Cells(i, 66) = ConceptoDeIMSS
Cells(i, 67) = ImporteDeIMSS
Cells(i, 68) = TipoDeduccionDeIMSS
Cells(i, 69) = UUIDTF
Cells(i, 70) = FechaTimbradoTF
Cells(i, 71) = "'" & RfcProvCertifTF
Cells(i, 72) = SelloCFDTF
Cells(i, 73) = "'" & NoCertificadoSATTF
Cells(i, 74) = SelloSATTF

Serie = ""
Folio = ""
Fecha = ""
Sello = ""
FormaPago = ""
NoCertificado = ""
Certificado = ""
Subtotal = 0
Descuento = 0
Moneda = ""
Total = 0
TipoDeComprobante = 0
MetodoPago = ""
LugarExpedicion = ""
NombreEmisor = ""
RFCEmisor = ""
Regimen = ""
NombreReceptor = ""
RFCReceptor = ""
Regimen = ""
UsoCFDI = ""
ClaveProducto = ""
CantidadP = ""
ClaveUnidadP = ""
Concepto = ""
ValorU = 0
ImporteL = 0
DescuentoL = 0
FechaFinal = ""
FechaInicial = ""
Pago = ""
DiasPagados = ""
TipoNom = ""
TotalDeduc = 0
TotalPercep = 0
VersionNomina = ""
RegistroPat = ""
AntigüedadR = ""
BancoR = ""
ClaveEntFedR = ""
CuentaBancariaR = ""
CurpR = ""
DepartamentoR = ""
FechaInicioRelLaboralR = ""
NumEmpleadoR = ""
NumSeguridadSocialR = ""
PeriodicidadPagoR = ""
PuestoR = ""
RiesgoPuestoR = ""
SalarioBaseCotAporR = 0
SalarioDiarioIntegradoR = 0
SindicalizadoR = ""
TipoContratoR = ""
TipoJornadaR = ""
TipoRegimenR = ""
TotalExentoPe = 0
TotalGravadoPe = 0
TotalSueldosPe = 0
TotalImpuestosRetenidosDe = 0
TotalOtrasDeduccionesDe = 0
ClaveDeISR = ""
ConceptoDeISR = ""
ImporteDeISR = 0
TipoDeduccionDeISR = ""
ClaveDeIMSS = ""
ConceptoDeIMSS = ""
ImporteDeIMSS = 0
TipoDeduccionDeIMSS = ""
UUIDTF = ""
FechaTimbradoTF = ""
RfcProvCertifTF = ""
SelloCFDTF = ""
NoCertificadoSATTF = ""
SelloSATTF = ""

Next

Cells(1, 1) = "Serie"
Cells(1, 2) = "Folio"
Cells(1, 3) = "Fecha"
Cells(1, 4) = "Sello"
Cells(1, 5) = "Forma Pago"
Cells(1, 6) = "No Certificado"
Cells(1, 7) = "Certificado"
Cells(1, 8) = "Subtotal"
Cells(1, 9) = "Descuento"
Cells(1, 10) = "Moneda"
Cells(1, 11) = "Total"
Cells(1, 12) = "Tipo De Comprobante"
Cells(1, 13) = "Método Pago"
Cells(1, 14) = "Lugar Expedición"
Cells(1, 15) = "Nombre del Emisor"
Cells(1, 16) = "RFC del Emisor"
Cells(1, 17) = "Régimen Fiscal"
Cells(1, 18) = "Nombre del Receptor"
Cells(1, 19) = "RFC del Receptor"
Cells(1, 20) = "Régimen"
Cells(1, 21) = "Uso CFDI"
Cells(1, 22) = "Clave Producto"
Cells(1, 23) = "Cantidad"
Cells(1, 24) = "Clave Unidad"
Cells(1, 25) = "Concepto"
Cells(1, 26) = "Valor"
Cells(1, 27) = "Importe"
Cells(1, 28) = "Descuento"
Cells(1, 29) = "Fecha Final"
Cells(1, 30) = "Fecha Inicial"
Cells(1, 31) = "Fecha Pago"
Cells(1, 32) = "Días Pagados"
Cells(1, 33) = "Tipo Nomina"
Cells(1, 34) = "Total de Deducciones"
Cells(1, 35) = "Total Percepciones"
Cells(1, 36) = "Versión Nomina"
Cells(1, 37) = "Registro Patronal"
Cells(1, 38) = "Antigüedad"
Cells(1, 39) = "Banco"
Cells(1, 40) = "ClaveEntFed"
Cells(1, 41) = "Cuenta Bancaria"
Cells(1, 42) = "Curp"
Cells(1, 43) = "Departamento"
Cells(1, 44) = "Fecha Inicio Laboral"
Cells(1, 45) = "Núm. Empleado"
Cells(1, 46) = "NSS"
Cells(1, 47) = "Periodicidad Pago R"
Cells(1, 48) = "Puesto"
Cells(1, 49) = "Riesgo Puesto"
Cells(1, 50) = "SBC"
Cells(1, 51) = "SDI"
Cells(1, 52) = "Sindicalizado"
Cells(1, 53) = "Tipo Contrato"
Cells(1, 54) = "Tipo Jornada"
Cells(1, 55) = "Tipo Regimen"
Cells(1, 56) = "Total Exento"
Cells(1, 57) = "Total Gravado"
Cells(1, 58) = "Total Sueldos"
Cells(1, 59) = "Total Impuestos Retenidos"
Cells(1, 60) = "Total Otras Deducciones"
Cells(1, 61) = "Clave Deducción"
Cells(1, 62) = "Concepto Deducción"
Cells(1, 63) = "Importe Deducción"
Cells(1, 64) = "Tipo Deduccion Deducción"
Cells(1, 65) = "Clave Deducción"
Cells(1, 66) = "Concepto Deducción"
Cells(1, 67) = "Importe Deducción"
Cells(1, 68) = "Tipo Deduccion"
Cells(1, 69) = "UUID"
Cells(1, 70) = "Fecha Timbrado"
Cells(1, 71) = "Rfc Proveedor Certificado"
Cells(1, 72) = "Sello CFD"
Cells(1, 73) = "No Certificado SAT"
Cells(1, 74) = "Sello SAT"

MsgBox "Se importaron " & Application.WorksheetFunction.CountA(Hoja1.Columns(24)) - 1 & " XML", , "Luis Reyes"

MsgBox "Importación Completa", , "Luis Reyes"

   ActiveSheet.UsedRange
   .Calculation = xlCalculationAutomatic
   .EnableEvents = True
   .DisplayStatusBar = True

 End With

End Sub



17 jul 2019

Declaración de Variables en VBA excel


En días anteriores hemos visto la manera de cómo crear una macro, como ejecutar dicha macro, la función Inputbox y el uso de las variables de una manera simple...creo jajaja
Ahora les voy a explicar brevemente como se tiene que declarar las variables
pero antes de comenzar, primero debemos saber qué tipos de variables hay: (te voy mostrar las que se usan de forma más común, "según yo")

Date para almacenar fechas
Double para números con punto decimal
Integer para almacenar números enteros
Long números de alta precisión
Object para almacenar objetos
Range para almacenar rangos
String para almacenar textos
Variant (esta variable ya viene definida por default)

Las variables pueden ser utilizadas en un procedimiento, modulo o proyecto.

Para declarar nuestras variables debemos:
Escribir DIM antes del nombre de nuestra variable y con AS definimos que tipo de variable es:
Por ejemplo:
*Dim Minombre As String*
Nuestra macro con la declaración de nuestra variable quedaría de la siguiente manera:
Sub MiPrimeraMacro()
Dim Minombre As String
Minombre = InputBox ("¿Cuál es tu nombre?")
Range("A1").Value = MiNombre
End Sub

y te has de preguntar, porque debo declarar mis variables, pues la respuesta es: para usar de mejor manera la memoria de nuestra Pc.

Macro para importar Archivos de texto (.txt) a Excel



Comúnmente al bajar información de muchos sistemas, esta se descarga en archivos de texto, y para poder analizar dicha información tenemos que importar este archivo a Excel.
En la actualidad hay muchos métodos para importar los archivos de texto a Excel, hoy les comparto esta macro para realizar esta tarea con una macro:



- Abre el editor de Visual Basic con las teclas ALT+F11.
- Inserta un módulo
- Pega el siguiente código:

Sub AbrirTXT()
       Application.ScreenUpdating = False 'Apagar el parpadeo de pantalla
       Application.DisplayAlerts = False 'Apagar Alertas
       Dim X As Variant
       X = Application.GetOpenFilename("Text Files (*.txt), *.txt, Add-in Files (*.txt), *.txt", 2, _
           "Abrir TXT", , True)
       For Y = 1 To UBound(X)
           Workbooks.Open X(Y)
       Next
End Sub


27 jun 2019

Función Inputbox vba Excel


En nuestra publicación pasada vimos como ejecutar una macro. ahora veremos el uso de la función Inputbox.
Para hacer uso de la función Inputbox necesitamos hacer uso de las variables.
Una variable es un dato o valor que VBA guarda en memoria.
Entonces nuestra variable se llamara "MiNombre" para usar nuestra función.
Hay varios tipos de Inputbox y se pueden aplicar varios parámetros. en este momento veremos solo lo básico.
(cabe aclarar que más adelante les explicaré como declarar las variables)
entonces nuestra macro anterior quedará de la siguiente manera:
Funcion Inputbox vba Excel

Sub MiPrimeraMacro()
Minombre = InputBox ("¿Cuál es tu nombre?")
Range("A1").Value = MiNombre
End Sub

26 jun 2019

Ejecutar Macros en Excel.


El día de ayer creamos nuestra primera macro, que fue algo sencilla, el día de hoy vamos a ejecutar esa macro.
Tienes 3 formas de hacer esto:
A. Ejecutar la macro desde el mismo Editor
Si te posicionas en cualquiera de las líneas de código de la macro y luego presionas la tecla F5 la macro se ejecutará (para ver el resultado puedes volver a la hoja Excel con ALT+F11).
B. Ejecutar la macro desde Excel
Otra forma de ejecutar la macro es desde el mismo Excel. Puedes hacerlo desde el ficha programador -> macros
C. Ejecutar la macro desde Excel con ALT+F8


25 jun 2019

Crear Macros en Excel


Para comenzar a trabajar con las macros, necesitamos entender 3 conceptos importantes: Objetos, Propiedades y Métodos.
Los objetos: es todo aquello que ves en Excel, un libro, una hoja, una celda, un rango, etc. (más adelante conoceremos los objetos)
Las propiedades: son las características de los objetos, como por ejemplo el alto de las celdas.
Los Métodos: son la acciones que vamos a realizar. 
Las Macros se trabajan en el lenguaje Visual Basic for Applications (VBA). 
Para realizar una macro se puede ser lo podemos hacer de forma manual y con la grabadora 
Así que vamos a comenzar con nuestra primera macro. 
Crear Macros en Excel

Primero lo vamos hacer manera manual, para este ejercicio vamos a colocar nuestro nombre la celda A1 de nuestra hoja activa: 
- Crea un nuevo libro Excel y guárdalo con el nombre Libro 1.
- Abre el editor de Visual Basic con las teclas ALT+F11.
- Al iniciar nuestra macro de llevar "Sub", nombre y parentesis ()
- Finalizar "End Sub"

Sub MiPrimeraMacro()
Range("A1").Value = "Luis Reyes"
End Sub



24 jun 2019

Extraer Información de CFDI 3.3 en Excel con fórmulas.



En publicaciones pasadas les he explicado cómo obtener información de un XML (CFDI 3.3) con macros, ahora llego el momento de explicarles cómo realizar esa tarea con una función, la función es llama: XMLFILTRO, cabe mencionar que esta función está disponible para las versiones de Excel 2013 en adelante.
Sintaxis:
XMLFILTRO(xml, xpath)
La sintaxis de la función XMLFILTRO tiene los siguientes argumentos:
Lenguaje:    Obligatorio. Es una cadena con formato XML válido.
Instrucción    Obligatorio. Es una cadena con formato XPath estándar.
EJEMPLO:
Para este ejemplo: solo tomamos un XML, la información de este elemento la colocamos en la celda A1, con la fórmula  XMLFILTRO, vamos a obtener el nodo de Total.





=XMLFILTRO($A$1,"//cfdi:Comprobante/@Total")

hay que recordar que cuando se trata de leer nodos se deben escribir tal y como están en el XML. si colocamos total, nos va marcar error, porque para la versión 3.3 el nodo se llama Total

17 jun 2019

Mostrar u Ocultar Hojas de Excel de manera segura (xlVeryHidden)


Cuando realizamos trabajos en Excel, necesitamos ocultar hojas a los demás usuarios, y Excel nos da muchas opciones para realizar esta labor, aquí te voy a describir algunas:
la opción una y la mas común es:
Ocultar hojas Excel

  • Clic derecho sobre la pestaña que queremos ocultar, damos clic en la opción ocultar.
Ocultar hojas Excel
  • Para mostrar clic derecho sobre cualquier pestaña, damos clic en la opción mostrar.
Esto también lo podemos realizar con una macro:

Sub Ocultar()
Hoja1.Visible = xlSheetHidden 'ocultamos la hoja Luis Reyes, en lugar de xlSheetHidden podemos utilizar FALSE
End Sub

Sub Mostrar()
Hoja1.Visible = xlSheetVisible 'mostramos la hoja Luis Reyes, en lugar de xlSheetVisible podemos utilizar TRUE
End Sub

Con todo lo anterior hemos logrado ocultar las hojas de manera en la que cualquier usuario puede mostrar nuestras hojas de trabajo. para ocultar nuestras hojas de una manera un poco más segura, podemos utilizar el método "xlVeryHidden", con este método, vamos a evitar que la hoja se pueda mostrar desde el menú contextual de las pestañas de las hojas.
Para lograr esto necesitamos:


1. Abrir el editor de Visual Basic para Aplicaciones. (Alt + F11)
Propiedad xlVeryHidden.webpPropiedad xlVeryHidden.webp

2. En Propiedades de la hoja, en la categoría: Visible seleccionamos la opción: "2 - xlVeryHidden".

Esto también lo podemos realizar con una macro:
Sub Ocultar()
Hoja1.Visible = xlSheetVeryHidden 'ocultamos la hoja Luis Reyes, en lugar de xlSheetHidden podemos utilizar FALSE
End Sub

El mostrar las hojas ocultas se puede complicarse cuando muchas hojas. pero para mostrar todas las hojas ocultas, podemos utilizar el siguiente VBA excel:

Sub MostrarTodasHojas()
    Dim Hojas As Worksheet
     For Each Hojas In ActiveWorkbook.Worksheets
        Hojas.Visible = xlSheetVisible
    Next Hojas

End Sub

Para facilitar toda esta labor Jorge L. Dunkelman en su blog: JLD Excel en Castellano - Usar Microsoft Excel eficientemente, nos obsequia un userform para tener un control de nuestras hojas.