Creación de un informe con el nombre de código VBA

Si utiliza una gran cantidad de células y rangos con nombre en el libro, es posible que se sorprenda al descubrir que Excel no proporciona ninguna manera de enumerar los detalles de cada nombre. Información de interés aparece en el cuadro de diálogo Administrador de nombres, pero no hay manera de mostrar esta información de una manera que se puede imprimir.

El código VBA se ofrece aquí genera un informe útil que describe los nombres definidos en ningún libro.

Ejemplo Nombre Reportar

Aquí, se ve un ejemplo de un Nombre de informe.

imagen0.jpg

El informe, que se crea en una nueva hoja de trabajo, incluye la siguiente información para cada nombre:

  • Nombre: El nombre.

  • Se refiere a: La definición para el nombre. Por lo general, esto será una celda o rango, sino un nombre también puede definir fórmula.

  • Células: El número de células contenidas en el rango con nombre. Para fórmulas con nombre, este campo muestra # N / A.

  • Alcance: El alcance del nombre - ya sea libro de trabajo, o el nombre de la hoja de trabajo específico en el que el nombre es válido.

  • Oculto: True si el nombre está oculto. Nombres ocultos son creados por algunos complementos (como Solver), y no aparecen en el cuadro de diálogo Administrador de nombres.

  • Error: True si el nombre contiene una referencia errónea.

  • Enlace: Un hipervínculo que, cuando se hace clic, se activa el rango con nombre. Sólo los nombres que hacen referencia a las celdas o rangos incluyen un enlace.

  • Comentario: El comentario para que el nombre, si lo hay.

El código VBA

Para utilizar este código, presione Alt + F11 para activar el Editor de Visual Basic. A continuación, elija Insertar - Módulo para insertar un nuevo módulo de VBA. Copia el código y pegarlo en el nuevo módulo.

Sub GenerateNameReport () 'Genera un informe de todos los nombres en el libro' (No incluye los nombres de tabla) n dévil como NameDim Fila Como LongDim CellCount Como variante 'Salir si no namesIf ActiveWorkbook.Names.Count = 0 ThenMsgBox " El libro activo no tiene nombres definidos ". Salir Salir SubEnd Si 'si libro es protectedIf ActiveWorkbook.ProtectStructure ThenMsgBox " Una nueva hoja no se puede añadir porque el libro está protegido " Salir SubEnd Si 'Insertar una nueva hoja para el reportActiveWorkbook.Worksheets.AddActiveSheet.Move Después:. = Sheets (ActiveWorkbook.Sheets.Count) ActiveWindow.DisplayGridlines = Falso 'Añadir la primera línea de titleRange (" A1: H1 ") MergeWith Range (" A1 ") Valor =.. " Nombre Informe para: " ActiveWorkbook.Name.Font.Size = 14.Font.Bold = True.HorizontalAlignment = xlCenterEnd Con 'Añadir segunda línea de titleRange (" A2: H2 ") Rango MergeWith (" A2 ").. Valor = " Generado " Now.HorizontalAlignment = xlCenterEnd Con 'Agregar el headersRange (" A4: H4 ") = Array (" # 148 ;, Nombre " # 148 ;, RefersTo " Células # 148 ;, _ " # 148 ;, Alcance " # 148 ;, Ocultos " # 148 ;, Error " # 148 ;, Enlace " El comentario ") 'Recorrer el Error Resume namesRow = 4en NextFor Cada n En ActiveWorkbook.NamesRow = Fila + 1'Column A: nameif n.Name igual "! * * " ThenCells (fila, 1) = Dividir (n.Name, ! " ") (1) 'Eliminar hoja nameElseCells (Fila, 1) = n.NameEnd If'Column B: RefersToCells (fila, 2) = " '" n.RefersTo'Column C: Número de cellsCellCount = CVErr (xlErrNA) 'Valor de retorno de llamada formulaCellCount = n.RefersToRange.CountLargeCells (Fila, 3) = CellCount' Columna D: ScopeIf n.Name igual "! * * " ThenCells (Fila, 4) = Dividir (n.Name, "! ") (0) 'nameCells hoja de extracto (Fila, 4) = Replace (Cells (Fila, 4), " '“ ;, " ") 'eliminar apostrophesElseCells (fila, 4) = " Cuaderno " Fin If'Column E: statusCells Ocultos (Fila, 5) = No n.Visible'Column F: Erroroneous nameCells (Fila, 6) = n.RefersTo igual " * [#] REF * " 'Columna G: HyperlinkIf No Application.IsNA (Cells (Fila, 3)) ThenActiveSheet.Hyperlinks.Add _Anchor: = Cells (Fila, 7), _Address: = “ ; “ ;, _SubAddress: = n.Name, _TextToDisplay: = n.NameEnd If'Column H: CommentCells (fila, 8) = n.CommentNext n 'Convertir a un tableActiveSheet.ListObjects.Add _SourceType: = xlSrcRange, _Source :. = Range (" A4 ") CurrentRegion 'Ajuste las widthsColumns columna (" A: H ") EntireColumn.AutoFitEnd Sub.

Generación de un informe

Ejecute el GenerateNameReport procedimiento, y el informe se genera en una nueva hoja de cálculo del libro activo. El código no tiene que estar en el libro que contiene los nombres para el informe.

Si usted encuentra este código útil, es posible que desee almacenar en su libro de macros personal, o crear un complemento.




» » » » Creación de un informe con el nombre de código VBA