Процесът на преобразуване влезете MS Excel,© за ADIF е сравнително проста и може да се направи с помощта на малко програмиране VBA. Чрез тази връзка може да се отнася до спецификациите на ADIF 1.0 който се използва от повечето Вход, е важно да прочетете този документ.

За да започнете процеса на реализация, въз основа на този урок започне чрез създаване на файла в MS Excel©. В първия бельо Напишете името на полетата, които ще искате да импортирате (Моля, проверете ADIF 1.0 на името на областта). Дори и на първа линия, тип “ADIF RAW” последната клетка, това е мястото, където текстът ще бъде написано в ADIF.

Работният лист може да изглежда така (но все още няма данни за линия 2). Въпреки че формата ADIF не определя минимален брой на полетата, най-малко дневника QSO трябва да имат стойности на Call, QSO_Date, Time_On, Режим Band д.

След това изберете целия работен лист и да форматирате клетките като текст.

Запазете файла като xls2adi.xls (лист в MS Excel©)

Нека сега да напишете и въведете кода на VBA. Отидете в Tools / Macro и щракнете върху Visual Basic Editor (Alt F11).

В VBA редактора щракнете двукратно върху "ThisWorkbook’ , който е в "Проект – VBAProject ". Това е мястото, където можете да получите на основния блок код, който ще се кандидатира отново, когато се отвори този файл.

Блокът на код, който следва определя някои променливи и призовава функцията fCampoAdifValido (линия 05) , че ще провери дали името на полето, който е на първа линия съответства на спецификацията на ADIF. Ако всички имена на полета са правилни функция нарича процедура pEscreveAdif (линия 09) ще напише в дневника в ADIF, Ако полето е невалидно име на функцията показва съобщение за грешка (линия 07) и завършва.

Copy / Paste или въведете следния код:

 

Частен Sub Workbook_Open()
  Както Boolean Dim bNomeDoCampoValido
  (conLinhaInicial)
  sUltimaColuna = fQualEAUltimaColuna(conColunaInicial)
  bNomeDoCampoValido = fCampoAdifValido(conColunaInicial, sUltimaColuna)
    Ако bNomeDoCampoValido = False След това
       ("Намерени невалидни имена на полета" & vbCrLf & "Премахване на колони пълни в червено!")
    Друг
      

В редактор VBA, щракнете върху Вмъкване / модул. В този модул ще бъдат останалите код, който се нарича с основния блок.

Константите conLinhaInicial (линия 02 следващия блок) и conColunaInicial (линия 03 следващия блок) определяне линия 2 (Spreadsheet) са първата регистрация, и че колона A (Spreadsheet) първото поле.

Функциите fQualEAUltimaLinha (линия 08 следващия блок) и fQualEAUltimaColuna (линия 17 следващия блок) ще определи последния ред и колона данни. Това изисква една празна клетка означава края на дневника записи.

Функцията fCampoAdifValido (линия 05 предходната блок) тестове на валидността на името на полето. Цикълът "Изберете дело sNomeDoCampo’ (линия 31 следващия блок) повече полета могат да се добавят според спецификацията на ADIF.

Процедурата pEscreveAdif (линия 09 предходната блок) ще напиша текста в колоната, която е ADIF “ADIF RAW” на първа линия. Тази процедура е взето от областта Ifen QSO_DATE, на две точки от областта и добави M TIME_ON в края на полето BAND. За да направите това по-макро могат да бъдат наложени по-строги условия за проверка на данни в тази процедура.

Copy / Paste или въведете следния код в модула:

 

Option Explicit
 2
Обществени Const conColunaInicial Както стринга = "А"
As Integer Public iUltimaLinha
(iPrimeiraLinha като цяло число) As Integer
  (Folha1.Cells(iValRecebido, "А")) > 0
      iValRecebido = iValRecebido + 1
    Контур
   - 1
End Function

(sPrimeiraColuna Както стринга) Низа
  (sPrimeiraColuna)
    Направете Докато Len(Folha1.Cells(1, Chr(iValRecebido))) > 0
      iValRecebido = iValRecebido + 1
    Контур
  (iValRecebido - 1)
End Function

(sPrimeiraColuna Както стринга, sUltimaColuna Както стринга) Булевият
  (sPrimeiraColuna) За да Asc(sUltimaColuna)
      sNomeDoCampo = LCase(Folha1.Cells(1, iColunaCorrente - 64))
      Изберете дело sNomeDoCampo
         "банда": fCampoAdifValido = True
         "обаждане": fCampoAdifValido = True
         "CQZ": fCampoAdifValido = True
         "вид": 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 суровини"
          fCampoAdifValido = True
           - 64
        Дело Else
          (1, iColunaCorrente - 64).Interior.Color = RGB(255, 0, 0)
          fCampoAdifValido = False
        ()
  As Integer Dim iLinhaCorrente
   ""
    За iColunaCorrente = Asc(conColunaInicial) За да Asc(sUltimaColuna) - 1
      Ако LCase(Folha1.Cells(1, Chr(iColunaCorrente))) = "банда" След това
        (iLinhaCorrente, Chr(iColunaCorrente)) & "M"
      Друг
        (Folha1.Cells(1, Chr(iColunaCorrente))) = "qso_date" След това
          (Folha1.Cells(iLinhaCorrente, Chr(iColunaCorrente)), "-", "")
        Друг
          (Folha1.Cells(1, Chr(iColunaCorrente))) = "time_on" След това
            (Folha1.Cells(iLinhaCorrente, Chr(iColunaCorrente)), ":", "")
          Друг
            (iLinhaCorrente, Chr(iColunaCorrente))
          Крайна сметка, ако
         & "<" & LCase(Folha1.Cells(1, Chr(iColunaCorrente))) & ":" & Само(sTextoNaCelula) & ">" & sTextoNaCelula
    (iLinhaCorrente, iAdifRaw) = SLinhaEmAdif & "<" & "EOR" & ">"
  До

 

Щракнете File / Save xls2adi.xls и затворете редактора VBA.

Сега копие на данни в MS Excel файлове© Вие искате да конвертирате в съответните колони, сериозни напусна в края и MS Excel©.

Може да се наложи да промените настройките за MS Excel sugurança© да стартирате макроси, ако е необходимо, отидете на Tools / Macro и щракнете върху Защита, изберете по-ниско ниво. Това е написан за MS Excel© EM MS Windows XP© (както в португалската версия). Ако ще използвате този код в друг език, например на английски език, замени Sheet1 терминът "’ POR "Sheet1’

Когато щракнете двукратно върху файла xls2adi.xls, кода, който току що сте въвели ще бъде изпълнена и колоната “ADIF RAW” За нас е Влезте във формат ADIF.

Сега, за да завърши, изберете колоната съдържание “ADIF RAW” електронно копие (Ctrl C), начало Notepad (Notepad) д училище (Ctrl V). Запазете файла с разширение допълнително.

Този код проба е свободен да използва, можете свободно да използвате. Това е един много прост пример за това, което може само да бъде направено чрез VBA (Visual Basic за приложения). Допълване на този код валидиране с по-точни, особено в областта qso_date’ е "time_on", където формати трябва да съответстват на спецификацията ADIF. Ако забележите грешка или имате някакви въпроси, не се колебайте да коментар. Надявам се, че статията ще бъде полезна.

Етикети: ,