El proceso de conversión de registro de MS Excel© para ADIF es relativamente simple y se puede hacer con un poco de programación VBA. A través de este enlace puede referirse a las especificaciones de la ADIF 1.0 que es utilizado por la mayoría de los registros, Es importante que usted lea este documento.

Para iniciar un proceso de conversión sobre la base de este principio tutorial mediante la creación de un archivo en MS Excel©. En la ropa de primera Escriba el nombre de los campos que se desea importar (Por favor, consulte el ADIF 1.0 del nombre de los campos). Incluso en la primera línea, tipo “ADIF RAW” la última celda, aquí es donde el texto se escribirá en ADIF.

La hoja de trabajo es algo parecido a esto (pero todavía no hay datos en la línea 2). Aunque el formato ADIF no especifica un número mínimo de campos, por lo menos el registro de QSO deben tener valores para llamadas, QSO_Date, Time_on, Banda e modo.

A continuación, seleccione toda la hoja y el formato de las celdas como texto.

Guarde el archivo como xls2adi.xls (hoja de cálculo de MS Excel©)

Vamos ahora a escribir e insertar el código en VBA. Ir a Herramientas / Macro y haga clic en Editor de Visual Basic (Alt F11).

En el editor de VBA, haga doble clic en ThisWorkbook '’ que está en el proyecto ' – VBAProject ". Aquí es donde se obtiene el bloque principal de código que se ejecutará cuando se abre este archivo de nuevo.

El bloque de código que sigue establece algunas variables y llama a la función fCampoAdifValido (línea 05) que comprobar si el nombre del campo que se encuentra en la primera línea corresponde a la especificación de la ADIF. Si todos los nombres de campo se llama a la función correcta pEscreveAdif procedimiento (línea 09) escribirá en el registro de ADIF, Si un campo tiene un nombre no válido a la función muestra un mensaje de error (línea 07) y termina.

Copiar / pegar o escribir el siguiente código:

 

Privado Sub Workbook_Open()
  As Boolean Dim bNomeDoCampoValido
  (conLinhaInicial)
  sUltimaColuna = fQualEAUltimaColuna(conColunaInicial)
  bNomeDoCampoValido = fCampoAdifValido(conColunaInicial, sUltimaColuna)
    Si bNomeDoCampoValido = False Then
       ("Encuentran los nombres de campo no válido" & vbCrLf & "Eliminar las columnas llenas de color rojo!")
    Más
      

En el editor de VBA, haga clic en Insertar / Módulo. En este módulo será el resto del código que es llamado por el bloque principal.

Las constantes conLinhaInicial (línea 02 el siguiente bloque) y conColunaInicial (línea 03 el siguiente bloque) definir la línea 2 (Hoja de cálculo) tiene el primer registro y que la columna A (Hoja de cálculo) el primer campo.

El fQualEAUltimaLinha funciones (línea 08 el siguiente bloque) e fQualEAUltimaColuna (línea 17 el siguiente bloque) determinará la última fila y la columna de datos. Esto requiere de una celda vacía significa el final de los registros.

La función fCampoAdifValido (línea 05 el bloque anterior) comprueba la validez del nombre de campo. SNomeDoCampo seleccione el ciclo 'Case’ (línea 31 el siguiente bloque) más campos se pueden agregar de acuerdo a la especificación de la ADIF.

El procedimiento pEscreveAdif (línea 09 el bloque anterior) va a escribir el texto en la columna que tiene ADIF “ADIF RAW” la primera línea. Este procedimiento se toma del campo QSO_DATE Ifen, los dos puntos del campo y agregó un M time_on en la final de la banda de campo. Para hacer esta macro más se puede imponer condiciones más estrictas para verificar los datos en este procedimiento.

Copiar / pegar o escribir el siguiente código dentro del módulo:

 

Option Explicit
 2
Public Const conColunaInicial As String = "A"
As Integer Public iUltimaLinha
(iPrimeiraLinha As Integer) As Integer
  (Folha1.Cells(iValRecebido, "A")) > 0
      iValRecebido = iValRecebido + 1
    Bucle
   - 1
End Function

(La cadena sPrimeiraColuna) La Cadena
  (sPrimeiraColuna)
    Si bien se Len(Folha1.Cells(1, Comisión de Derechos Humanos(iValRecebido))) > 0
      iValRecebido = iValRecebido + 1
    Bucle
  (iValRecebido - 1)
End Function

(La cadena sPrimeiraColuna, sUltimaColuna As String) La Boolean
  (sPrimeiraColuna) Para Asc(sUltimaColuna)
      sNomeDoCampo = LCase(Folha1.Cells(1, iColunaCorrente - 64))
      Select Case sNomeDoCampo
         "banda": fCampoAdifValido = true "llamar": fCampoAdifValido = true "cqz": fCampoAdifValido = true "modo": fCampoAdifValido = true "qso_date": fCampoAdifValido = true "rst_rcvd": fCampoAdifValido = true "rst_sent": fCampoAdifValido = true "srx": fCampoAdifValido = true "stx": fCampoAdifValido = true "time_on": fCampoAdifValido = true "adif primas"
          fCampoAdifValido = True
           - 64
        Case Else
          (1, iColunaCorrente - 64).Interior.Color = RGB(255, 0, 0)
          fCampoAdifValido = False
        ()
  As Integer Dim iLinhaCorrente
   ""
    Para iColunaCorrente = Asc(conColunaInicial) Para Asc(sUltimaColuna) - 1
      Si LCase(Folha1.Cells(1, Comisión de Derechos Humanos(iColunaCorrente))) = "banda" Entonces
        (iLinhaCorrente, Comisión de Derechos Humanos(iColunaCorrente)) & "M"
      Más
        (Folha1.Cells(1, Comisión de Derechos Humanos(iColunaCorrente))) = "qso_date" Entonces
          (Folha1.Cells(iLinhaCorrente, Comisión de Derechos Humanos(iColunaCorrente)), "-", "")
        Más
          (Folha1.Cells(1, Comisión de Derechos Humanos(iColunaCorrente))) = "time_on" Entonces
            (Folha1.Cells(iLinhaCorrente, Comisión de Derechos Humanos(iColunaCorrente)), ":", "")
          Más
            (iLinhaCorrente, Comisión de Derechos Humanos(iColunaCorrente))
          End If
         & "<" & LCase(Folha1.Cells(1, Comisión de Derechos Humanos(iColunaCorrente))) & ":" & Sólo(sTextoNaCelula) & ">" & sTextoNaCelula
    (iLinhaCorrente, iAdifRaw) = SLinhaEmAdif & "<" & "EOR" & ">"
  Próximo

 

Haga clic en Archivo / Guardar xls2adi.xls y cierre el editor de VBA.

Ahora copia los datos en MS Excel© que desea convertir a las columnas correspondientes, seria dejar de fumar al final y MS Excel©.

Es posible que deba cambiar la configuración de MS Excel sugurança© para ejecutar macros, si es necesario, vaya a Herramientas / Macro y haga clic en Seguridad, elegir un nivel inferior. Esto fue escrito para MS Excel© em MS Windows XP© (tanto en la versión en portugués). Si va a utilizar este código en otro idioma, por ejemplo, en Inglés, Sheet1 reemplazar el término "’ Por "Sheet1’

Al hacer doble clic en el archivo xls2adi.xls, el código que acaba de introducir será ejecutado y la columna “ADIF RAW” es nuestro registro en formato ADIF.

Ahora para terminar, seleccionar el contenido de la columna “ADIF RAW” e copie (Ctrl C), Inicie Bloc de notas (Bloc) e cole (Ctrl V). Guarde el archivo con la extensión adicional.

Este ejemplo de código es de uso gratuito, usted puede usar libremente. Es un ejemplo muy simple de lo que sólo se puede hacer con VBA (Visual Basic para Aplicaciones). Complementar este código de validación con mayor precisión, especialmente en los campos 'qso_date’ 'time_on' e, en los formatos debe coincidir con la especificación de ADIF. Si detecta un error o tiene alguna pregunta, no dude en comentar. Espero que el artículo sea útil.