Pārrēķina procesā no MS Excel žurnālā© līdz ADIF ir samērā vienkārša un to var izdarīt, izmantojot mazliet programmēšana VBA. Ar šo saite var atsaukties uz ADIF specifikāciju 1.0 kas tiek izmantota vairumā log, Ir svarīgi, ka jums izlasīt šo dokumentu.

Lai sāktu konvertēšanas procesu, pamatojoties uz šo tutorial sākt, izveidojot failu MS Excel©. Pirmajā veļas rakstīt vārdu laukiem jūs vēlaties importēt (Lūdzu, pārbaudiet ADIF 1.0 nosaukuma laukiem). Pat pirmajā rindā, tips “ADIF RAW” pēdējo šūnu, Tas ir, ja teksts tiek rakstīts ADIF.

Darba lapu izskatās šādi (bet joprojām nav datu par līnijas 2). Kaut ADIF formāts nav norādīts minimālais vairākās jomās, vismaz jūsu QSO log ir jābūt vērtības Call, QSO_Date, Time_On, Band e Mode.

Pēc tam atlasiet visu darblapu un formatētu šūnas kā tekstu.

Saglabāt failu kā xls2adi.xls (darblapu MS Excel©)

Ļaujiet mums tagad rakstīt un ievietot kodu VBA. Iet uz Tools / Macro un noklikšķiniet uz Visual Basic redaktors (Alt F11).

Jo VBA redaktoru Veiciet dubultklikšķi uz ThisWorkbook’ kas atrodas "projekts – VBAProject ". Tas ir, ja jums galvenais bloka kodu, kas darbosies, atverot šo failu vēlreiz.

Koda bloks, kas seko noteiktas dažas mainīgajiem un izsauc funkciju fCampoAdifValido (līnija 05) kas pārbauda, ​​vai lauka nosaukums, kas ir uz pirmās līnijas atbilst specifikācijai ADIF. Ja visi lauku nosaukumi ir pareiza funkcija zvanus procedūru pEscreveAdif (līnija 09) rakstīt log in ADIF, Ja lauks ir nederīgs vārds funkcija rāda kļūdas ziņojumu (līnija 07) un beidzas.

Copy / paste vai ierakstiet sekojošo kodu:

 

Private Sub Workbook_Open()
  Kā Boolean Dim bNomeDoCampoValido
  (conLinhaInicial)
  sUltimaColuna = fQualEAUltimaColuna(conColunaInicial)
  bNomeDoCampoValido = fCampoAdifValido(conColunaInicial, sUltimaColuna)
    Ja bNomeDoCampoValido = False tam
       ("Atrasts nederīgs lauku nosaukumi" & vbCrLf & "Noņemt ailēm aizpildītām ar sarkanu!")
    Cits
      

Jo VBA redaktoru, noklikšķiniet uz Ievietot / modulis. Šajā modulī tiks atlikušo kods, kas tiek saukts par galveno bloku.

Konstantes conLinhaInicial (līnija 02 nākamais bloks) un conColunaInicial (līnija 03 nākamais bloks) define line 2 (Izklājlapas) ir pirmās reģistrācijas, un ka kolonna (Izklājlapas) Pirmajā jomā.

Funkcijas fQualEAUltimaLinha (līnija 08 nākamais bloks) un fQualEAUltimaColuna (līnija 17 nākamais bloks) noteiks pēdējo rindu un kolonnu datu. Tas prasa tukša šūna nozīmē beigas žurnāla ierakstiem.

Funkcija fCampoAdifValido (līnija 05 iepriekšējā bloka) testi derīgumu lauka nosaukuma. Cikla "Izvēlēties Lieta sNomeDoCampo’ (līnija 31 nākamais bloks) vairāk laukus var pievienot atbilstoši specifikācijai ADIF.

Procedūra pEscreveAdif (līnija 09 iepriekšējā bloka) rakstīt tekstu kolonnā, ir ADIF “ADIF RAW” Pirmā līnija. Šī procedūra ir ņemti no lauka Ifen QSO_DATE, diviem punktiem jomā un pievienotās TIME_ON M beigās lauka BAND. Lai šo vairāk makro var uzlikt stingrākus nosacījumus, lai pārbaudītu datu par šo procedūru.

Copy / paste vai ierakstiet sekojošo kodu, kas moduļa:

 

Variants Nepārprotama
 2
Sabiedrības Const conColunaInicial Kā String = "A"
Kā Integer Sabiedrības iUltimaLinha
(iPrimeiraLinha kā Integer) Kā Integer
  (Folha1.Cells(iValRecebido, "A")) > 0
      iValRecebido = iValRecebido + 1
    Cilpa
   - 1
Beigās funkcija

(String sPrimeiraColuna) Stīgu
  (sPrimeiraColuna)
    Vai gan Len(Folha1.Cells(1, Chr(iValRecebido))) > 0
      iValRecebido = iValRecebido + 1
    Cilpa
  (iValRecebido - 1)
Beigās funkcija

(String sPrimeiraColuna, sUltimaColuna Kā String) Bula
  (sPrimeiraColuna) Lai Asc(sUltimaColuna)
      sNomeDoCampo = LCase(Folha1.Cells(1, iColunaCorrente - 64))
      Izvēlēties Lieta sNomeDoCampo
         "grupa": fCampoAdifValido = True
         "zvanu": fCampoAdifValido = True
         "CQZ": fCampoAdifValido = True
         "režīms": 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 izejvielas"
          fCampoAdifValido = True
           - 64
        Lieta Else
          (1, iColunaCorrente - 64).Interior.Color = RGB(255, 0, 0)
          fCampoAdifValido = False
        ()
  Kā Integer Dim iLinhaCorrente
   ""
    Par iColunaCorrente = Asc(conColunaInicial) Lai Asc(sUltimaColuna) - 1
      Ja LCase(Folha1.Cells(1, Chr(iColunaCorrente))) = "grupa" Tad
        (iLinhaCorrente, Chr(iColunaCorrente)) & "M"
      Cits
        (Folha1.Cells(1, Chr(iColunaCorrente))) = "qso_date" Tad
          (Folha1.Cells(iLinhaCorrente, Chr(iColunaCorrente)), "-", "")
        Cits
          (Folha1.Cells(1, Chr(iColunaCorrente))) = "time_on" Tad
            (Folha1.Cells(iLinhaCorrente, Chr(iColunaCorrente)), ":", "")
          Cits
            (iLinhaCorrente, Chr(iColunaCorrente))
          Beigas Ja
         & "<" & LCase(Folha1.Cells(1, Chr(iColunaCorrente))) & ":" & Tikai(sTextoNaCelula) & ">" & sTextoNaCelula
    (iLinhaCorrente, iAdifRaw) = SLinhaEmAdif & "<" & "EOR" & ">"
  Nākamais

 

Noklikšķiniet uz File / Save xls2adi.xls un aizveriet VBA redaktoru.

Tagad kopēt datus jūsu MS Excel faili© Jūs vēlaties konvertēt uz atbilstošās kolonnas, nopietni atmest beigās un MS Excel©.

Jums var būt nepieciešams, lai mainītu iestatījumus MS Excel sugurança© , lai palaistu makro, ja nepieciešams, iet uz Tools / Macro un noklikšķiniet uz Drošības, jāizvēlas zemākā līmenī. Tas bija rakstīts MS Excel© em MS Windows XP© (gan portugāļu valodā). Ja jūs izmantosiet šo kodu citā valodā, piemēram, angļu valodā, aizstāt terminu "Sheet1’ por 'Lapa1’

Kad jūs dubultklikšķi uz faila xls2adi.xls, kods, kuru jūs tikko ievadīti tiks izpildīts, un kolonnu “ADIF RAW” ir mūsu Ieiet ADIF formātā.

Tagad, lai pabeigtu, atlasiet kolonnu saturu “ADIF RAW” e COPIE (Ctrl C), sākums Notepad (Notepad) e Cole (Ctrl V). Saglabāt failu ar papildu pagarinājumu,.

Šis kods paraugs ir brīvi izmantot, Jūs varat brīvi izmantot. Tas ir ļoti vienkāršs piemērs tam, ko var veikt tikai izmantojot VBA (Visual Basic for Applications). Papildināt šo kodu apstiprināšana, ar precīzāku, jo īpaši jomā "qso_date’ e 'time_on ", kur formātiem jāatbilst specifikācijai ADIF. Ja Jūs pamanāt kļūdu vai ir kādi jautājumi, nevilcinieties komentēt. Es ceru, ka raksts būs noderīgs.

Birkas: ,