Le processus de conversion à partir du journal MS Excel© à ADIF est relativement simple et peut être fait en utilisant un peu de programmation VBA. Grâce à cette lien peut se référer aux spécifications de l'ADIF 1.0 qui est utilisé par la plupart des journaux, est important que vous lisiez ce document.

Pour démarrer un processus de conversion basé sur ce tutoriel commence par créer un fichier dans MS Excel©. Dans le linge d'abord écrire le nom des champs que vous souhaitez importer (S'il vous plaît vérifiez l'ADIF 1.0 du nom des champs). Même dans la première ligne, Type “ADIF RAW” na dernière cellule, c'est là où le texte sera écrit en ADIF.

La feuille est de ressembler à ceci (mais toujours pas de données sur la ligne 2). Bien que le format ADIF ne précise pas de nombre minimum de champs, moins votre journal QSO doivent avoir des valeurs de l'appel, QSO_Date, Time_On, Bande mode.

Ensuite, sélectionnez toute la feuille et le format des cellules sous forme de texte.

Enregistrez le fichier sous xls2adi.xls (feuille de calcul dans Excel©)

Voyons maintenant écrire et insérer le code en VBA. Allez dans Outils / Macro et cliquez sur Visual Basic Editor (Alt F11).

Dans l'éditeur VBA double-cliquez sur "ThisWorkbook’ qui est dans le projet ' – VBAProject ». C'est là que vous obtenez le bloc principal de code qui s'exécute lorsque vous ouvrez ce fichier à nouveau.

Le bloc de code qui suit configure quelques variables et appelle la fonction fCampoAdifValido (en ligne 05) qui va vérifier si le nom du champ qui est sur la première ligne correspond à la spécification de l'ADIF. Si tous les noms des champs sont fonction correcte des appels de la procédure de pEscreveAdif (en ligne 09) va écrire le journal de l'ADIF, Si un champ a un nom invalide la fonction affiche un message d'erreur (en ligne 07) est complète.

Copiez / collez ou tapez le code suivant:

 

Private Sub Workbook_Open()
  As Boolean Dim bNomeDoCampoValido
  (conLinhaInicial)
  sUltimaColuna = fQualEAUltimaColuna(conColunaInicial)
  bNomeDoCampoValido = fCampoAdifValido(conColunaInicial, sUltimaColuna)
    Si bNomeDoCampoValido = False Then
       ("Trouvé noms des champs invalides" & vbCrLf & "Retirez les colonnes remplies en rouge!")
    D'autre
      

Dans l'éditeur VBA, cliquez sur Insertion / Module. Dans ce module sera le reste du code qui est appelé par le bloc principal.

Les constantes conLinhaInicial (en ligne 02 le bloc suivant) e conColunaInicial (en ligne 03 le bloc suivant) définir la ligne 2 (Tableur) avoir la première immatriculation et que la colonne A (Tableur) le premier champ.

Les fonctions fQualEAUltimaLinha (en ligne 08 le bloc suivant) e fQualEAUltimaColuna (en ligne 17 le bloc suivant) permettra de déterminer la dernière ligne et colonne de données. Cela nécessite une cellule vide signifie la fin de l'enregistrements de journaux.

La fonction de fCampoAdifValido (en ligne 05 ne précédentes bloco) teste la validité du nom de domaine. Select Case Le cycle «sNomeDoCampo’ (en ligne 31 le bloc suivant) plusieurs champs peuvent être ajoutés en fonction de la spécification de l'ADIF.

La procédure de pEscreveAdif (en ligne 09 ne précédentes bloco) va écrire le texte dans la colonne qui a ADIF “ADIF RAW” la première ligne. Cette procédure est tiré du champ de l'Ifen QSO_DATE, les deux points du champ et a ajouté un M TIME_ON à l'extrémité de la bande de terrain. Pour rendre cela plus macro peut être imposé des conditions plus strictes pour le contrôle des données dans cette procédure.

Copiez / collez ou tapez le code suivant dans le module:

 

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

(sPrimeiraColuna As String) La chaîne
  (sPrimeiraColuna)
    Do While Len(Folha1.Cells(1, Chr(iValRecebido))) > 0
      iValRecebido = iValRecebido + 1
    Boucle
  (iValRecebido - 1)
End Function

(sPrimeiraColuna As String, sUltimaColuna As String) La valeur booléenne
  (sPrimeiraColuna) Pour Asc(sUltimaColuna)
      sNomeDoCampo = LCase(Folha1.Cells(1, iColunaCorrente - 64))
      Select Case sNomeDoCampo
         "bande de": fCampoAdifValido = True
         "appel": fCampoAdifValido = True
         "CQZ": fCampoAdifValido = True
         "Mode": 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 premières"
          fCampoAdifValido = True
           - 64
        Case Else
          (1, iColunaCorrente - 64).Interior.Color = RGB(255, 0, 0)
          fCampoAdifValido = False
        ()
  As Integer Dim iLinhaCorrente
   ""
    Pour iColunaCorrente = Asc(conColunaInicial) Pour Asc(sUltimaColuna) - 1
      Si LCase(Folha1.Cells(1, Chr(iColunaCorrente))) = "bande de" Puis
        (iLinhaCorrente, Chr(iColunaCorrente)) & "M"
      D'autre
        (Folha1.Cells(1, Chr(iColunaCorrente))) = "qso_date" Puis
          (Folha1.Cells(iLinhaCorrente, Chr(iColunaCorrente)), "-", "")
        D'autre
          (Folha1.Cells(1, Chr(iColunaCorrente))) = "time_on" Puis
            (Folha1.Cells(iLinhaCorrente, Chr(iColunaCorrente)), ":", "")
          D'autre
            (iLinhaCorrente, Chr(iColunaCorrente))
          End If
         & "<" & LCase(Folha1.Cells(1, Chr(iColunaCorrente))) & ":" & Seuls les(sTextoNaCelula) & ">" & sTextoNaCelula
    (iLinhaCorrente, iAdifRaw) = SLinhaEmAdif & "<" & "RAH" & ">"
  Suivant

 

Cliquez sur Fichier / Enregistrer xls2adi.xls et fermer l'éditeur VBA.

Maintenant copier les données dans vos fichiers MS Excel© vous voulez convertir dans les colonnes appropriées, graves quitter à la fin et MS Excel©.

Vous devrez peut-être modifier les paramètres de MS Excel sugurança© d'exécuter des macros, si nécessaire aller dans Outils / Macro et cliquez sur Sécurité, choisir un niveau inférieur. Ceci a été écrit pour MS Excel© em MS Windows XP© (tant dans la version portugaise). Utilisez ce code est Noutra vai língua, par exemple en anglais, remplacer le terme Feuil1 "’ por "Feuil1’

Lorsque vous double-cliquez sur le fichier de xls2adi.xls, le code que vous venez d'entrer sera exécutée et que la colonne “ADIF RAW” est notre log au format ADIF.

Maintenant pour finir, sélectionner le contenu de la colonne “ADIF RAW” est la copie (Ctrl C), démarrage ou le Bloc-notes (Bloc-notes) Cole est (Ctrl V). Enregistrez le fichier avec l'extension supplémentaires.

Cet exemple de code est libre d'utiliser, vous pouvez utiliser librement. C'est un exemple très simple de ce qui ne peut être fait en utilisant VBA (Visual Basic pour Applications). Compléter ce code avec des validations plus précis, en particulier dans les domaines qso_date '’ e 'time_on', où les formats doivent correspondre à l'ADIF de spécification. Si vous constatez une erreur ou avez des questions, n'hésitez pas à commenter. J'espère que cet article vous sera utile.

Balises: ,