2013-04-25

Mensaje emergente al abrir un fichero Ms Excel

La función MsgBox en VBA muestra un cuadro de diálogo al usuario y, si lo necesitamos, captura su respuesta (por ejemplo: Sí, No o Cancelar). Uno de los múltiples usos es desplegar este mensaje de texto al abrir un fichero de Excel.

Para ello necesitamos abrir el editor de Visual Basic Alt+F11 e insertar el código en ThisWorkBook. En el menú desplegable Objeto, selecciona Workbook. Por defecto Excel crea:
Private Sub Workbook_Open() ....[Inserta el código aquí] ... End Sub




La sintaxis en español es MsgBox(texto[, botones] [, título] [, archivoayuda, contexto])

Ejemplo 1-Mensaje simple

Private Sub Workbook_Open()
  MsgBox "1-El libro está en cálculo manual" & vbCrLf & _
  "2-Haz clic en F9 para recalcular fórmulas" & vbCrLf & _
  "", vbInformation, "INFORMACION"
End Sub
Escribimos el texto del mensaje, Chr(13) o vbCrLf, para insertar saltos de línea. VbInformation muestra el icono de mensaje de información y en el argumento título "INFORMACION".


 Ejemplo 2-Captura respuesta del usuario

Private Sub Workbook_Open()
    Dim Respuesta As VbMsgBoxResult
    Respuesta = MsgBox("¿Conoces la sintaxis de MsgBox?", _
    vbQuestion + vbYesNo, "Nube de datos")
    If respuesta = vbYes Then 'Haz X
        MsgBox "Perfecto. ¿Usas la función frecuentemente?", vbInformation
        Else                  'Haz Y
        MsgBox "Quizá deberías ir al enlace propuesto" & Chr(13) & _
        "o leer la ayuda de Excel", vbExclamation
    End If
End Sub
Capturamos la respuesta del usuario con la variable Respuesta. Con vbQuestion + vbYesNo mostramos el icono de pregunta de advertencia y los botones Sí y No, en el argumento título "Nube de datos". La respuesta la manejamos con un If. vbInformation para el icono del sí y vbExclamation para el del no
.

Otra alternativa a If, quizá más clara y eficiente, es usar Select Case

Private Sub Workbook_Open()
    Dim Respuesta As VbMsgBoxResult
    Respuesta = MsgBox("¿Conoces la sintaxis de MsgBox?", _
    vbQuestion + vbYesNoCancel, "Nube de datos")
    Select Case Respuesta
     Case vbYes 'Haz X
         MsgBox "Perfecto. ¿Usas la función frecuentemente?", vbInformation
     Case vbNo  'Haz Y
         MsgBox "Quizá deberías ir al enlace propuesto" & Chr(13) & _
        "o leer la ayuda de Excel", vbExclamation
     Case vbCancel
         Exit Sub 'Haz Z
    End Select
End Sub

Cambiamos el argumento [botones] para mostrar , No y Cancelar.

Información detallada de la función MsgBox en: Ayuda de Excel/Referencia del lenguaje de Visual Basic/Funciones/M-P/MsgBox (Función)

2013-04-23

Importar una especificación de importación/exportación en Ms Access: dos métodos

MÉTODO 1

1. Abrir la base de datos Access que necesita las especificaciones.

2. En la ficha Datos externos,en el grupo Importar, haz clic en Access.

3. Seleccionar la base de datos Access que contiene las especificaciones y hacer clic en aceptar


4. En el menú Importar Objetos, hacer clic en Opciones >>























5. Desactivar la casilla de verificación de las Relaciones, activar la casilla de verificación de Especificaciones de importación/exportación y hacer clic en Aceptar.














 


MÉTODO 2

Otro método menos ortodoxo, que no he encontrado documentado:

1. Abrir la base de datos Access que contiene las especificaciones.

2. En la ficha Datos externos,en el grupo Importar, hacer clic en Archivo de texto.

3. Seleccionar la base de datos Access que contiene las especificaciones y hacer clic en aceptar


 
4. En el Asistente para la importación de texto, clic sobre Avanzado, y en el menú emergente, clic sobre Especificaciones para abrir la especificación que queremos copiar. En Información del campo, clic en la esquina superior izquierda de la tabla y Ctrl + C, para copiar la tabla con las especificaciones.


5. Abrir la base de datos Access que necesita las especificaciones y repetir pasos 1, 2, 3. En el paso 4, en lugar de copiar la tabla con las especificaciones, pegarla con Ctrl + V. Confirmar que desea pegar los registros.

























Aprende a  importar o vincular a los datos de un archivo de texto

2013-04-22

Etiquetar en Ms Excel registros que contienen un determinado carácter o cadena

En una entrada anterior, vimos cómo crear en Ms Access un campo calculado para etiquetar los registros que incluyen un determinado carácter o cadena. Si tenemos el mismo problema en Ms Excel, creamos una columna que nos  identifique si el campo Cargo del contacto es Gerente, Representante o, si no es ninguno de los dos, Otros.

Dos opciones serían, copiar en la celda L2:
=SI(ESNUMERO(ENCONTRAR("Ger";D2));"Gerente";
SI(ESNUMERO(ENCONTRAR("Rep";D2));"Representante";"Otros"))
=SI(ESNUMERO(HALLAR("Ger";D2));"Gerente";
SI(ESNUMERO(HALLAR("Rep";D2));"Representante";"Otros"))

La función ENCONTRAR o HALLAR devuelve la posición de la cadena indicada (Ger o Rep) en la celda especificada. Con SI se evalua si lo anterior es verdadero, y lo etiquetaría como "Gerente" o pasaría al siguiente SI anidado. Usamos la función ESNUMERO porque la función ENCONTRAR o HALLAR, si no encuentra la cadena indicada, devuelve el error #¡VALOR!.

Copiamos cualquiera de las dos fórmulas anteriores y arrastramos hacia abajo. El resultado final sería:


En otra ocasión examinaremos las diferencias entre ENCONTRAR y HALLAR.

Entradas relacionadas: 
  1. Etiquetar en Ms Access registros que contienen un determinado carácter o cadena

2013-04-19

Menú emergente con las 15 primeras hojas de un libro de Excel

Normalmente, para desplazarnos entre las hojas de un libro de Excel, hacemos clic sobre la hoja deseada, utilizamos los comandos Ctrl + Av Pág o Ctrl + Re Pág, o los botones de desplazamiento:

Botones de desplazamiento
Una alternativa, cuando tenemos muchas hojas, es hacer clic con el botón secundario del ratón sobre los botones de desplazamiento. Aparecerá un menú emergente con las 15 primeras hojas:

Si hubiera más de 15 hojas habría que seleccionar Más hojas... para acceder a la lista completa:


2013-04-12

Etiquetar en Ms Access registros que contienen un determinado carácter o cadena

Por ejemplo, a la tabla de Proveedores de la base de datos Neptuno (Bases de datos de muestra incluida en Access), queremos añadir un nuevo campo que identifique si el campo Cargo del contacto es Gerente, Representante o, si no es ninguno de los dos, Otros.








1.Creamos una consulta basada en la tabla Proveedores
2.Agregamos un campo calculado, Tipo de cargo.

 En el generador de expresiones escribimos:


Usamos SiInm anidados. La función EnCad, busca sucesivamente en el campo [Proveedores]![CargoContacto] la cadena que le indicamos (Gerente y Representante), y la etiqueta con el nombre correspondiente, y si no encuentra ninguna de las dos, escribe Otros.

3.El resultado de la consulta, con el campo Tipo de cargo que etiqueta los registros, sería:


Si queremos etiquetar también las abreviaturas Ger. como Gerente y Repr. como Representantes, modificaríamos la expresión anterior para que no aparezcan como Otros:
Tipo de cargo: SiInm(EnCad([Proveedores]![CargoContacto];"Ger");"Gerente";
SiInm(EnCad([Proveedores]![CargoContacto];"Repr");"Representante";"Otros"))

Entradas relacionadas:
  1. Etiquetar en Ms Excel registros que contienen un determinado carácter o cadena
Nube de datos