martes, 1 de marzo de 2022

Uso de Case Else en VBA para Microsoft Excel

En un Select Case de VBA para Microsoft Excel es posible crear un Case que se ejecute cuanto no se cumplan las condiciones de ninguno de los anteriores.




La instrucción concreta es la siguiente.




Esto sustituye en nuestro ejemplo con una sola instrucción a tres condicionales en nuestro ejemplo original.

Este es el código completo del ejemplo.





Sub condicional()

    'Declaramos una variable numerica

    Dim dia As Integer

    Dim dato As String

    

    dato = Range("B2").Value

    

    Select Case dato

        Case 1:

            MsgBox ("lunes")

            

        Case 2:

            MsgBox ("martes")

            

        Case 3:

            MsgBox ("miercoles")

            

        Case 4:

            MsgBox ("jueves")

            

        Case 5:

            MsgBox ("viernes")

            

        Case 6:

            MsgBox ("sabado")

            

        Case 7:

            MsgBox ("domingo")

        Case Else:

            MsgBox ("Dato incorrecto introduzca un numero del uno al siete")

            

    End Select

    

End Sub


sábado, 26 de febrero de 2022

Importando fichero SINLI LIBROS a Microsoft Excel (versión 3) usando lenguaje M

Para mejorar el proceso de importación a través de Power Query podemos hacer uso del lenguaje M. que aumenta las posibilidades que nos ofrece el entorno gráfico.

Por ejemplo, mediante una única instrucción Splitter.SplitTextByPositions, podemos separar todas las columnas que deseemos.



Nota:

Esta instrucción es la misma que utiliza el entorno gráfico, pero solo nos permite indicar una única división.


= Table.SplitColumn(Origen,"Column1",Splitter.SplitTextByPositions({0, 18}, false),{"Column1.1", "Column1.2"})

En el primer caso, se generan gran cantidad de pasos en la importación, en la imagen vemos los pasos para obtener 3 columnas.

Este es el aspecto del editor gráfico.



Utilizando la instrucción enditada en lenguaje M, podemos reducir todos esos pasos a solo uno.


Siendo el resultado una tabla con todos los campos del fichero plano divididos en columnas.



Aquí os dejo la instrucción completa para dividir en columnas el fichero SINLI LIBROS v8 mediante lenguaje M.

= Table.SplitColumn(Origen,"Column1",Splitter.SplitTextByPositions({0, 18, 35, 52, 69, 86, 101, 181, 261, 411, 413, 421, 461, 463, 466, 468, 474, 478, 482, 486, 506, 586, 587, 589, 599, 609, 614, 615, 655, 665, 669, 670, 820, 970, 975, 1125, 1128, 1131, 1137, 1140, 1141, 1156, 1236, 1316, 1352, 1607, 1610, 1660, 1668, 1676, 1875, 3000}, false),{"EAN ", "ISBN Con guiones Facturación ", "ISBN Con guiones Obra completa ", "ISBN Con guiones Tomo ", "ISBN Con guiones Fascículo ", "Referencia ", "Título completo ", "Subtítulo ", "Autor/es Apellidos Nombre ", "País de publicación ", "Editorial Código ISBN completado con ceros a la", "Editorial Nombre ", "Encuadernación ", "Lengua de publicación Código ", "Número de edición ", "Fecha de publicación Mes año ", "Número de páginas ", "Ancho en mm. ", "Alto en mm. ", "Tema Materia CDUmás de una separada ;", "Descriptores palabras clave ", "Situación en catálogo ", "Tipo de producto ", "PVP sin IVA en EUROS sin puntuación", "PV con IVA en EUROS sin puntuación", "Porcentaje de IVA 416... ", "Tipo de precio * Si el tipo de precio es “L” el precio sin IVA será el precio de cesión y el Precio con IVA será el precio de cesión más el IVA correspondiente a él.", "Colección ", "Nº de colección ", "Nº de volumen ", "Imagen de portada y/u otras ** El nombre del fichero a d j u nt o co n la /la s imágenes será el EAN13", "Ilustrador cubierta Apellidos Nombre", "Ilustrador interior Apellidos Nombre", "Nº de ilustraciones en Color ", "Traductor Apellidos Nombre ", "Idioma Original ", "Grosor en milímetros ", "Peso en gramos ", "Audiencia ", "Nivel de lectura ", "Solo para texto: Nivel Infantil- Primaria-Eso Bachillerato-FP- Universitaria", "Solo para texto: Curso. ", "Solo para texto: Asignatura ", "Solo para texto: Comunidad Autónoma", "Resumen ", "Tipo de versión de materia IBIC ", "Tema Materia IBIC más de una separada ;", "Fecha puesta en venta/lanzamiento ", "Fecha disponibilidad de existencias ", "Dirección URL ", "Resumen o sinopsis ampliados"})

jueves, 24 de febrero de 2022

Importando fichero SINLI LIBROS a Microsoft Excel (versión 2)

En este caso importaremos el fichero SINLI pero para ello usaremos el componente Power Query de Microsoft Excel.



Este componente nos va a permitir tratar el fichero e importar solo partes de él o crear campos adicionales a partir de lo existentes.


miércoles, 23 de febrero de 2022

Importando fichero SINLI LIBROS a Microsoft Excel (versión 1)

Hoy os traigo el proceso completo para importar las líneas de detalle de un fichero SINLI LIBROS en su versión 8, a Microsoft Excel.

Este formato es el se usa habitualmente para enviar la información del catálogo desde los editores a distribuidores y libreros.


La ventaja es que una vez preparado se puede reutilizar con facilidad.

viernes, 18 de febrero de 2022

Ejemplo de fichero SINLI

Hoy os traigo un ejemplo real de un fichero SINLI.

En la imagen se muestra el encabezado y la primera línea de detalle.

Las especificaciones son las siguientes.

Cada uno de los datos se puede localizar por su distancia al principio de la línea.

El siguiente paso es importarlo a Microsoft Excel.

jueves, 17 de febrero de 2022

Importación de catálogo de libros en formato SINLI a Microsoft Excel parte 2 saltarse el encabezado

¿Alguna vez os habéis parado a pensar que en una hoja de cálculo es posible indicar la primera fila desde la que importar datos de un fichero externo, pero no la última?


Esta característica está pensada para importar ficheros que incluyen algún tipo de cabecera, como es el caso de los formatos SINLI.

Lo único que tendremos que hacer es indicar la primera línea que queremos importar a Microsoft Excel desde el fichero de texto plano.



Este es un comportamiento estándar de todas las hojas de cálculo.

Apoyándonos en esta característica, podremos cargar directamente las líneas de detalle a nuestra hoja de cálculo.

miércoles, 16 de febrero de 2022

Importación de catálogo de libros en formato SINLI a Microsoft Excel

El estándar SINLI es un conjunto de protocolos enfocados a la cadena de venta y distribución del libro.

A diferencia del estándar EDI el cual es genérico, este es mucho más sencillo, ya que se centra solamente en el mundo del libro.

Se compone de diversos ficheros en texto plano que permiten el intercambio de información entre ordenadores.

Cada mensaje tiene su propio formato asociado.

La última versión de los formatos se puede consultar en la siguiente dirección:

http://www.fande.es/sinli_indicedocumentos.html

Los ficheros SINLI, a diferencia de los ficheros en formato CSV, los cuales tienen la misma estructura en todas sus líneas, se componen de una sección de encabezado y otra de líneas de detalle.

El encabezado tiene la siguiente estructura, pero a la hora de importar a Microsoft Excel, la vamos a ignorar.

En cuanto a las líneas de detalle tienen todas la misma estructura, tratándose de datos de ancho fijo, llagando cada línea a poder alcanzar más de 3000 caracteres 


A la hora de importar estos datos a Excel, lo haremos desde la opción Datos o directamente al abrir el fichero.

Indicaremos para ello la posición indicada en la columna Acumulado del documento que define el estándar.


Este es un trabajo árduo por lo que recomiendo crear un fichero al que podamos importar nuestros datos y luego reutilizarlo, evitando tener que definir las posiciones cada vez que deseemos importar datos.