Процесс преобразования из журнала 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, нажмите кнопку Добавить / Модуль. В этом модуле будет Оставшаяся часть кода, который вызывается основной блок.

Константы conLinhaInicial (линия 02 Следующий блок) и conColunaInicial (линия 03 Следующий блок) определить линию 2 (Таблица) у первой регистрации и что столбец (Таблица) Первое поле.

Функции fQualEAUltimaLinha (линия 08 Следующий блок) и fQualEAUltimaColuna (линия 17 Следующий блок) будет определять последних строки и столбца данных. Это требует пустая ячейка означает конец записи журнала.

Функция fCampoAdifValido (линия 05 сделать предыдущие bloco) Тесты действия имени поля. Select Case цикла "sNomeDoCampo’ (линия 31 Следующий блок) больше полей могут быть добавлены в соответствии с спецификацией ADIF.

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

Копирование / вставка или введите следующий код в модуль:

 

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 As String) Струнный
  (sPrimeiraColuna)
    Do While Лен(Folha1.Cells(1, Chr(iValRecebido))) > 0
      iValRecebido = iValRecebido + 1
    Петля(iValRecebido - 1)
End Function(sPrimeiraColuna As String, sUltimaColuna As String) Булевы(sPrimeiraColuna) Для Asc(sUltimaColuna)
      sNomeDoCampo = LCase(Folha1.Cells(1, iColunaCorrente - 64))
      Select Case 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()
  ILinhaCorrente As Integer Dim ""
    Для iColunaCorrente = Asc(conColunaInicial) Для Asc(sUltimaColuna) - 1
      Если LCase(Folha1.Cells(1, Chr(iColunaCorrente))) = "полоса" Затем(iLinhaCorrente, Chr(iColunaCorrente)) & "М"
      Еще(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 sugurança© запускать макросы, При необходимости перейдите в меню Сервис / Макрос и щелкните Безопасность, выбрать более низкий уровень. Это была написана для MS Excel© ет MS Windows XP© (как в португальском языке). Используйте этот код noutra вай лингва, например, на английском языке, Sheet1 заменить термином "’ POR "Лист1’

Когда вы дважды щелкните файл xls2adi.xls, код, который вы только что ввели, будет выполнен и колонки “ADIF RAW” Наша Вход в формате ADIF.

Теперь, чтобы закончить, выберите содержимого столбцов “ADIF RAW” и копировать (Ctrl C), начать или блокнот (Блокнот) и Коул (Ctrl V). Сохраните файл с расширением дополнительными.

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