Proses menukarkan MS Excel log© untuk ADIF adalah agak mudah dan boleh dilakukan menggunakan sedikit pengaturcaraan VBA. Melalui ini pautan Spesifikasi boleh berunding ADIF 1.0 yang digunakan oleh program-program yang paling log, adalah penting bahawa anda membaca dokumen-dokumen ini.
Untuk memulakan proses penukaran berdasarkan mula tutorial ini dengan mencipta fail dalam MS Excel©. The Linh pertama Tulis nama bidang yang anda akan mahu untuk mengimport (Lihat Spesifikasi ADIF 1.0 relatif kepada nama medan). Masih di barisan hadapan, jenis “ADIF RAW” sel terakhir, ini adalah di mana teks akan ditulis dalam ADIF.
Spreadsheet adalah salah satu aspek seperti ini (tetapi masih tiada data on-line 2). Walaupun format ADIF tidak menetapkan bilangan minimum bidang, sekurang-kurangnya rekod anda mesti mempunyai nilai untuk Panggilan QSO, QSO_Date, Time_On, Mod Band e.
Kemudian pilih lembaran keseluruhan dan format sel-sel sebagai teks.
Simpan fail sebagai xls2adi.xls (Spreadsheet MS Excel©)
Marilah kita sekarang menulis dan memasukkan kod ke dalam VBA. Pergi ke Tools / Makro, dan klik Editor Visual Basic (Alt F11).
Dalam editor VBA dua klik 'ThisWorkbook’ yang dalam Projek ' – VBAProject '. Ini adalah di mana anda mendapatkan blok utama kod yang akan dilaksanakan apabila membuka lagi fail ini.
Blok kod yang berikut mentakrifkan beberapa pembolehubah dan panggilan fCampoAdifValido fungsi (garis 05) yang akan memeriksa jika nama bidang yang baris pertama sepadan dengan spesifikasi ADIF. Jika semua bidang adalah nama-nama yang betul fungsi panggilan pEscreveAdif prosedur (garis 09) yang akan menulis log masuk ADIF, Jika salah satu bidang mempunyai nama yang tidak sah fungsi menunjukkan mesej ralat (garis 07) dan berakhir.
Menyalin / menampal atau taip kod berikut:
Private Sub Workbook_Open() Sebagai Boolean Dim bNomeDoCampoValido (conLinhaInicial) sUltimaColuna = fQualEAUltimaColuna(conColunaInicial) bNomeDoCampoValido = fCampoAdifValido(conColunaInicial, sUltimaColuna) Jika bNomeDoCampoValido = False Kemudian ("Found nama medan tidak sah" & vbCrLf & "Keluarkan tiang yang dipenuhi dengan warna merah!") Lagi
Dalam editor VBA, klik Insert / Modul. Adakah modul ini akan mendapat baki kod yang dipanggil oleh blok utama.
Pemalar conLinhaInicial (garis 02 blok seterusnya) dan conColunaInicial (garis 03 blok seterusnya) menentukan garis 2 (Hamparan) adalah rekod pertama dan lajur A (Hamparan) medan pertama.
Fungsi fQualEAUltimaLinha (garis 08 blok seterusnya) dan fQualEAUltimaColuna (garis 17 blok seterusnya) akan menentukan baris dan lajur terakhir data. Ini memerlukan bahawa sel kosong bermakna akhir rekod log.
FCampoAdifValido fungsi (garis 05 blok sebelumnya) menguji kesahihan nama bidang. Pilih Kes Kitaran sNomeDoCampo’ (garis 31 blok seterusnya) lebih banyak bidang boleh ditambah mengikut spesifikasi ADIF.
PEscreveAdif prosedur (garis 09 blok sebelumnya) akan menulis teks dalam ruang yang mempunyai ADIF “ADIF RAW” baris pertama. Prosedur ini diambil dari bidang Ifen QSO_DATE, Bidang kolon dan ditambah TIME_ON satu hujung medan BAND M. Untuk membuat makro syarat-syarat yang lebih ketat boleh dikenakan lebih banyak data pengesahan prosedur dalam ini.
Menyalin / menampal atau taip kod berikut ke dalam modul:
Option Explicit 2 Awam malar conColunaInicial Sebagai String = "A" Sebagai Integer Awam iUltimaLinha (iPrimeiraLinha Sebagai Integer) Sebagai Integer (Folha1.Cells(iValRecebido, "A")) > 0 iValRecebido = iValRecebido + 1 Gelung - 1 Fungsi Akhir (sPrimeiraColuna Sebagai String) Rentetan (sPrimeiraColuna) Adakah Walaupun Len(Folha1.Cells(1, Chr(iValRecebido))) > 0 iValRecebido = iValRecebido + 1 Gelung (iValRecebido - 1) Fungsi Akhir (sPrimeiraColuna Sebagai String, sUltimaColuna Sebagai String) Boolean The (sPrimeiraColuna) Untuk menaik(sUltimaColuna) sNomeDoCampo = LCase(Folha1.Cells(1, iColunaCorrente - 64)) Pilih Kes sNomeDoCampo "band": fCampoAdifValido = Benar "memanggil": fCampoAdifValido = Benar "CQZ": fCampoAdifValido = Benar "mod": fCampoAdifValido = Benar "qso_date": fCampoAdifValido = Benar "rst_rcvd": fCampoAdifValido = Benar "rst_sent": fCampoAdifValido = Benar "SRX": fCampoAdifValido = Benar "STX": fCampoAdifValido = Benar "time_on": fCampoAdifValido = Benar "adif mentah" fCampoAdifValido = Benar - 64 Kes lain (1, iColunaCorrente - 64).Interior.Color = RGB(255, 0, 0) fCampoAdifValido = False () As Integer Dim iLinhaCorrente "" Untuk iColunaCorrente = menaik(conColunaInicial) Untuk menaik(sUltimaColuna) - 1 Jika LCase(Folha1.Cells(1, Chr(iColunaCorrente))) = "band" Kemudian (iLinhaCorrente, Chr(iColunaCorrente)) & "M" Lagi (Folha1.Cells(1, Chr(iColunaCorrente))) = "qso_date" Kemudian (Folha1.Cells(iLinhaCorrente, Chr(iColunaCorrente)), "-", "") Lagi (Folha1.Cells(1, Chr(iColunaCorrente))) = "time_on" Kemudian (Folha1.Cells(iLinhaCorrente, Chr(iColunaCorrente)), ":", "") Lagi (iLinhaCorrente, Chr(iColunaCorrente)) Akhir Jika & "<" & LCase(Folha1.Cells(1, Chr(iColunaCorrente))) & ":" & Hanya(sTextoNaCelula) & ">" & sTextoNaCelula (iLinhaCorrente, iAdifRaw) = SLinhaEmAdif & "<" & "EOR" & ">" Seterusnya
Klik Fail / Simpan xls2adi.xls dan menutup editor VBA.
Sekarang menyalin data dari fail Excel MS anda© anda mahu menukar kepada ruangan yang bersesuaian, serius pada akhir dan menamatkan MS Excel©.
Anda mungkin perlu menukar tetapan dan undang-undang yang ditetapkan MS Excel© untuk melaksanakan makro, jika perlu pergi ke Tools / Makro, dan klik Keselamatan, memilih tahap yang lebih rendah. Prosedur ini telah ditulis untuk MS Excel© em MS Windows XP© (kedua-dua dalam versi Inggeris). Jika anda menggunakan kod ini dalam bahasa lain, contohnya dalam bahasa Inggeris, menggantikan Sheet1 istilah '’ por 'Sheet1’
Apabila anda klik dua kali xls2adi.xls fail, kod yang kami hanya memasukkan akan dilaksanakan dan lajur “ADIF RAW” Log kami dalam format ADIF.
Sekarang untuk menyelesaikan, pilih kandungan lajur “ADIF RAW” e catatan (Ctrl C), melancarkan Notepad (Notepad) e cole (Ctrl V). Simpan fail dengan adi lanjutan.
Ini contoh kod adalah penggunaan percuma, ia bebas boleh menggunakan. Ia adalah satu contoh yang sangat mudah apa yang boleh dilakukan hanya menggunakan VBA (Visual Basic untuk Permohonan). Melengkapkan pengesahan kod dengan lebih tepat, terutama dalam bidang qso_date’ 'time_on' e, mana format mesti sepadan dengan spesifikasi ADIF. Jika anda perasan sebarang kesilapan atau mempunyai apa-apa soalan, berasa bebas untuk mengulas. Saya harap artikel ini akan berguna.