MS Excel log dönüşüm süreci© için ADIF oldukça basit ve programlama biraz kullanılarak yapılabilir VBA. Bu sayede bağlantı ADIF özelliklerine bakabilirsiniz 1.0 Birçok log tarafından hangi, Bu belgeyi okumanız önemlidir.

MS Excel bir dosya oluşturarak bu yazının başlangıç ​​dayalı bir dönüşüm sürecini başlatmak için©. Ilk keten alanların adını yazın almak isteyeceksiniz (ADIF kontrol edin 1.0 alan adı). Hatta ilk sırada, tip “ADIF RAW” son hücre, Bu metin ADIF yazılmış olacak yerdir.

Çalışma böyle bakmaktır (hatta ama yine de herhangi bir veri 2). ADIF biçim alan bir asgari sayısını belirlemek olmasa da, en azından QSO Arama kaydı değerler olmalıdır, QSO_Date, Time_On, Band e Moda.

Daha sonra Çalışma sayfasının tamamını seçmek ve metin olarak hücreleri biçimlendirmek.

Dosyayı xls2adi.xls olarak kaydet (MS Excel çalışma sayfası©)

Şimdi VBA kod yazmak ve eklemek istiyorum. Araçlar / Makro gidin ve Visual Basic Düzenleyicisi'ni tıklatın (Alt F11).

VBA düzenleyicisinde çift tıklatın 'ThisWorkbook’ O 'Projesi ise – VBAProject ". Eğer tekrar bu dosyayı açtığınızda çalışacak kod ana blok almak yerdir.

Aşağıdaki kod bloğu bazı değişkenlerini ayarlar ve fonksiyon fCampoAdifValido çağrıları (hat 05) ilk satır üzerinde alan adı ADIF belirlenmesine karşılık eğer kontrol edecek. Tüm alan adları ise doğru işlev yordamı pEscreveAdif çağrıları (hat 09) ADIF, günlük yazacak, Bir alan geçersiz bir ad varsa işlev bir hata mesajı gösterir (hat 07) e terminall.

Kopyala / yapıştır ya da aşağıdaki kodu yazın:

 

Private Sub Workbook_Open()
  Boolean Dim bNomeDoCampoValido gibi
  (conLinhaInicial)
  sUltimaColuna = fQualEAUltimaColuna(conColunaInicial)
  bNomeDoCampoValido = fCampoAdifValido(conColunaInicial, sUltimaColuna)
    BNomeDoCampoValido = False Then
       ("Bulunan geçersiz alan adları" & vbCrLf & "Kırmızı dolu sütun çıkarın!")
    Başka
      

VBA düzenleyicisinde tıklatın Ekle / Modülü. Bu modülde ana blok denir kalan kodu olacak.

ConLinhaInicial sabitleri (hat 02 sonraki blok) ve conColunaInicial (hat 03 sonraki blok) hat tanımlamak 2 (Elektronik Tablo) üretim tarihi ve sahip sütun A (Elektronik Tablo) İlk alan.

Fonksiyonları fQualEAUltimaLinha (hat 08 sonraki blok) ve fQualEAUltimaColuna (hat 17 sonraki blok) son satır ve sütun veri belirleyecek. Bu, boş bir hücreye günlük kayıtlarının sona erer gerektirir.

Fonksiyonu fCampoAdifValido (hat 05 önceki blok) alan adının geçerliliğini sınar. Döngüsü 'Select Case sNomeDoCampo’ (hat 31 sonraki blok) daha fazla alana ADIF spesifikasyonuna göre eklenebilir.

Prosedür pEscreveAdif (hat 09 önceki blok) ADIF olan sütunundaki metin yazacak “ADIF RAW” İlk satır. Bu prosedür alan Ifen QSO_DATE alınır, ve alanın iki puan alan BAND sonunda bir TIME_ON M eklendi. Bu daha makro yapmak için bu işlem denetimi veri için daha sıkı koşullar empoze edilebilir.

Kopyala / yapıştır veya modül içinde aşağıdaki kodu yazın:

 

Option Explicit
 2
As String conColunaInicial Public Const = "A"
Tamsayı Kamu iUltimaLinha gibi
(As Integer iPrimeiraLinha) As Integer
  (Folha1.Cells(iValRecebido, "A")) > 0
      iValRecebido = iValRecebido + 1
    Döngü
   - 1
End Function

(Dize sPrimeiraColuna) Dize
  (sPrimeiraColuna)
    Do While Len(Folha1.Cells(1, Chr(iValRecebido))) > 0
      iValRecebido = iValRecebido + 1
    Döngü
  (iValRecebido - 1)
End Function

(Dize sPrimeiraColuna, As String sUltimaColuna) Boole
  (sPrimeiraColuna) Asc için(sUltimaColuna)
      sNomeDoCampo = LCase(Folha1.Cells(1, iColunaCorrente - 64))
      Olgu sNomeDoCampo seçin
         "bant": fCampoAdifValido = True
         "çağrı": fCampoAdifValido = True
         "CQZ": fCampoAdifValido = True
         "moda": 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 ham"
          fCampoAdifValido = True
           - 64
        Case Else
          (1, iColunaCorrente - 64).Interior.Color = RGB(255, 0, 0)
          fCampoAdifValido = False
        ()
  Integer Dim iLinhaCorrente gibi
   ""
    IColunaCorrente = Asc için(conColunaInicial) Asc için(sUltimaColuna) - 1
      Eğer LCase(Folha1.Cells(1, Chr(iColunaCorrente))) = "bant" O zaman
        (iLinhaCorrente, Chr(iColunaCorrente)) & "M"
      Başka
        (Folha1.Cells(1, Chr(iColunaCorrente))) = "qso_date" O zaman
          (Folha1.Cells(iLinhaCorrente, Chr(iColunaCorrente)), "-", "")
        Başka
          (Folha1.Cells(1, Chr(iColunaCorrente))) = "time_on" O zaman
            (Folha1.Cells(iLinhaCorrente, Chr(iColunaCorrente)), ":", "")
          Başka
            (iLinhaCorrente, Chr(iColunaCorrente))
          End If
         & "<" & LCase(Folha1.Cells(1, Chr(iColunaCorrente))) & ":" & Sadece(sTextoNaCelula) & ">" & sTextoNaCelula
    (iLinhaCorrente, iAdifRaw) = SLinhaEmAdif & "<" & "EOR" & ">"
  Sonraki

 

/ Xls2adi.xls kaydedin ve VBA düzenleyiciyi kapatın Dosya'yı.

Şimdi MS Excel dosyalarında veri kopyalama© Uygun sütunları dönüştürmek istediğiniz, ciddi sonunda çıkmak ve MS Excel©.

MS Excel sugurança ayarlarını değiştirmeniz gerekebilir© çalışan makrolar için, Gerekli Araçlar / Makro ve tıklama Güvenlik giderseniz, daha düşük bir seviye seçin. Bu, MS Excel için yazılmıştır© em MS Windows XP© (Portekizce versiyonu hem de). Başka bir dilde bu kodu kullanacaksanız, İngilizce örneğin, Terim 'Sayfa1 değiştirin’ por 'Sayfa1’

Dosyayı xls2adi.xls çift tıkladığınızda, girdiğiniz kod yürütülür edilecek ve sütun “ADIF RAW” Bizim Giriş ADIF formatında.

Şimdi bitirmek için, sütun içeriğini seçmek “ADIF RAW” e kopya (Ctrl C), başlangıç ​​Not Defteri (Not Defteri) e cole (Ctrl V). Ek uzantılı dosyayı kaydedin.

Bu kod örneği kullanmak serbesttir, özgürce kullanabilirsiniz. Sadece VBA kullanılarak yapılabilir ne çok basit bir örnek (Visual Basic for Applications). Daha doğru olan bu kodu doğrulama Kompleman, Özellikle alanları 'qso_date içinde’ e 'time_on', nerede biçimleri özellikleri ADIF eşleşmelidir. Bir hata bildirimi veya herhangi bir sorunuz varsa, yorum yapmak için çekinmeyin. Ben makale yararlı olacağını umuyoruz.