Proces pretvorbe iz log MS Excel© v ADIF je dokaj preprost in ga je mogoče storiti z malo programiranja VBA. S tem povezava se lahko nanašajo na specifikacije ADIF 1.0 ki ga uporablja večina log, Pomembno je, da si preberete ta dokument.

Če želite začeti postopek konverzije, ki temelji na tem Tutorial začnete z ustvarjanjem datoteke v MS Excel©. V prvem perila Vpišite ime polja boste želeli uvoziti (Prosimo, preverite ADIF 1.0 imena polj). Že v prvi vrstici, tip “ADIF RAW” zadnje celice, to je, če bo besedilo napisano v ADIF.

List je videti takole (vendar še vedno ni podatkov o line 2). Čeprav format ADIF ne določa minimalno število polj, vsaj mora vaš QSO log so vrednosti za klic, QSO_Date, Time_On, Band e Način.

Nato izberete celoten delovni list in obliko celice kot besedilo.

Shranite datoteko kot xls2adi.xls (delovnega lista v MS Excel©)

Zdaj pa pišejo in vstavite kodo v VBA. Pojdi na Orodja / Makro in kliknite Urejevalnik Visual Basic (Alt F11).

V urejevalniku VBA dvokliknite "ThisWorkbook’ , ki je v projektu " – VBAProject ". To je, če dobiš glavni blok kode, ki bo teči, ko odprete to datoteko še enkrat.

Blok kode, ki sledi, določa nekatere spremenljivke in pokliče funkcijo fCampoAdifValido (line 05) da bo preveril, če je ime polja, ki je v prvi vrstici ustreza specifikaciji ADIF. Če so vsi imena polj so pravilni klici funkcij postopek pEscreveAdif (line 09) bo napisal prijavite ADIF, Če polje je neveljavno ime funkcija prikazuje sporočilo o napaki (line 07) in se konča.

Copy / paste ali vnesite naslednjo kodo:

 

Private Sub Workbook_Open()
  Kot Boolean Dim bNomeDoCampoValido
  (conLinhaInicial)
  sUltimaColuna = fQualEAUltimaColuna(conColunaInicial)
  bNomeDoCampoValido = fCampoAdifValido(conColunaInicial, sUltimaColuna)
    Če bNomeDoCampoValido = False Nato
       ("Najdeno neveljavna imena polj" & vbCrLf & "Odstranite stolpci napolni v rdečem!")
    Else
      

V urejevalniku VBA, kliknite Insert / Module. V tem modulu bodo preostala kodo, ki se imenuje glavni blok.

Konstante conLinhaInicial (line 02 naslednji blok) in conColunaInicial (line 03 naslednji blok) opredeliti line 2 (Spreadsheet) so prve registracije in da se kolona (Spreadsheet) prvo polje.

Funkcije fQualEAUltimaLinha (line 08 naslednji blok) in fQualEAUltimaColuna (line 17 naslednji blok) bo določil zadnjo vrstico in stolpec podatkov. To zahteva prazno celico pomeni konec log zapisov.

Funkcija fCampoAdifValido (line 05 prejšnji blok) preverja veljavnost imena polja. V ciklu "Izberite Zadeva sNomeDoCampo’ (line 31 naslednji blok) več polj je mogoče dodati v skladu s specifikacijo ADIF.

Postopek pEscreveAdif (line 09 prejšnji blok) bo napisal besedilo v stolpcu, ki je ADIF “ADIF RAW” v prvi vrstici. Ta postopek je vzeta iz področja Ifen QSO_DATE, dve točki na polju in dodal, M TIME_ON na koncu polja BAND. Da bi se ta bolj makro se lahko uvedejo strožje pogoje za preverjanje podatkov v tem postopku.

Copy / paste ali vnesite naslednjo kodo v modulu:

 

Option Explicit
 2
Javna Const conColunaInicial Kot String = "A"
Kot Integer javno iUltimaLinha
(iPrimeiraLinha Kot Integer) Kot Integer
  (Folha1.Cells(iValRecebido, "A")) > 0
      iValRecebido = iValRecebido + 1
    Zanka
   - 1
End Function

(String sPrimeiraColuna) String
  (sPrimeiraColuna)
    Ali Medtem ko Len(Folha1.Cells(1, Chr(iValRecebido))) > 0
      iValRecebido = iValRecebido + 1
    Zanka
  (iValRecebido - 1)
End Function

(String sPrimeiraColuna, sUltimaColuna Kot String) Logični
  (sPrimeiraColuna) Za Asc(sUltimaColuna)
      sNomeDoCampo = LCase(Folha1.Cells(1, iColunaCorrente - 64))
      Izberite zadevi sNomeDoCampo
         "pas": fCampoAdifValido = True
         "klic": fCampoAdifValido = True
         "CQZ": fCampoAdifValido = True
         "Način": 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 surovi"
          fCampoAdifValido = True
           - 64
        Zadeva Else
          (1, iColunaCorrente - 64).Interior.Color = RGB(255, 0, 0)
          fCampoAdifValido = False
        ()
  Kot Integer Dim iLinhaCorrente
   ""
    Za iColunaCorrente = Asc(conColunaInicial) Za Asc(sUltimaColuna) - 1
      Če LCase(Folha1.Cells(1, Chr(iColunaCorrente))) = "pas" Potem
        (iLinhaCorrente, Chr(iColunaCorrente)) & "M"
      Else
        (Folha1.Cells(1, Chr(iColunaCorrente))) = "qso_date" Potem
          (Folha1.Cells(iLinhaCorrente, Chr(iColunaCorrente)), "-", "")
        Else
          (Folha1.Cells(1, Chr(iColunaCorrente))) = "time_on" Potem
            (Folha1.Cells(iLinhaCorrente, Chr(iColunaCorrente)), ":", "")
          Else
            (iLinhaCorrente, Chr(iColunaCorrente))
          Konec Če
         & "<" & LCase(Folha1.Cells(1, Chr(iColunaCorrente))) & ":" & Samo(sTextoNaCelula) & ">" & sTextoNaCelula
    (iLinhaCorrente, iAdifRaw) = SLinhaEmAdif & "<" & "EOR" & ">"
  Naslednja

 

Kliknite File / Save xls2adi.xls in zaprite urejevalnik VBA.

Zdaj kopijo podatkov v MS Excel datotek© , ki ga želite pretvoriti v ustrezne stolpce, resno quit na koncu in MS Excel©.

Boste morda morali spremeniti nastavitve za MS Excel sugurança© zagnati makre, če je potrebno, pojdite na Tools / Makro in kliknite Varnost, izbere nižji ravni. To je bila napisana za MS Excel© em MS Windows XP© (tako v portugalski različici). Če boste uporabili to kodo v drugem jeziku, na primer v angleščini, zamenjati izraz "List1’ Por "Sheet1’

Ko dvokliknete datoteko xls2adi.xls, kodo, ki jo pravkar začela se bodo izvajale in stolpec “ADIF RAW” je naša Prijava format ADIF.

Zdaj pa do konca, izberite stolpec vsebine “ADIF RAW” e Copie (Ctrl C), začetek Notepad (Beležnica) e Cole (Ctrl V). Shranite datoteko z dodatnimi podaljšanja.

Vzorec kode je prost za uporabo, lahko prosto uporabljajo. To je zelo preprost primer tega, kaj je mogoče doseči le z uporabo VBA (Visual Basic for Applications). Dopolnilo to kodo validations z natančnejšo, zlasti na področjih, qso_date "’ "time_on" E, kjer mora formate tekmi specifikacijo ADIF. Če opazite napako ali kakršna koli vprašanja, ne oklevajte in pripombe. Upam, da bo koristen članek.

Tags: ,