MS Excelのログから変換の過程© への ADIF 比較的シンプルであり、プログラミングのビットを使用して行うことができます。 VBA. このスルー のリンク ADIFの仕様を参照することができます。 1.0 ほとんどのログによって使用されます。, このドキュメントを読むことが重要です。.
MS Excelでファイルを作成することにより、このチュートリアルの開始に基づいて変換処理を開始するには©. 第一リネンにインポートする予定のフィールドの名前を書く (ADIFを確認してください 1.0 フィールドの名前の). であっても最初の行に, の種類 “ADIF RAW” NA最後のセル, これは、テキストをADIFに書き込まれる場所です。.
ワークシートはこのようにです。 (ライン上にまだデータはありません。 2). ADIFのフォーマットは、フィールドの最小数を指定しませんが、, 少なくともあなたのQSOログには、コールに値を持っている必要があります, QSO_Date, Time_On, バンドeモード.
その後、ワークシート全体を選択し、テキストとしてセルの書式を設定.
xls2adi.xlsとしてファイルを保存 (MS Excelのワークシート©)
私たちは今VBAでコードを記述して挿入してみましょう. ツール/マクロに移動し、[Visual Basic Editor]をクリックします (Altキー F11).
VBAエディタでダブルクリック 'ThisWorkbookを’ 'プロジェクトであること – VBAProjectの". あなたがこのファイルを再び開くときに実行されるコードの主なブロックを取得する場所です.
次のコードブロックは、いくつかの変数を設定し、関数fCampoAdifValidoを呼び出します (の行 05) その最初の行にあるフィールド名は、ADIFの仕様に対応しているかどうかをチェックされます. すべてのフィールド名がある場合は正しい関数は、プロシージャのpEscreveAdifを呼び出します。 (の行 09) ADIFのログを書き込みます。, フィールドに無効な名前を持つ場合、関数はエラーメッセージを示しています。 (の行 07) と終了.
次のコードをコピー/ペーストまたは入力します:
プライベートサブWorkbook_Open() ブール点心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から取得されます, フィールドの二つの点と、フィールドのBANDの最後にTIME_ONのMを追加しました. この多くのマクロを作成するには、この手順でのデータチェックのために、より厳しい条件を課すことができます。.
コピー/貼り付けまたはモジュール内に次のコードを入力:
Option Explicitステートメント 2 文字列としてconColunaInicial公共のConst = "A" 整数公開iUltimaLinhaとして (整数としてiPrimeiraLinha) Integerなど (Folha1.Cells(iValRecebido, "A")) > 0 iValRecebido = iValRecebido + 1 ループ - 1 エンド機能 (文字列sPrimeiraColuna) 文字列 (sPrimeiraColuna) レンが、か(Folha1.Cells(1, CHR(iValRecebido))) > 0 iValRecebido = iValRecebido + 1 ループ (iValRecebido - 1) エンド機能 (文字列sPrimeiraColuna, 文字列としてsUltimaColuna) ブーリアン (sPrimeiraColuna) ASCに(sUltimaColuna) sNomeDoCampo = LCase関数(Folha1.Cells(1, iColunaCorrente - 64)) ケースsNomeDoCampoを選択 "帯域": fCampoAdifValido =真 "呼び出して": fCampoAdifValido =真 "CQZ": fCampoAdifValido =真 "モードの": fCampoAdifValido =真 "qso_date": fCampoAdifValido =真 "rst_rcvd": fCampoAdifValido =真 "rst_sent": fCampoAdifValido =真 "SRX": fCampoAdifValido =真 "STX": fCampoAdifValido =真 "time_on": fCampoAdifValido =真 "ADIF生" fCampoAdifValido =真 - 64 それ以外のケース(1, iColunaCorrente - 64).Interior.Color = RGB(255, 0, 0) fCampoAdifValido =偽() 整数点心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" & ">" 次のページ
/ xls2adi.xlsを保存し、VBAエディタを閉じてファイルをクリック.
今すぐあなたのMS Excelファイルにデータをコピーする© あなたは、適切な列に変換したい, 深刻なのは最後に終了し、MS Excelの©.
あなたは、MS Excel sugurançaの設定を変更する必要があるかもしれません© マクロを実行する, 必要なツール/マクロとクリックしてセキュリティに行ってみると、, 低いレベルを選択します。. これは、MS Excelのために書かれた© EM MS Windows XPの© (ポルトガル語版の両方). このコードを使用してnoutra VAIリンガです。, 英語の例:, 用語 'Sheet1を置き換える’ POR 'Sheet1の’
あなたは、ファイルのxls2adi.xlsをダブルクリックすると, 先ほど入力したコードが実行される列 “ADIF RAW” 私達のログは、ADIF形式になって.
今すぐ終了する, 列の内容を選択します。 “ADIF RAW” とコピー (Ctrlキー C), スタートまたはメモ帳 (メモ帳) とコール (Ctrlキー V). 追加の拡張子を付けてファイルを保存.
このコードサンプルの利用は無料。, あなたは自由に使用できます。. それだけVBAを使って何ができるかの非常に単純な例です。 (Visual Basic for Applicationsの使用). より正確で、このコードの検証を補完する, 特にフィールド 'qso_dateで’ E 'time_on', ここで、フォーマットは仕様ADIFと一致する必要があります. このエラーを気づくかご質問がある場合, コメントすることを躊躇しない. 私は記事が役に立つことを願って.