Processen av övergång från MS Excel logg© att ADIF är relativt enkelt och kan göras med hjälp av lite programmering VBA. Genom denna länk kan hänvisa till specifikationerna i ADIF 1.0 som används av de flesta log, är viktigt att du läser detta dokument.

För att starta en omvandling baserad på denna tutorial börjar med att skapa en fil i MS Excel©. I den första linne Skriv namnet på de fält du vill importera (Kontrollera ADIF 1.0 av namnet på fälten). Redan på första raden, typ “ADIF RAW” na sista cellen, Det är här texten kommer att skrivas på ADIF.

Arbetsbladet är att se ut så här (men fortfarande inga uppgifter om linjen 2). Även om ADIF formatet inte anger ett minsta antal områden, åtminstone dina QSO logga måste ha värden till Ring, QSO_Date, Time_On, Band e läget.

Välj sedan hela kalkylbladet och formatera cellerna som text.

Spara filen som xls2adi.xls (kalkylblad i MS Excel©)

Låt oss nu skriva och infoga kod i VBA. Gå till Verktyg / Makro och klicka på Visual Basic Editor (Alt F11).

I VBA editorn dubbelklicka på "ThisWorkbook’ som är i "Projekt – VBAProject ". Det är här du får den huvudsakliga block av kod som körs när du öppnar filen igen.

Blocket av kod som följer sätter vissa variabler och anropar funktionen fCampoAdifValido (linje 05) som kontrollerar om fältet namn som är på den första raden motsvarar specifikationen av ADIF. Om alla fältnamn är korrekta funktionsanrop förfarandet pEscreveAdif (linje 09) kommer att skriva loggar in ADIF, Om ett fält har ett ogiltigt namn Funktionen visar ett felmeddelande (linje 07) och slutar.

Kopiera / klistra eller skriv in följande kod:

 

Private Sub Workbook_Open()
  As Boolean Dim bNomeDoCampoValido
  (conLinhaInicial)
  sUltimaColuna = fQualEAUltimaColuna(conColunaInicial)
  bNomeDoCampoValido = fCampoAdifValido(conColunaInicial, sUltimaColuna)
    Om bNomeDoCampoValido = False Sedan
       ("Hittade ogiltiga fältnamn" & vbCrLf & "Ta bort kolumner fylls i rött!")
    Else
      

I VBA editorn klickar du på Infoga / modul. I denna modul kommer att resterande kod som kallas av de största blocket.

Konstanter conLinhaInicial (linje 02 nästa block) och conColunaInicial (linje 03 nästa block) definiera linjen 2 (Kalkylblad) har den första registreringen och att kolumn A (Kalkylblad) det första fältet.

Funktionerna fQualEAUltimaLinha (linje 08 nästa block) och fQualEAUltimaColuna (linje 17 nästa block) kommer att avgöra den sista raden och datakolumn. Detta kräver en tom cell betyder slutet på loggen rekord.

Funktionen fCampoAdifValido (linje 05 göra tidigare BLOCO) testar giltigheten av fältnamnet. Cykeln 'Välj Case sNomeDoCampo’ (linje 31 nästa block) flera fält kan läggas enligt specifikationen i ADIF.

Förfarandet pEscreveAdif (linje 09 göra tidigare BLOCO) kommer att skriva texten i den kolumn som har ADIF “ADIF RAW” första raden. Detta förfarande är tagen från fältet Ifen QSO_DATE, de två punkterna på marken och lagt till en TIME_ON M i slutet av fältet BAND. För att göra detta mer makro kan införas strängare villkor för kontroll av uppgifter i detta förfarande.

Kopiera / klistra eller skriv in följande kod i modulen:

 

Option Explicit
 2
Public Const conColunaInicial As String = "En"
As Integer Offentliga iUltimaLinha
(iPrimeiraLinha As Integer) As Integer
  (Folha1.Cells(iValRecebido, "En")) > 0
      iValRecebido = iValRecebido + 1
    Loop
   - 1
End Function

(String sPrimeiraColuna) String
  (sPrimeiraColuna)
    Göra medan Len(Folha1.Cells(1, Chr(iValRecebido))) > 0
      iValRecebido = iValRecebido + 1
    Loop
  (iValRecebido - 1)
End Function

(String sPrimeiraColuna, sUltimaColuna As String) Boolean
  (sPrimeiraColuna) Att Asc(sUltimaColuna)
      sNomeDoCampo = LCase(Folha1.Cells(1, iColunaCorrente - 64))
      Välj ärende sNomeDoCampo
         "Bandet": fCampoAdifValido = True
         "ringa": fCampoAdifValido = True
         "CQZ": fCampoAdifValido = True
         "läge": 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
        Fall Else
          (1, iColunaCorrente - 64).Interior.Color = RGB(255, 0, 0)
          fCampoAdifValido = False
        ()
  As Integer Dim iLinhaCorrente
   ""
    För iColunaCorrente = Asc(conColunaInicial) Att Asc(sUltimaColuna) - 1
      Om LCase(Folha1.Cells(1, Chr(iColunaCorrente))) = "Bandet" Sedan
        (iLinhaCorrente, Chr(iColunaCorrente)) & "M"
      Else
        (Folha1.Cells(1, Chr(iColunaCorrente))) = "qso_date" Sedan
          (Folha1.Cells(iLinhaCorrente, Chr(iColunaCorrente)), "-", "")
        Else
          (Folha1.Cells(1, Chr(iColunaCorrente))) = "time_on" Sedan
            (Folha1.Cells(iLinhaCorrente, Chr(iColunaCorrente)), ":", "")
          Else
            (iLinhaCorrente, Chr(iColunaCorrente))
          End If
         & "<" & LCase(Folha1.Cells(1, Chr(iColunaCorrente))) & ":" & Endast(sTextoNaCelula) & ">" & sTextoNaCelula
    (iLinhaCorrente, iAdifRaw) = SLinhaEmAdif & "<" & "EOR" & ">"
  Nästa

 

Klicka på File / Save xls2adi.xls och stäng VBA-editorn.

Nu kopierar data i MS Excel-filer© du vill konvertera till rätt kolumner, allvarliga sluta i slutet och MS Excel©.

Du kan behöva ändra inställningar för MS Excel sugurança© att köra makron, vid behov gå till Verktyg / Makro och klicka på Säkerhet, välja en lägre nivå. Detta skrevs för MS Excel© em MS Windows XP© (både i den portugisiska versionen). Använd denna kod är noutra VAI lingua, t ex på engelska, termen "Blad1’ por 'Blad1’

När du dubbelklickar på filen xls2adi.xls, den kod du just angav kommer att genomföras och kolumnen “ADIF RAW” är vårt Logga in ADIF format.

Nu till slut, markera kolumnen innehållet “ADIF RAW” och kopiera (Ctrl C), starta eller Anteckningar (Anteckningar) och Cole (Ctrl V). Spara filen med ytterligare förlängning.

Detta kodexempel är gratis att använda, Du kan fritt använda. Det är ett mycket enkelt exempel på vad som bara kan göras med hjälp av VBA (Visual Basic for Applications). Komplettera denna kod valideringar med mer exakta, särskilt inom områdena "qso_date’ e 'time_on ", där formaten måste matcha specifikationen ADIF. Om du upptäcker ett fel eller har några frågor, tveka inte att kommentera. Jag hoppas att artikeln kommer att vara användbart.