Proces nawrócenia z dziennika MS Excel© do ADIF jest stosunkowo prosta i można zrobić przy użyciu odrobiny programowania VBA. Dzięki tej łącze może odnosić się do specyfikacji ADIF 1.0 które są wykorzystywane przez większość log, ważne jest, aby przeczytać ten dokument.

Aby rozpocząć proces konwersji opiera się na tym uruchomić samouczek, tworząc plik w MS Excel©. W pierwszym bielizny Wpisz nazwę pól, które chcesz zaimportować (Proszę sprawdzić ADIF 1.0 nazwy pól). Nawet w pierwszej linii, typ “ADIF RAW” Na ostatniej komórki, to jest, gdy tekst będzie napisany w ADIF.

Arkusz jest wyglądać tak (ale nadal nie ma danych na linii 2). Chociaż w formacie ADIF nie określa minimalnej liczby pól, co najmniej logowania QSO muszą mieć wartości do połączeń, QSO_Date, Time_On, E Tryb zespołu.

Następnie zaznacz cały arkusz i sformatować komórki jako tekst.

Zapisz plik jako xls2adi.xls (arkusz w MS Excel©)

Przyjrzyjmy się teraz pisać i wstawić kod w VBA. Przejdź do Narzędzia / Makro i kliknij przycisk Edytor Visual Basic (Alt F11).

W edytorze VBA dwukrotnie kliknij 'ThisWorkbook’ że jest w "Projekcie – VBAProject ". W tym miejscu pojawi się główny blok kodu, który będzie uruchamiany po otwarciu tego pliku ponownie.

Blok kodu, który następuje ustawia kilka zmiennych i wzywa fCampoAdifValido funkcji (linia 05) że sprawdzi, czy nazwa pola, która jest na pierwszej linii odpowiada specyfikacji ADIF. Jeśli wszystkie nazwy pól są prawidłowe działanie połączeń pEscreveAdif procedury (linia 09) wypisze logi w ADIF, Jeśli pole ma nieprawidłową nazwę funkcja wyświetla komunikat o błędzie (linia 07) i kończy.

Kopiuj / wklej lub wpisz następujący kod:

 

Private Sub Workbook_Open()
  As Boolean Dim bNomeDoCampoValido(conLinhaInicial)
  sUltimaColuna = fQualEAUltimaColuna(conColunaInicial)
  bNomeDoCampoValido = fCampoAdifValido(conColunaInicial, sUltimaColuna)
    Jeśli bNomeDoCampoValido = False Then ("Znaleziono nieprawidłowe nazwy pola" & vbCrLf & "Usuń kolumny wypełnione na czerwono!")
    Więcej

W edytorze VBA, kliknij przycisk Wstaw / Moduł. W tym module zostaną pozostałe kod, który jest nazywany przez głównego bloku.

Stałe conLinhaInicial (linia 02 następnego bloku) i conColunaInicial (linia 03 następnego bloku) określenie linii 2 (Arkusz kalkulacyjny) nie pierwszej rejestracji i że kolumna (Arkusz kalkulacyjny) pierwsze pole.

Funkcje fQualEAUltimaLinha (linia 08 następnego bloku) i fQualEAUltimaColuna (linia 17 następnego bloku) określi, w ostatnim rzędzie i kolumnie danych. Wymaga to Pusta komórka oznacza koniec zapisów dziennika.

FCampoAdifValido funkcji (linia 05 do poprzedniego Bloco) Testy na ważność nazwa pola. Cyklu 'Select Case sNomeDoCampo’ (linia 31 następnego bloku) więcej pól mogą być dodawane zgodnie ze specyfikacją z ADIF.

PEscreveAdif procedury (linia 09 do poprzedniego Bloco) napisze tekst w kolumnie, która ADIF “ADIF RAW” pierwszej linii. Procedura ta jest pobierana z pola Ifen QSO_DATE, dwoma punktami pola i dodał M TIME_ON na końcu pola BAND. Aby to bardziej makro można nałożyć bardziej rygorystyczne warunki kontroli danych w tej procedury.

Kopiuj / wklej lub wpisz następujący kod w module:

 

Option Explicit 2
Public Const conColunaInicial As String = "A"
IUltimaLinha As Integer Public(iPrimeiraLinha As Integer) Integer(Folha1.Cells(iValRecebido, "A")) > 0
      iValRecebido = iValRecebido + 1
    Pętla - 1
End Function

(String sPrimeiraColuna) String
  (sPrimeiraColuna)
    While Len(Folha1.Cells(1, Chr.(iValRecebido))) > 0
      iValRecebido = iValRecebido + 1
    Pętla(iValRecebido - 1)
End Function

(String sPrimeiraColuna, sUltimaColuna As String) Boolean(sPrimeiraColuna) Aby rosnąco(sUltimaColuna)
      sNomeDoCampo = LCase(Folha1.Cells(1, iColunaCorrente - 64))
      Select Case sNomeDoCampo "pasmo": fCampoAdifValido = True "wezwanie": fCampoAdifValido = True "CQZ": fCampoAdifValido = True "tryb": 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 surowców"
          fCampoAdifValido = True
           - 64
        Case Else(1, iColunaCorrente - 64).Interior.Color = RGB(255, 0, 0)
          fCampoAdifValido = False()
  As Integer Dim iLinhaCorrente
   ""
    Dla iColunaCorrente = Asc(conColunaInicial) Aby rosnąco(sUltimaColuna) - 1
      Jeśli LCase(Folha1.Cells(1, Chr.(iColunaCorrente))) = "pasmo" Następnie(iLinhaCorrente, Chr.(iColunaCorrente)) & "M"
      Więcej(Folha1.Cells(1, Chr.(iColunaCorrente))) = "qso_date" Następnie(Folha1.Cells(iLinhaCorrente, Chr.(iColunaCorrente)), "-", "")
        Więcej(Folha1.Cells(1, Chr.(iColunaCorrente))) = "time_on" Następnie(Folha1.Cells(iLinhaCorrente, Chr.(iColunaCorrente)), ":", "")
          Więcej(iLinhaCorrente, Chr.(iColunaCorrente))
          End If & "<" & LCase(Folha1.Cells(1, Chr.(iColunaCorrente))) & ":" & Tylko(sTextoNaCelula) & ">" & sTextoNaCelula(iLinhaCorrente, iAdifRaw) = SLinhaEmAdif & "<" & "EOR" & ">"
  Następny

 

Kliknij Plik / Zapisz xls2adi.xls i zamknij edytor VBA.

Teraz skopiuj danych w MS Excel© chcesz przekonwertować do odpowiednich kolumn, poważne zamknąć na końcu i MS Excel©.

Być może trzeba zmienić ustawienia dla MS Excel sugurança© do uruchamiania makr, W razie potrzeby przejdź do Narzędzia / Makro i kliknij kartę Zabezpieczenia, wybierz niższy poziom. Dokument ten został napisany dla MS Excel© em MS Windows XP© (zarówno w wersji portugalskiej). Użyj tego kodu jest noutra vai lingua, np. w języku angielskim, zastąpienie określenia "Arkusz1’ por 'Arkusz1’

Po dwukrotnym kliknięciu pliku xls2adi.xls, kod właśnie wszedł zostanie wykonana, a kolumna “ADIF RAW” jest naszym Zaloguj formacie ADIF.

Teraz do końca, wybrać zawartość kolumny “ADIF RAW” i skopiować (Ctrl C), rozpocząć lub Notatnik (Notatnik) i cole (Ctrl V). Zapisz plik z dodatkowych rozszerzeń.

Ten przykładowy kod jest darmowy, można swobodnie korzystać. Jest to bardzo prosty przykład tego, co może być dokonana jedynie za pomocą VBA (Visual Basic for Applications). Uzupełnienie tej walidacji kodu z bardziej dokładne, zwłaszcza w qso_date polach '’ e 'time_on ", gdzie formatów musi pasować do specyfikacji ADIF. Jeśli zauważysz błąd lub masz jakieś pytania, Nie wahaj się komentarz. Mam nadzieję, że artykuł będzie przydatny.

Tagi: ,