Proces prechodu z log MS Excel© na ADIF je pomerne jednoduché a možno vykonať pomocou trochu programovania VBA. Prostredníctvom tohto link môže odkazovať sa na špecifikácie ADIF 1.0 ktorý je používaný väčšinou log, Je dôležité, aby ste si tento dokument.

Ak chcete spustiť proces prevodu na základe tejto konzultácie začať vytvorením súboru v MS Excel©. V prvom bielizeň Napíšte názov poľa budete chcieť importovať (Skontrolujte prosím ADIF 1.0 mená polí). Aj v prvej línii, typ “ADIF RAW” poslednú bunku, Tu bude text napísaný v ADIF.

List je do tejto podoby (ale žiadna dáta na linke 2). Hoci vo formáte ADIF nešpecifikuje minimálny počet polí, aspon si QSO log musí mať hodnoty volaní, QSO_Date, Time_On, Skupina E režim.

Potom vyberte celý list a formát bunky ako text.

Uložte súbor ako xls2adi.xls (list v MS Excel©)

Pozrime sa teraz napísať a vložiť kód v jazyku VBA. Prejdite na Nástroje / Makro a potom kliknite na príkaz Editor jazyka Visual Basic (Alt F11).

V editore VBA dvakrát kliknite na "ThisWorkbook’ , Ktorý je v "Projektu – VBAProject '. To je miesto, kde máte hlavný blok kódu, ktorý sa spustí pri otvorení tohto súboru opäť.

Blok kódu, ktorý takto nastavuje niektoré premenné a volá funkciu fCampoAdifValido (vedenie 05) , Ktorý skontroluje, či názov poľa, ktoré je na prvom riadku zodpovedá špecifikácii ADIF. Ak sú všetky názvy polí sú správne funkcie volá postup pEscreveAdif (vedenie 09) sa bude písať log v ADIF, Ak je pole má neplatný názov funkcie zobrazí chybové hlásenie (vedenie 07) a končí.

Kopírovať / vložiť, alebo zadajte nasledujúci kód:

 

Private Sub Workbook_Open()
  Ako Boolean Dim bNomeDoCampoValido(conLinhaInicial)
  sUltimaColuna = fQualEAUltimaColuna(conColunaInicial)
  bNomeDoCampoValido = fCampoAdifValido(conColunaInicial, sUltimaColuna)
    Ak sa bNomeDoCampoValido = False potom ("Nájdené neplatné názvy polí" & vbCrLf & "Odstráňte stĺpce naplnené v červenom!")
    Iný

V editore VBA, kliknite na tlačidlo Vložiť / Module. V tomto module sa zostávajúce kód, ktorý sa nazýva hlavný blok.

Konštanty conLinhaInicial (vedenie 02 Ďalší blok) a conColunaInicial (vedenie 03 Ďalší blok) definuje línie 2 (Tabuľkový procesor) majú prvú registráciu a že stĺpce (Tabuľkový procesor) Prvé pole.

Funkcia fQualEAUltimaLinha (vedenie 08 Ďalší blok) a fQualEAUltimaColuna (vedenie 17 Ďalší blok) určí posledného riadku a stĺpca dát. To si vyžaduje prázdne bunky znamená koniec log záznamov.

Funkcia fCampoAdifValido (vedenie 05 predchádzajúci blok) Testy platnosti názvu poľa. Cyklu 'Select Case sNomeDoCampo’ (vedenie 31 Ďalší blok) viac polí, môžu byť pridané podľa špecifikácie ADIF.

Postup pEscreveAdif (vedenie 09 predchádzajúci blok) napíše text v stĺpci, ktorý má ADIF “ADIF RAW” prvý riadok. Tento postup je prevzatý z odboru Ifen QSO_DATE, dva body poľa a pridal M TIME_ON na konci poľa BAND. Aby to bolo makro možno uložiť prísnejšie podmienky pre kontrolu údajov v tomto konaní.

Kopírovať / vložiť, alebo zadajte nasledujúci kód v module:

 

Option Explicit 2
Public const conColunaInicial As String = "A"
IUltimaLinha As Integer verejné(iPrimeiraLinha As Integer) Integer(Folha1.Cells(iValRecebido, "A")) > 0
      iValRecebido = iValRecebido + 1
    Slučka - 1
End Function(sPrimeiraColuna As String) String
  (sPrimeiraColuna)
    Robiť, keď Ľan(Folha1.Cells(1, Chr(iValRecebido))) > 0
      iValRecebido = iValRecebido + 1
    Slučka(iValRecebido - 1)
End Function(sPrimeiraColuna As String, sUltimaColuna As String) Boolean(sPrimeiraColuna) Na Asc(sUltimaColuna)
      sNomeDoCampo = LCase(Folha1.Cells(1, iColunaCorrente - 64))
      Select Case sNomeDoCampo "kapela": fCampoAdifValido = True "hovor": fCampoAdifValido = True "CQZ": fCampoAdifValido = True "režim": 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 surovín"
          fCampoAdifValido = True - 64
        Case Else(1, iColunaCorrente - 64).Interior.Color = RGB(255, 0, 0)
          fCampoAdifValido = False()
  As Integer Dim iLinhaCorrente
   ""
    Pre iColunaCorrente = Asc(conColunaInicial) Na Asc(sUltimaColuna) - 1
      Ak sa LCase(Folha1.Cells(1, Chr(iColunaCorrente))) = "kapela" Potom(iLinhaCorrente, Chr(iColunaCorrente)) & "M"
      Iný(Folha1.Cells(1, Chr(iColunaCorrente))) = "qso_date" Potom(Folha1.Cells(iLinhaCorrente, Chr(iColunaCorrente)), "-", "")
        Iný(Folha1.Cells(1, Chr(iColunaCorrente))) = "time_on" Potom(Folha1.Cells(iLinhaCorrente, Chr(iColunaCorrente)), ":", "")
          Else(iLinhaCorrente, Chr(iColunaCorrente))
          End If & "<" & LCase(Folha1.Cells(1, Chr(iColunaCorrente))) & ":" & Len(sTextoNaCelula) & ">" & sTextoNaCelula(iLinhaCorrente, iAdifRaw) = SLinhaEmAdif & "<" & "EOR" & ">"
  Ďalšie

 

Kliknite na Súbor / Uložiť xls2adi.xls a zatvorte Editor VBA.

Skopírujte dáta v súboroch MS Excel© Ak chcete previesť do príslušného stĺpca, vážne skončiť na konci a MS Excel©.

Možno budete musieť zmeniť nastavenie pre MS Excel sugurança© spustiť makrá, Ak je nutné v menu Nástroje / Makro a potom kliknite na položku Zabezpečenie, zvoľte nižšiu úroveň. To bola napísaná pre MS Excel© em MS Windows XP© (ako v portugalskej verzii). Ak budete používať tento kód v inom jazyku, napr v angličtine, nahradiť pojem "Hárok1’ Por "Hárok1’

Pri poklepaní na súbor xls2adi.xls, kód, ktorý ste zadali budú vykonané a stĺpcov “ADIF RAW” je náš Prihlásenie formátu ADIF.

Teraz až do konca, vyberte stĺpec obsah “ADIF RAW” a kópie (Ctrl C), Spustite program Poznámkový blok (Notepad) a kolesami (Ctrl V). Uložte súbor s príponou ďalšie.

Tento ukážkový kód je voľne k použitiu, Môžete slobodne používať. Jedná sa o veľmi jednoduchý príklad, čo možno vykonať pomocou VBA (Visual Basic for Applications). Doplní tento kód validácia s presnejšími, najmä v qso_date oblastiach "’ e 'time_on ", kde formátu musí zodpovedať špecifikácii ADIF. Ak zistíte chybu alebo máte nejaké otázky, neváhajte komentár. Dúfam, že článok bude užitočný.

Tags: ,