Processen med konvertering fra MS Excel logbog© til ADIF er forholdsvis enkel og kan gøres ved hjælp af en smule programmering VBA. Gennem denne link kan henvise til de specifikationer af ADIF 1.0 som bruges af de fleste logger, er vigtigt, at du læser dette dokument.
For at starte en konvertering proces baseret på denne tutorial begynde med at oprette en fil i MS Excel©. I den første linned Skriv navnet på de felter, du ønsker at importere (Tjek venligst ADIF 1.0 af navnet på markerne). Selv i den første linje, typen “ADIF RAW” na sidste celle, Det er her den tekst vil blive skrevet i ADIF.
I regnearket er at se sådan ud (men stadig ingen data på linien 2). Selv om ADIF format ikke angive et minimum antal felter, mindst din QSO log skal have værdier til Ring, QSO_Date, Time_On, Band e-tilstand.
Vælg derefter hele regnearket, og formatere cellerne som tekst.
Gem filen som xls2adi.xls (regneark i MS Excel©)
Lad os nu skrive og indsætte koden i VBA. Gå til Funktioner / Makro, og klik på Visual Basic Editor (Alt F11).
I VBA editoren skal du dobbeltklikke på 'ThisWorkbook’ der er i 'Projekt – VBAProject '. Det er her du får den største blok af kode, der vil køre, når du åbner denne fil igen.
Den blok af kode, der følger sætter nogle variabler og kalder funktionen fCampoAdifValido (line 05) , der vil kontrollere, om feltet navn, der er på den første linje svarer til specifikationen af ADIF. Hvis alle feltnavnene er korrekte funktion kalder proceduren pEscreveAdif (line 09) vil skrive logge ind ADIF, Hvis et felt har et ugyldigt navn funktionen viser en fejlmeddelelse (line 07) og slutter.
Copy / paste eller skriv følgende kode:
Private Sub Workbook_Open() Som Boolean Dim bNomeDoCampoValido (conLinhaInicial) sUltimaColuna = fQualEAUltimaColuna(conColunaInicial) bNomeDoCampoValido = fCampoAdifValido(conColunaInicial, sUltimaColuna) Hvis bNomeDoCampoValido = False Så ("Fundet ugyldige feltnavne" & vbCrLf & "Fjern kolonner fyldt med rødt!") Else
I VBA editoren, klikke på Indsæt / modul. I dette modul vil være den resterende kode, der kaldes af de største blok.
Konstanterne conLinhaInicial (line 02 den næste blok) og conColunaInicial (line 03 den næste blok) definerer linjen 2 (Regneark) har den første registrering, og at kolonne A (Regneark) det første felt.
Funktionerne fQualEAUltimaLinha (line 08 den næste blok) og fQualEAUltimaColuna (line 17 den næste blok) vil afgøre den sidste række og kolonne data. Dette kræver en tom celle betyder slutningen af loggen registrerer.
Funktionen fCampoAdifValido (line 05 ikke tidligere BLOCO) tester gyldigheden af feltnavnet. Denne cyklus 'Select Case sNomeDoCampo’ (line 31 den næste blok) flere felter kan tilføjes i henhold til specifikationen af ADIF.
Proceduren pEscreveAdif (line 09 ikke tidligere BLOCO) vil skrive teksten i den kolonne, der har ADIF “ADIF RAW” den første linje. Denne procedure er taget fra marken Ifen QSO_DATE, de to punkter af feltet og tilføjet en TIME_ON M i slutningen af feltet BAND. For at gøre dette mere makro kan pålægges strengere betingelser for kontrol af data i denne procedure.
Copy / paste eller skrive følgende kode i modulet:
Option Explicit 2 Public Const conColunaInicial As String = "En" Som Integer Public iUltimaLinha (iPrimeiraLinha As Integer) Som Integer (Folha1.Cells(iValRecebido, "En")) > 0 iValRecebido = iValRecebido + 1 Loop - 1 End Function (The String sPrimeiraColuna) The String (sPrimeiraColuna) Gøre, mens Len(Folha1.Cells(1, Chr(iValRecebido))) > 0 iValRecebido = iValRecebido + 1 Loop (iValRecebido - 1) End Function (The String sPrimeiraColuna, sUltimaColuna As String) Den boolske (sPrimeiraColuna) Til Asc(sUltimaColuna) sNomeDoCampo = LCase(Folha1.Cells(1, iColunaCorrente - 64)) Vælg Case sNomeDoCampo "band": fCampoAdifValido = True "ringe": fCampoAdifValido = True "CQZ": fCampoAdifValido = True "tilstand": 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 rå" fCampoAdifValido = True - 64 Case Else(1, iColunaCorrente - 64).Interior.Color = RGB(255, 0, 0) fCampoAdifValido = False() Som Integer Dim iLinhaCorrente "" For iColunaCorrente = Asc(conColunaInicial) Til Asc(sUltimaColuna) - 1 Hvis LCase(Folha1.Cells(1, Chr(iColunaCorrente))) = "band" Derefter(iLinhaCorrente, Chr(iColunaCorrente)) & "M" Else(Folha1.Cells(1, Chr(iColunaCorrente))) = "qso_date" Derefter(Folha1.Cells(iLinhaCorrente, Chr(iColunaCorrente)), "-", "") Else(Folha1.Cells(1, Chr(iColunaCorrente))) = "time_on" Derefter(Folha1.Cells(iLinhaCorrente, Chr(iColunaCorrente)), ":", "") Else(iLinhaCorrente, Chr(iColunaCorrente)) End If End If End If sLinhaEmAdif = sLinhaEmAdif & "<" & LCase(Folha1.Cells(1, Chr(iColunaCorrente))) & ":" & Kun(sTextoNaCelula) & ">" & sTextoNaCelula(iLinhaCorrente, iAdifRaw) = SLinhaEmAdif & "<" & "EOR" & ">" Næste
Klik på File / Save xls2adi.xls og luk VBA editoren.
Nu kopiere data i MS Excel-filer© du vil konvertere til de relevante kolonner, alvorlige afslutte ved udgangen og MS Excel©.
Du skal muligvis ændre indstillingerne for MS Excel sugurança© til at køre makroer, om nødvendigt gå til Funktioner / Makro, og klik på Sikkerhed, vælge et lavere niveau. Dette var skrevet til MS Excel© em MS Windows XP© (både i den portugisiske udgave). Brug denne kode er noutra VAI lingua, fx på engelsk, erstatte udtrykket "Ark1’ POR 'Ark1’
Når du dobbeltklikker på filen xls2adi.xls, den kode, du lige har indtastet vil blive gennemført og kolonnen “ADIF RAW” er vores Login ADIF format.
Nu til slut, vælge den kolonne indholdet “ADIF RAW” og kopiere (Ctrl C), starte eller Notesblok (Notesblok) og cole (Ctrl V). Gem filen med den yderligere udvidelse.
Dette kodeeksempel er gratis at bruge, kan du frit bruge. Det er et meget simpelt eksempel på, hvad der kun kan gøres ved hjælp af VBA (Visual Basic for Applications). Supplere denne kode valideringer med mere nøjagtige, især i felterne 'qso_date’ e 'time_on', hvor de formater, skal svare til specifikationen ADIF. Hvis du opdager en fejl eller har spørgsmål, tøv ikke med at kommentere. Jeg håber artiklen vil være nyttigt.