Працэс пераўтварэння з часопіса MS Excel,© да ADIF адносна простая і можа быць зроблена, выкарыстоўваючы трохі праграмавання VBA. Дзякуючы гэтай спасылка можа звярнуцца да спецыфікацыі ADIF 1.0 які выкарыстоўваецца ў большасці часопісаў, Важна, што вы чытаеце гэты дакумент.

Для запуску працэсу пераўтварэнні на аснове гэтага ўрока пачынаецца са стварэння файла ў фармаце MS Excel©. У першым бялізны Напішыце імя поля, якія вы жадаеце імпартаваць (Калі ласка, праверце ADIF 1.0 назвы палёў). Нават у першым радку, тып “ADIF RAW” апошнюю вочка, гэта дзе тэкст будзе напісаны ў ADIF.

Ліст павінен выглядаць наступным чынам (але па-ранейшаму няма дадзеных па лініі 2). Хоць фармат ADIF не вызначае мінімальную колькасць палёў, па крайняй меры ваш QSO часопіс павінен мець значэння для выкліку, QSO_Date, Time_On, Аркестр і рэжым.

Затым абярыце ўвесь ліст і фармат вочках як тэкст.

Захавайце файл як xls2adi.xls (ліст у фармаце MS Excel©)

Запішам зараз і ўставіць код у VBA. Зайдзіце ў меню Сэрвіс / Макрас і пстрыкніце Рэдактар ​​Visual Basic (Alt F11).

У рэдактары VBA двойчы пстрыкніце "ThisWorkbook’ , Якая знаходзіцца ў 'Project – VBAProject ". Тут вы можаце атрымаць галоўны блок кода, які будзе выконвацца, калі вы адкрываеце гэты файл зноўку.

Блок кода, які варта устанаўлівае некаторыя зменныя і выклікі функцый fCampoAdifValido (лінія 05) , Што будзе правяраць, калі імя поля, якое знаходзіцца на першай лініі адпавядае спецыфікацыі ADIF. Калі ўсе імёны палёў правільнае функцыянаванне выклікае працэдуру pEscreveAdif (лінія 09) напішу ўвайдзіце ADIF, Калі поле мае недапушчальнае імя функцыя паказвае паведамленне пра памылку (лінія 07) і сканчаецца.

Капіяванне / устаўка або ўвядзіце наступны код:

 

Private Sub Workbook_Open()
  As Boolean Dim bNomeDoCampoValido(conLinhaInicial)
  sUltimaColuna = fQualEAUltimaColuna(conColunaInicial)
  bNomeDoCampoValido = fCampoAdifValido(conColunaInicial, sUltimaColuna)
    Калі bNomeDoCampoValido = False Тады ("Знойдзена недапушчальныя імёны палёў" & vbCrLf & "Выдаліць калонкі, запоўненыя ў чырвоным!")
    Яшчэ

У рэдактары VBA, націсніце кнопку Insert / Module. Ці з'яўляецца гэты модуль атрымае пакінуты код, які называюць асноўны блок.

Канстанты conLinhaInicial (лінія 02 Наступны блок) і conColunaInicial (лінія 03 Наступны блок) вызначыць лінію 2 (Табліца) у першай рэгістрацыі і калонкі (Табліца) Першае поле.

Функцыі fQualEAUltimaLinha (лінія 08 Наступны блок) і fQualEAUltimaColuna (лінія 17 Наступны блок) будзе вызначацца апошняй радка і слупка дадзеных. Гэта патрабуе пустая вочка азначае канец запісу часопіса.

Функцыя fCampoAdifValido (лінія 05 папярэдняга блока) правярае правільнасць імя поля. Select Case цыклу "sNomeDoCampo’ (лінія 31 Наступны блок) больш палёў могуць быць дададзеныя ў адпаведнасці са спецыфікацыяй ADIF.

Працэдура pEscreveAdif (лінія 09 папярэдняга блока) буду пісаць тэкст у слупок, які мае ADIF “ADIF RAW” у першым шэрагу. Падчас гэтай працэдуры бярэцца з поля Ifen QSO_DATE, ў двух кропках поля і дадаў TIME_ON M ў канцы поля ГРУПА. Каб зрабіць гэта больш макра больш жорсткія ўмовы могуць быць уведзеныя для праверкі дадзеных у гэтай працэдуры,.

Скапіюйце / устаўце або ўвядзіце наступны код у модуль:

 

Option Explicit 2
Public Const conColunaInicial As String = "A"
IUltimaLinha As Integer грамадскасцю(iPrimeiraLinha As Integer) Integer(Folha1.Cells(iValRecebido, "A")) > 0
      iValRecebido iValRecebido = + 1
    Пятля - 1
End Function

(Радок sPrimeiraColuna) Струнны
  (sPrimeiraColuna)
    Рабіце той час як Лена(Folha1.Cells(1, Chr(iValRecebido))) > 0
      iValRecebido iValRecebido = + 1
    Пятля(iValRecebido - 1)
End Function

(Радок sPrimeiraColuna, sUltimaColuna As String) Лагічнае(sPrimeiraColuna) Для ўзрастанні(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
        Case Else(1, iColunaCorrente - 64).Interior.Color = RGB(255, 0, 0)
          fCampoAdifValido = False()
  As Integer Dim iLinhaCorrente
   ""
    Для iColunaCorrente = Asc(conColunaInicial) Для ўзрастанні(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))
          End If & "<" & LCase(Folha1.Cells(1, Chr(iColunaCorrente))) & ":" & Толькі(sTextoNaCelula) & ">" & sTextoNaCelula(iLinhaCorrente, iAdifRaw) = SLinhaEmAdif & "<" & "ПНП" & ">"
  Наступны

 

У меню Файл / Захаваць xls2adi.xls і зачыніце рэдактар ​​VBA.

Цяпер скапіруйце дадзеныя з файлаў MS Excel© Вы хочаце, каб пераўтварыць у адпаведныя слупкі, цяжкая ў канцы і выйсці з MS Excel©.

Магчыма, вам прыйдзецца змяніць налады устаноўленага законам MS Excel© запускаць макрасы, Пры неабходнасці перайдзіце ў меню Сэрвіс / Макросы і пстрыкніце Бяспека, Выбіраючы больш нізкім узроўні. Гэта была напісана для MS Excel© ет MS Windows XP© (як у партугальскім мове). Калі вы выкарыстоўваеце гэты код на іншай мове, напрыклад, англійская, Sheet1 замяніць тэрмінам "’ POR "Лист1’

Калі вы двойчы пстрыкніце файл xls2adi.xls, код, які мы толькі што ўставілі будзе працаваць і слупкоў “ADIF RAW” наш часопіс у фармаце ADIF.

Зараз, каб скончыць, Вылучыце змесціва слупка “ADIF RAW” ад капіявання (Ctrl C), Запусціце Нататнік (Нататнік) Ўстаўляць (Ctrl V). Захавайце файл з дадатковым пашырэннем.

Гэты прыклад кода можа выкарыстоўваць, можаце свабодна выкарыстоўваць. Гэта вельмі просты прыклад таго, што можа быць зроблена толькі з дапамогай VBA (Візуальны Бейсик для прыкладанняў). Дапоўніце гэты код праверкі з больш дакладным, асабліва ў qso_date палёў’ е 'time_on ", дзе фармат павінен адпавядаць спецыфікацыі ADIF. Калі вы заўважыце якія-небудзь памылкі ці ў вас ёсць пытанні, не саромейцеся каментаваць. Я спадзяюся, што артыкул будзе карысная.

Тэгі: ,