MS Excel의 로그에서 변환의 과정© 에 ADIF 비교적 간단하고 프로그래밍의 비트를 사용하여 수행할 수 있습니다 VBA. 이를 통해 링크 ADIF의 사양을 참조할 수 있습니다 1.0 대부분의 로그에서 사용되는, 이 문서를 읽는 것이 중요합니다.
MS Excel에서 파일을 생성하여이 튜토리얼의 시작에 따라 변환 프로세스를 시작하려면©. 첫 번째 시트의 필드의 이름을 쓰기 당신이 가져올 것입니다 (ADIF를 확인하세요 1.0 필드의 이름). 심지어 첫 번째 라인에, 유형 “ADIF RAW” 마지막 셀, 이것은 텍스트가 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 이전 블록) 필드 이름의 유효성을 테스트. 사이클 '선택 사례 sNomeDoCampo’ (라인 31 다음 블록) 더 많은 필드 ADIF의 사양에 따라 추가할 수 있습니다.
프로 시저 pEscreveAdif (라인 09 이전 블록) ADIF를 가진 열에있는 텍스트를 작성합니다 “ADIF RAW” 첫 번째 줄에. 이 절차는 현장 Ifen QSO_DATE에서 가져옵니다, 그리고 필드의 두 지점 현장 밴드의 끝에 TIME_ON M을 추가. 이 더 매크로를 만들려면이 절차의 검사 데이터에 대한 더 엄격한 조건을 부과 될 수 있습니다.
복사 / 붙여넣기 또는 모듈 내에 다음 코드를 입력:
노골적인 옵션 2 문자열로 conColunaInicial 공공 Const = "A" 정수 공중으로 IUltimaLinha(정수로 iPrimeiraLinha) 정수(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 = 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 아니면 케이스(1, iColunaCorrente - 64).Interior.Color = RGB(255, 0, 0) fCampoAdifValido = FALSE() 정수 흐리게 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 & "<" & "릴 끝" & ">" 다음
/ xls2adi.xls을 저장하고 VBA 편집기를 닫고 파일을 클릭.
이제 MS Excel 파일에서 데이터를 복사© 당신은 해당 열에로 변환할, 심각한는 말에 종료하고 MS 엑셀©.
당신은 MS 엑셀 sugurança에 대한 설정을 변경해야 할 수도 있습니다© 실행 매크로로, 필요한 도구 / 매크로를 클릭하십시오 보안 가면, 낮은 수준을 선택할. 이것은 MS Excel 용 작성되었습니다© 그들 MS 윈도우 XP© (포르투갈어 버전에 모두). 당신이 다른 언어로이 코드를 사용하는 경우, 영어로 예, 용어 'Sheet1을 대체’ 젠장, 'Sheet1’
당신은 파일 xls2adi.xls을 두 번 클릭하면, 방금 입력한 코드가 실행 및됩니다 칼럼 “ADIF RAW” 우리 로그 ADIF 형식입니다.
이제 마무리, 열 내용을 선택 “ADIF RAW” E copie (Ctrl C), 시작 메모장 (메모장) 전자 콜 (Ctrl V). 추가 확장명을 가진 파일을 저장합니다.
이 코드 예제는 사용하는 무료입니다, 당신은 자유롭게 사용할 수 있습니다. 그것은 단지 VBA를 사용하여 할 수있는 매우 간단한 예제입니다 (Visual Basic for Applications의). 더 정확이 코드 검증을 보완, 특히 필드 'qso_date에’ E 'time_on', 어디 형식 사양 ADIF 일치해야합니다. 당신은 오류를 확인하거나 문의 사항이 있으시면, 코멘트를 주저하지 마시고. 나는이 문서가 유용 바랍니다.