Die proses van die omskakeling van MS Excel se log© aan ADIF is relatief eenvoudig en kan gedoen word met behulp van 'n bietjie van ontwikkeling VBA. Deur middel van hierdie skakel kan verwys na die spesifikasies van die ADIF 1.0 wat gebruik word deur die meeste log, is belangrik dat u hierdie dokument gelees.

'N sukses proses wat gebaseer is op hierdie tutoriaal begin om te begin deur die skep van' n lêer in MS Excel©. In die eerste linne Skryf die naam van die velde wat jy sal wil invoer (Kyk op die ADIF 1.0 van die naam van die velde). Selfs in die eerste reël, tipe “ADIF RAW” die laaste sel, Dit is hier waar die teks geskryf sal word in ADIF.

Die werkblad is om te lyk soos hierdie (maar nog steeds geen inligting oor die lyn 2). Hoewel die ADIF formaat spesifiseer nie 'n minimum aantal velde, ten minste jou QSO log moet 'waardes te bel, QSO_Date, Time_On, Band e Mode.

Kies dan die hele werkblad en formaat van die selle as teks.

Stoor die lêer as xls2adi.xls (werkblad in MS Excel©)

Laat ons nou skryf en plaas die kode in VBA. Gaan na Tools / Makro en klik op Visual Basic Editor (Alt F11).

In die VBA redakteur dubbel-kliek 'ThisWorkbook’ wat in die "Project – VBAProject ". Dit is hier waar jy die belangrikste blok van die kode wat vertoon word as jy hierdie lêer weer oop.

Die blok van die kode wat daarop volg 'n paar stelle veranderlikes en noem die funksie fCampoAdifValido (lyn 05) wat sal bepaal of die veld naam wat op die eerste reël stem ooreen met die spesifikasie van die ADIF. Indien al die name vir die velde korrek funksioneer noem die proses pEscreveAdif (lyn 09) sal skryf die punteleer in ADIF, Indien 'n veld het' n ongeldige naam van die funksie toon 'n fout boodskap (lyn 07) en eindig.

Kopie / plak of tik die volgende kode:

 

Private Sub Workbook_Open()
  Soos Boole Dim bNomeDoCampoValido(conLinhaInicial)
  sUltimaColuna = fQualEAUltimaColuna(conColunaInicial)
  bNomeDoCampoValido = fCampoAdifValido(conColunaInicial, sUltimaColuna)
    Indien bNomeDoCampoValido = vals is dan ("Gevind ongeldig veldname" & vbCrLf & "Verwyder die kolomme vol in rooi!")
    Else

In die VBA-redakteur, kliek Insert / module. Is hierdie module sal die res van die kode wat deur die belangrikste blok genoem word.

Die konstantes conLinhaInicial (lyn 02 die volgende blok) en conColunaInicial (lyn 03 die volgende blok) definieer die lyn 2 (Spreadsheet) die eerste registrasie en dat die kolom A (Spreadsheet) die eerste veld.

Die funksies fQualEAUltimaLinha het (lyn 08 die volgende blok) en fQualEAUltimaColuna (lyn 17 die volgende blok) bepaal die laaste ry-en kolom data. Dit vereis 'n leë sel beteken die einde van die log rekords.

Die funksie fCampoAdifValido (lyn 05 van die vorige blok) toets die geldigheid van die gebied se naam. Die siklus "Select Case sNomeDoCampo’ (lyn 31 die volgende blok) meer velde kan bygevoeg word volgens die spesifikasie ADIF.

Die prosedure pEscreveAdif (lyn 09 van die vorige blok) skryf die teks in die kolom wat ADIF “ADIF RAW” in die eerste ry. In hierdie proses is geneem uit die veld Ifen QSO_DATE, die twee punte van die veld en bygevoeg TIME_ON M in 'n einde van die veld band. Te maak dit meer makro meer streng voorwaardes opgelê kan word vir die verifikasie van data in hierdie proses.

Kopieer / plak of tik die volgende kode in die module:

 

Opsie Explicit 2
Openbare Const conColunaInicial As String = "'N"
IUltimaLinha As Integer Openbare(iPrimeiraLinha as geheel) Die heelgetal(Folha1.Cells(iValRecebido, "'N")) > 0
      iValRecebido = iValRecebido + 1
    Loop - 1
Jaareindfunksie(Die String sPrimeiraColuna het) Die tou(sPrimeiraColuna)
    Doen terwyl Len(Folha1.Cells(1, Chr(iValRecebido))) > 0
      iValRecebido = iValRecebido + 1
    Loop(iValRecebido - 1)
Jaareindfunksie(Die String sPrimeiraColuna het, sUltimaColuna As String) Die Boolese(sPrimeiraColuna) Na die ASC(sUltimaColuna)
      sNomeDoCampo = OldPath(Folha1.Cells(1, iColunaCorrente - 64))
      Kies Case sNomeDoCampo "groep": fCampoAdifValido = True "roep": fCampoAdifValido = True "CQZ": fCampoAdifValido = True "af": 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 rou"
          fCampoAdifValido = True - 64
        Saak Else(1, iColunaCorrente - 64).Interior.Color = RGB(255, 0, 0)
          fCampoAdifValido = False()
  ILinhaCorrente As Integer Dim ""
    Vir iColunaCorrente = ASC(conColunaInicial) Na die ASC(sUltimaColuna) - 1
      As OldPath(Folha1.Cells(1, Chr(iColunaCorrente))) = "groep" Toe(iLinhaCorrente, Chr(iColunaCorrente)) & "M"
      Anders(Folha1.Cells(1, Chr(iColunaCorrente))) = "qso_date" Toe(Folha1.Cells(iLinhaCorrente, Chr(iColunaCorrente)), "-", "")
        Anders(Folha1.Cells(1, Chr(iColunaCorrente))) = "time_on" Toe(Folha1.Cells(iLinhaCorrente, Chr(iColunaCorrente)), ":", "")
          Anders(iLinhaCorrente, Chr(iColunaCorrente))
          Einde as & "<" & OldPath(Folha1.Cells(1, Chr(iColunaCorrente))) & ":" & Net(sTextoNaCelula) & ">" & sTextoNaCelula(iLinhaCorrente, iAdifRaw) = SLinhaEmAdif & "<" & "EOR" & ">"
  Volgende

 

Kliek File / Save xls2adi.xls en naby die VBA-redakteur.

Kopieer die data van hul lêers van MS Excel© jy wil om te skakel na die toepaslike kolomme, ernstig aan die einde, en sluit die MS Excel©.

Jy mag nodig wees om die instellings te verander die wetlik MS Excel© makros uit te voer, indien nodig, gaan na Tools / Makro en kliek op Veiligheid, die keuse van 'n laer vlak. Dit is geskryf vir MS Excel© em MS Windows XP© (beide in Portugees weergawe). As jy die kode in 'n ander taal gebruik, byvoorbeeld Engels, die term "vervang Sheet1’ por 'Sheet1’

As jy dubbel-kliek op die lêer xls2adi.xls, die kode wat ons net ingevoeg is, sal uitgevoer word en kolom “ADIF RAW” Teken in ADIF formaat.

Nou te voltooi, Selekteer die inhoud van die kolom “ADIF RAW” e copie (Ctrl C), begin Notepad (Notepad) e Cole (Ctrl V). Stoor die lêer met die verdere uitbreiding.

Hierdie kode monster is gratis om te gebruik, vrylik kan gebruik maak van die. Dit is 'n baie eenvoudige voorbeeld van wat kan slegs gedoen word deur gebruik te maak van VBA (Visual Basic for Applications). Komplementeer hierdie kode validasies met die meer akkurate, veral in die velde qso_date’ e 'time_on', waar die formate moet ooreenstem spesifikasie ADIF. Indien u enige foute of enige vrae, nie huiwer om kommentaar te lewer. Ek hoop dat die artikel nuttig sal wees.

Tags: ,