Prosessen med konvertering fra MS Excel logg© til ADIF er relativt enkelt og kan gjøres ved hjelp av en bit av programmering VBA. Gjennom denne link kan referere til spesifikasjonene for ADIF 1.0 som brukes av de fleste log, er viktig at du leser dette dokumentet.
Å starte en konvertering prosess basert på denne opplæringen starte med å lage en fil i MS Excel©. I den første linen Skriv inn navnet på feltene du ønsker å importere (Vennligst sjekk ADIF 1.0 av navnet på feltene). Selv i den første linjen, typen “ADIF RAW” den siste cellen, dette er hvor teksten vil bli skrevet i ADIF.
Regnearket er å se slik ut (men fortsatt ingen data på linjen 2). Selv om ADIF formatet ikke angi et minimum antall felt, minst din QSO log må ha verdier til Call, QSO_Date, Time_On, Band-e Mode.
Deretter velger du hele regnearket og formatere celler som tekst.
Lagre filen som xls2adi.xls (regneark i MS Excel©)
La oss nå skrive og sette inn koden i VBA. Gå til Verktøy / Makro og klikk Visual Basic Editor (Alt F11).
I VBA editor dobbeltklikk 'ThisWorkbook’ som er i "Prosjekt – VBAProject '. Det er her du får de viktigste blokk med kode som skal kjøres når du åpner denne filen på nytt.
Blokken av kode som følger setter noen variabler og kaller funksjonen fCampoAdifValido (linje 05) som vil sjekke om feltnavnet som er på den første linjen tilsvarer spesifikasjon av ADIF. Hvis alle feltnavnene er riktige funksjon kaller prosedyren pEscreveAdif (linje 09) vil skrive logg inn ADIF, Dersom et felt har et ugyldig navn funksjonen viser en feilmelding (linje 07) og slutter.
Kopier / lim eller skriv inn følgende kode:
Private Sub Workbook_Open() Som Boolean Dim bNomeDoCampoValido (conLinhaInicial) sUltimaColuna = fQualEAUltimaColuna(conColunaInicial) bNomeDoCampoValido = fCampoAdifValido(conColunaInicial, sUltimaColuna) Hvis bNomeDoCampoValido = False Deretter ("Fant ugyldig feltnavn" & vbCrLf & "Fjern kolonnene fylles i rødt!") Else
I VBA editor, deretter Sett inn / Module. I denne modulen skal de resterende koden som er kalt av de viktigste blokk.
Konstantene conLinhaInicial (linje 02 neste blokk) og conColunaInicial (linje 03 neste blokk) definerer linjen 2 (Regneark) har den første registreringen, og at kolonne A (Regneark) det første feltet.
Funksjonene fQualEAUltimaLinha (linje 08 neste blokk) og fQualEAUltimaColuna (linje 17 neste blokk) vil avgjøre den siste raden og kolonnen data. Dette krever en tom celle betyr slutten på loggen poster.
Funksjonen fCampoAdifValido (linje 05 den forrige blokken) tester gyldigheten av feltnavnet. Syklusen 'Select Case sNomeDoCampo’ (linje 31 neste blokk) flere felt kan legges i henhold til spesifikasjon av ADIF.
Prosedyren pEscreveAdif (linje 09 den forrige blokken) vil skrive teksten i kolonnen som har ADIF “ADIF RAW” den første linjen. Denne prosedyren er tatt fra feltet Ifen QSO_DATE, de to punktene av feltet og lagt til en TIME_ON M på slutten av feltet BAND. For å gjøre dette mer makro kan bli pålagt strengere vilkår for å kontrollere data i denne prosedyren.
Kopier / lim eller skriv inn følgende kode i modulen:
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 Loop - 1 End Function (The String sPrimeiraColuna) String (sPrimeiraColuna) Do While 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)) Select Case sNomeDoCampo "Bandet": fCampoAdifValido = True "kaller": fCampoAdifValido = True "CQZ": fCampoAdifValido = True "modus": 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 () As Integer Dim iLinhaCorrente "" For iColunaCorrente = Asc(conColunaInicial) Til Asc(sUltimaColuna) - 1 Dersom LCase(Folha1.Cells(1, Chr(iColunaCorrente))) = "Bandet" Deretter (iLinhaCorrente, Chr(iColunaCorrente)) & "M" Else (Folha1.Cells(1, Chr(iColunaCorrente))) = "qso_date" Deretter (Folha1.Cells(iLinhaCorrente, Chr(iColunaCorrente)), "-", "") Else (Folha1.Cells(1, Chr(iColunaCorrente))) = "time_on" Deretter (Folha1.Cells(iLinhaCorrente, Chr(iColunaCorrente)), ":", "") Else (iLinhaCorrente, Chr(iColunaCorrente)) End If & "<" & LCase(Folha1.Cells(1, Chr(iColunaCorrente))) & ":" & Kun(sTextoNaCelula) & ">" & sTextoNaCelula (iLinhaCorrente, iAdifRaw) = SLinhaEmAdif & "<" & "EOR" & ">" Neste
Klikk File / Save xls2adi.xls og lukk VBA editor.
Nå kopierer dataene i MS Excel-filer© du ønsker å konvertere til den aktuelle kolonnene, alvorlig sluttet på slutten og MS Excel©.
Du må kanskje endre innstillingene for MS Excel sugurança© å kjøre makroer, om nødvendig gå til Verktøy / Makro og deretter Sikkerhet, velge et lavere nivå. Dette ble skrevet for MS Excel© em MS Windows XP© (både i den portugisiske versjonen). Hvis du vil bruke denne koden på et annet språk, f.eks på engelsk, erstatte begrepet "Ark1’ por 'Ark1’
Når du dobbeltklikker på filen xls2adi.xls, koden du nettopp la inn vil bli utført og kolonnen “ADIF RAW” er vår Logg inn ADIF format.
Nå til slutt, velger du kolonnen innholdet “ADIF RAW” e copie (Ctrl C), start Notepad (Notepad) e Cole (Ctrl V). Lagre filen med den ekstra utvidelse.
Denne koden prøven er gratis å bruke, Du kan fritt bruke. Det er et veldig enkelt eksempel på hva som kan bare gjøres ved hjelp av VBA (Visual Basic for Applications). Utfyller denne koden valideringer med mer nøyaktige, spesielt i feltene 'qso_date’ e 'time_on', hvor formatene må samsvare med spesifikasjonen ADIF. Hvis du oppdager en feil eller har spørsmål, ikke nøl med å kommentere. Jeg håper artikkelen vil være nyttig.