A folyamat az átalakítás az MS Excel napló© a ADIF viszonylag egyszerű, és lehet tenni egy kis programozás VBA. Ezzel link utalhat az előírásoknak ADIF 1.0 mellyel a legtöbb napló, Fontos, hogy elolvassa ezt a dokumentumot.
Indításához átalakítási folyamat alapján a bemutató kezdete létrehoz egy fájlt az MS Excel©. Az első fehérnemű Írja a nevét, a mezők lesz akar importálni (Kérjük, ellenőrizze a ADIF 1.0 A neve mezők). Még az első sorban, típusú “ADIF RAW” na utolsó cella, Ez az, ahol a szöveget írt ADIF.
A munkalap hogy néz ki (de nincs adat a sorban 2). Bár a ADIF formátum nem adja meg a minimális számú területen, legalább a QSO be kell értékek Call, QSO_Date, Time_On, Zenekar e mód.
Ezután válasszuk ki a teljes munkalap és formázza a cellákat szövegként.
Mentse a fájlt xls2adi.xls (munkalap MS Excel©)
Térjünk most írni, és helyezze be a kódot VBA. Kattintson az Eszközök / Makró, majd kattintson a Visual Basic Editor (Alt F11).
A VBA szerkesztőben kattintson duplán a "ThisWorkbook’ , ami a "Projekt – VBAProject ". Itt kap a fő blokk kód fog futni, ha megnyitjuk ezt a fájlt újra.
A blokk a következő kóddal meghatározza bizonyos változók, és felhívja a funkció fCampoAdifValido (vonal 05) , hogy ellenőrizni fogja, ha a mező nevét, amely az első sor megegyezik a specifikációja a ADIF. Ha minden a mezőneveket helyes függvény meghívja az eljárást pEscreveAdif (vonal 09) fogja írni a napló a ADIF, Ha a mező érvénytelen név a funkció megmutatja hibaüzenet (vonal 07) és véget ér.
Copy / paste, vagy írja be az alábbi kódot:
Private Sub Workbook_Open() As Boolean Dim bNomeDoCampoValido (conLinhaInicial) sUltimaColuna = fQualEAUltimaColuna(conColunaInicial) bNomeDoCampoValido = fCampoAdifValido(conColunaInicial, sUltimaColuna) Ha bNomeDoCampoValido = False Aztán ("Talált érvénytelen mezőneveket" & vbCrLf & "Távolítsuk el a kitöltött oszlopok piros!") Más
A VBA szerkesztő, kattintson a Beszúrás / modul. Ebben a modulban lesz a maradék kódot, hogy hívják a fő blokk.
Az állandók conLinhaInicial (vonal 02 A következő blokk) és conColunaInicial (vonal 03 A következő blokk) meg a sor 2 (Táblázatkezelő) már az első bejegyzés és az oszlop (Táblázatkezelő) Az első mező.
A funkciók fQualEAUltimaLinha (vonal 08 A következő blokk) és fQualEAUltimaColuna (vonal 17 A következő blokk) határozza meg az utolsó sor és oszlop adatai. Ez megköveteli egy üres cella végét jelenti a napló rekordok.
A funkció fCampoAdifValido (vonal 05 nem az előző bloco) tesztek érvényességét a mező neve. A ciklus "Select Case sNomeDoCampo’ (vonal 31 A következő blokk) több területen is ki specifikáció szerint a ADIF.
Az eljárás pEscreveAdif (vonal 09 nem az előző bloco) fogja írni a szöveget az oszlop, amely ADIF “ADIF RAW” az első sorban. Ez az eljárás venni a területen Ifen QSO_DATE, A két pont a területen, és hozzá egy TIME_ON M végén a mező BAND. Ahhoz, hogy ez még makró kiszabható szigorúbb ellenőrzési feltételeire vonatkozó adatokat az eljárás.
Copy / paste, vagy írja be az alábbi kódot a modul:
Option Explicit 2 Public Const conColunaInicial As String = "A" As Integer Public iUltimaLinha (iPrimeiraLinha As Integer) As Integer (Folha1.Cells(iValRecebido, "A")) > 0 iValRecebido = iValRecebido + 1 Hurok - 1 End Function (sPrimeiraColuna As String) A Karakterlánc (sPrimeiraColuna) Do While Len(Folha1.Cells(1, Chr(iValRecebido))) > 0 iValRecebido = iValRecebido + 1 Hurok (iValRecebido - 1) End Function (sPrimeiraColuna As String, sUltimaColuna As String) A Boolean (sPrimeiraColuna) Az Asc(sUltimaColuna) sNomeDoCampo = LCase(Folha1.Cells(1, iColunaCorrente - 64)) Válassza Case sNomeDoCampo "zenekar": fCampoAdifValido = True "hívás": fCampoAdifValido = True "CQZ": fCampoAdifValido = True "üzemmód": 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 nyers" fCampoAdifValido = True - 64 Case Else (1, iColunaCorrente - 64).Interior.Color = RGB(255, 0, 0) fCampoAdifValido = False () As Integer Dim iLinhaCorrente "" A iColunaCorrente = Asc(conColunaInicial) Az Asc(sUltimaColuna) - 1 Ha LCase(Folha1.Cells(1, Chr(iColunaCorrente))) = "zenekar" Akkor (iLinhaCorrente, Chr(iColunaCorrente)) & "M" Más (Folha1.Cells(1, Chr(iColunaCorrente))) = "qso_date" Akkor (Folha1.Cells(iLinhaCorrente, Chr(iColunaCorrente)), "-", "") Más (Folha1.Cells(1, Chr(iColunaCorrente))) = "time_on" Akkor (Folha1.Cells(iLinhaCorrente, Chr(iColunaCorrente)), ":", "") Más (iLinhaCorrente, Chr(iColunaCorrente)) End If & "<" & LCase(Folha1.Cells(1, Chr(iColunaCorrente))) & ":" & Csak(sTextoNaCelula) & ">" & sTextoNaCelula (iLinhaCorrente, iAdifRaw) = SLinhaEmAdif & "<" & "EOR" & ">" Következő
Kattintson a File / Save xls2adi.xls és zárja be a VBA szerkesztő.
Most másolja az adatokat a MS Excel fájlok© szeretnénk konvertálni a megfelelő oszlopok, komoly kilép a végén, és MS Excel©.
Lehet, hogy módosítania kell a beállításokat MS Excel sugurança© futtatható makrók, ha szükséges, menj az Eszközök / Makró, majd kattintson a Biztonsági, válasszon egy alacsonyabb. Ezt írták a MS Excel© em MS Windows XP© (mind a portugál változatban). Használja ezt a kódot noutra vai lingua, például az angol, helyébe a "Munka1’ por "Munka1’
Ha duplán kattint a fájlra xls2adi.xls, A kódot most lépett hajtják végre, és az oszlop “ADIF RAW” a mi Belépés ADIF formátumban.
Most, hogy befejezze, válassza ki az oszlop tartalmának “ADIF RAW” és másolás (Ctrl C), kezdő vagy Jegyzettömb (Jegyzettömb) és Cole (Ctrl V). Mentsük el a fájlt a kiterjesztés.
Ez a kód minta szabadon felhasználható, Ön szabadon használhatja. Ez egy nagyon egyszerű példát, amit csak akkor lehet megvalósítani a VBA (Visual Basic for Applications). Kiegészítik ezt a kódot érvényesítések pontosabb, különösen azokon a területeken "qso_date’ e 'time_on ", ahol a formátumok meg kell egyeznie a specifikáció ADIF. Ha hibát észlel, vagy bármilyen kérdése, ne habozzon megjegyzést. Remélem a cikk hasznos lesz.