Η διαδικασία της μετατροπής από το Μητρώο του MS Excel© να ADIF είναι σχετικά απλή και μπορεί να γίνει χρησιμοποιώντας ένα κομμάτι του προγραμματισμού VBA. Μέσω αυτής της σύνδεσμος μπορεί να αναφέρεται στις προδιαγραφές της ADIF 1.0 το οποίο χρησιμοποιείται από τους περισσότερους log, Είναι σημαντικό να διαβάσετε αυτό το έγγραφο.

Για να ξεκινήσετε τη διαδικασία μετατροπής που βασίζονται στο παρόν αρχίσει φροντιστήριο, δημιουργώντας ένα αρχείο σε MS Excel©. Στην πρώτη λινό Γράψτε το όνομα των πεδίων που θα θέλετε να εισάγετε (Παρακαλούμε ελέγξτε την ADIF 1.0 του ονόματος των πεδίων). Ακόμη και στην πρώτη γραμμή, τύπος “ADIF RAW” το τελευταίο κελί, Αυτό είναι όπου το κείμενο θα είναι γραμμένο σε ADIF.

Το φύλλο εργασίας μπορεί να μοιάζει κάπως έτσι (αλλά ακόμα δεν υπάρχουν στοιχεία για τη γραμμή 2). Παρά το γεγονός ότι η μορφή ADIF δεν προσδιορίζει τον ελάχιστο αριθμό των πεδίων, τουλάχιστον log QSO σας πρέπει να έχει αξίες να Call, QSO_Date, Time_On, Band e Λειτουργία.

Στη συνέχεια, επιλέξτε ολόκληρο το φύλλο εργασίας και να μορφοποιήσετε τα κελιά ως κείμενο.

Αποθηκεύστε το αρχείο ως xls2adi.xls (φύλλο εργασίας στο MS Excel©)

Ας γράφουν και να εισάγετε τον κωδικό στο VBA. Πηγαίνετε στο Εργαλεία / Μακροεντολή και κάντε κλικ στην επιλογή Επεξεργασία Visual Basic (Alt F11).

Στο πρόγραμμα επεξεργασίας VBA ThisWorkbook κάντε διπλό κλικ στο "’ αυτό είναι το «Σχέδιο – «VBAProject. Αυτό είναι όπου μπορείτε να πάρετε το κύριο μπλοκ του κώδικα που θα εκτελεστεί όταν ανοίξετε το αρχείο ξανά.

Το μπλοκ του κώδικα που ακολουθεί θέτει ορισμένες μεταβλητές, και καλεί την fCampoAdifValido λειτουργία (γραμμή 05) ότι θα ελέγξει αν το όνομα του πεδίου που είναι στην πρώτη γραμμή αντιστοιχεί στην προδιαγραφή του ADIF. Εάν όλα τα ονόματα των πεδίων σωστή λειτουργία αποκαλεί pEscreveAdif διαδικασία (γραμμή 09) θα γράψει το αρχείο καταγραφής σε ADIF, Εάν ένα πεδίο έχει ένα μη έγκυρο όνομα της συνάρτησης εμφανίζει ένα μήνυμα σφάλματος (γραμμή 07) και τελειώνει.

Αντιγραφή / επικόλληση ή πληκτρολογήστε τον ακόλουθο κώδικα:

 

Private Sub Workbook_Open()
  Όπως Boolean Dim bNomeDoCampoValido
  (conLinhaInicial)
  sUltimaColuna = fQualEAUltimaColuna(conColunaInicial)
  bNomeDoCampoValido = fCampoAdifValido(conColunaInicial, sUltimaColuna)
    Αν bNomeDoCampoValido = False συνέχεια
       ("Βρέθηκαν άκυρα ονόματα τομέα" & vbCrLf & "Αφαιρέστε τις στήλες συμπληρώνονται κόκκινο!")
    Αλλιώς
      

Στο πρόγραμμα επεξεργασίας της VBA, επιλέξτε Εισαγωγή / Ενότητα. Σε αυτή την ενότητα θα είναι το υπόλοιπο κώδικα που καλείται από το κύριο μπλοκ.

Οι σταθερές conLinhaInicial (γραμμή 02 το επόμενο μπλοκ) και conColunaInicial (γραμμή 03 το επόμενο μπλοκ) καθορίσουν τη γραμμή 2 (Υπολογιστικών φύλλων) έχουν την πρώτη εγγραφή και ότι η στήλη A (Υπολογιστικών φύλλων) το πρώτο πεδίο.

Οι λειτουργίες fQualEAUltimaLinha (γραμμή 08 το επόμενο μπλοκ) και fQualEAUltimaColuna (γραμμή 17 το επόμενο μπλοκ) θα καθορίσει την τελευταία γραμμή και τα δεδομένα στήλης. Αυτό απαιτεί ένα κενό κελί σημαίνει το τέλος των εγγραφών ημερολογίου.

Η fCampoAdifValido λειτουργία (γραμμή 05 το προηγούμενο μπλοκ) ελέγχει το κύρος του ονόματος τομέα. Επιλέξτε υπόθεση sNomeDoCampo του κύκλου »’ (γραμμή 31 το επόμενο μπλοκ) περισσότερα πεδία μπορούν να προστεθούν σύμφωνα με τις προδιαγραφές του ADIF.

Η pEscreveAdif διαδικασία (γραμμή 09 το προηγούμενο μπλοκ) θα γράψει το κείμενο της στήλης που έχει ADIF “ADIF RAW” η πρώτη γραμμή. Η διαδικασία αυτή έχει ληφθεί από το πεδίο Ifen QSO_DATE, τα δύο σημεία του τομέα και πρόσθεσε M TIME_ON στο τέλος της μπάντας τομέα. Για να γίνει αυτό πιο μακροεντολή μπορεί να επιβληθούν αυστηρότερες προϋποθέσεις για τον έλεγχο των δεδομένων σε αυτή τη διαδικασία.

Αντιγραφή / επικόλληση ή πληκτρολογήστε τον ακόλουθο κώδικα στο πλαίσιο της ενότητας:

 

Option Explicit
 2
Δημόσια Const conColunaInicial As String = "Μια"
Όπως Integer Δημόσια iUltimaLinha
(iPrimeiraLinha As Integer) Όπως Integer
  (Folha1.Cells(iValRecebido, "Μια")) > 0
      iValRecebido = iValRecebido + 1
    Βρόχος
   - 1
Λειτουργία End

(sPrimeiraColuna Όπως String) Το String
  (sPrimeiraColuna)
    Να Ενώ Len(Folha1.Cells(1, Χρ(iValRecebido))) > 0
      iValRecebido = iValRecebido + 1
    Βρόχος
  (iValRecebido - 1)
Λειτουργία End

(sPrimeiraColuna Όπως String, sUltimaColuna Όπως String) Η Boolean
  (sPrimeiraColuna) Για να Asc(sUltimaColuna)
      sNomeDoCampo = LCase(Folha1.Cells(1, iColunaCorrente - 64))
      Επιλέξτε υπόθεση sNomeDoCampo
         "μπάντα": fCampoAdifValido = True
         "κλήση": fCampoAdifValido = True
         "CQZ": fCampoAdifValido = True
         "τρόπος": 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 πρώτων"
          fCampoAdifValido = True
           - 64
        Υπόθεση Else
          (1, iColunaCorrente - 64).Interior.Color = RGB(255, 0, 0)
          fCampoAdifValido = False
        ()
  As Integer Dim iLinhaCorrente
   ""
    Για iColunaCorrente = Asc(conColunaInicial) Για να Asc(sUltimaColuna) - 1
      Αν LCase(Folha1.Cells(1, Χρ(iColunaCorrente))) = "μπάντα" Τότε
        (iLinhaCorrente, Χρ(iColunaCorrente)) & "M"
      Αλλιώς
        (Folha1.Cells(1, Χρ(iColunaCorrente))) = "qso_date" Τότε
          (Folha1.Cells(iLinhaCorrente, Χρ(iColunaCorrente)), "-", "")
        Αλλιώς
          (Folha1.Cells(1, Χρ(iColunaCorrente))) = "time_on" Τότε
            (Folha1.Cells(iLinhaCorrente, Χρ(iColunaCorrente)), ":", "")
          Αλλιώς
            (iLinhaCorrente, Χρ(iColunaCorrente))
          End If
         & "<" & LCase(Folha1.Cells(1, Χρ(iColunaCorrente))) & ":" & Μόνο(sTextoNaCelula) & ">" & sTextoNaCelula
    (iLinhaCorrente, iAdifRaw) = SLinhaEmAdif & "<" & "EOR" & ">"
  Επόμενος

 

Κάντε κλικ στην επιλογή File / Save xls2adi.xls και κλείστε τον κειμενογράφο VBA.

Τώρα αντιγράψετε τα δεδομένα σε αρχεία MS Excel σας© που θέλετε να μετατρέψετε σε κατάλληλες στήλες, σοβαρά το κόψει στο τέλος και MS Excel©.

Μπορεί να χρειαστεί να αλλάξετε τις ρυθμίσεις για το MS Excel sugurança© για να εκτελέσετε μακροεντολές, εάν είναι απαραίτητο πηγαίνετε στο Εργαλεία / Μακροεντολή και κάντε κλικ στο κουμπί Ασφάλεια, Επιλέξτε ένα χαμηλότερο επίπεδο. Αυτό γράφτηκε για το MS Excel© em MS Windows XP© (τόσο στο πορτογαλικό κείμενο). Εάν πρόκειται να χρησιμοποιήσετε αυτόν τον κωδικό στην άλλη γλώσσα, π.χ. στα αγγλικά, Φύλλο1 αντικαταστήσει τον όρο "’ Φύλλο1 por »’

Όταν κάνετε διπλό κλικ στο αρχείο xls2adi.xls, τον κωδικό που μόλις άρχισε θα εκτελεστεί και η στήλη “ADIF RAW” Σύνδεση μας είναι σε μορφή ADIF.

Τώρα για να ολοκληρωθεί, Επιλέξτε το περιεχόμενο στήλη “ADIF RAW” είναι αντίγραφο (Ctrl C), Ξεκινήστε το Notepad (Μπλοκ) και τα αναψυκτικά τύπου κόλα (Ctrl V). Αποθηκεύστε το αρχείο με την πρόσθετη επέκταση.

Αυτό το δείγμα κώδικα είναι ελεύθερη να χρησιμοποιήσει, μπορείτε να χρησιμοποιήσετε ελεύθερα. Πρόκειται για ένα πολύ απλό παράδειγμα του τι μπορεί να γίνει μόνο με χρήση της VBA (Visual Basic for Applications). Συμπληρώσει αυτή επικυρώσεις κώδικας με πιο ακριβή, ειδικά σε qso_date των πεδίων’ «time_on« e, όπου οι μορφές πρέπει να ταιριάζει με τις προδιαγραφές ADIF. Αν παρατηρήσετε κάποιο σφάλμα ή έχετε οποιαδήποτε απορία, δεν διστάζουν να σχολιάσουν. Ελπίζω ότι το άρθρο θα είναι χρήσιμο.