กระบวนการของการแปลงจากบันทึก MS Excel ของ© เพื่อ ADIF ที่ค่อนข้างง่ายและสามารถทำได้โดยใช้บิตของการเขียนโปรแกรม VBA. ผ่านช่องทางนี้ เชื่อมโยง สามารถอ้างอิงถึงข้อกำหนดของ ADIF 1.0 ซึ่งถูกใช้โดยการเข้าสู่ระบบมากที่สุด, เป็นสิ่งสำคัญที่คุณอ่านเอกสารฉบับนี้.
เพื่อเริ่มกระบวนการแปลงขึ้นอยู่กับการเริ่มต้นการกวดวิชานี้โดยการสร้างแฟ้มใน MS Excel©. ในผ้าลินินแรกที่เขียนชื่อของเขตข้อมูลที่คุณจะต้องการนำเข้า (กรุณาตรวจสอบ ADIF 1.0 จากชื่อของเขตข้อมูล). แม้ในบรรทัดแรก, ประเภท “RAW ADIF” เซลล์สุดท้าย, นี้เป็นที่ที่ข้อความจะถูกเขียนใน ADIF.
แผ่นงานที่จะมีลักษณะเช่นนี้ (แต่ก็ยังไม่มีข้อมูลในบรรทัด 2). แม้ว่ารูปแบบ ADIF ไม่ได้ระบุจำนวนขั้นต่ำของเขตข้อมูล, อย่างน้อยเข้าสู่ระบบ QSO ของคุณต้องมีค่าที่จะโทร, QSO_Date, Time_On, โหมด e - band.
จากนั้นให้เลือกทั้งแผ่นงานและจัดรูปแบบเซลล์เป็นข้อความ.
บันทึกแฟ้มเป็น xls2adi.xls (แผ่นงานใน MS Excel©)
ให้เราตอนนี้การเขียนและการใส่รหัสใน VBA. ไปที่ Tools / Macro และคลิกที่แก้ไข Visual Basic (Alt F11).
ในการแก้ไข VBA ThisWorkbook ดับเบิลคลิก '’ ที่อยู่ในโครงการ – 'VBAProject. ซึ่งเป็นที่ที่คุณจะได้รับ block หลักของรหัสที่จะทำงานเมื่อคุณเปิดแฟ้มนี้อีกครั้ง.
บล็อกของรหัสที่เป็นไปตามกำหนดตัวแปรบางอย่างและการเรียกฟังก์ชั่น fCampoAdifValido (บรรทัด 05) ที่จะตรวจสอบว่าชื่อเขตข้อมูลที่อยู่บนบรรทัดแรกที่สอดคล้องกับข้อกำหนดของ ADIF ที่. ถ้าทั้งหมดที่ชื่อเขตข้อมูลที่มีฟังก์ชั่นที่ถูกต้องเรียก pEscreveAdif ขั้นตอนที่ (บรรทัด 09) จะเขียนบันทึกใน ADIF, ถ้าเขตข้อมูลที่มีชื่อที่ไม่ถูกต้องฟังก์ชันที่แสดงข้อความแสดงข้อผิดพลาด (บรรทัด 07) และสิ้นสุด.
คัดลอก / วางหรือพิมพ์รหัสต่อไปนี้:
ส่วนตัว Workbook_Open Sub() เป็น Boolean มซำ bNomeDoCampoValido (conLinhaInicial) sUltimaColuna = fQualEAUltimaColuna(conColunaInicial) bNomeDoCampoValido = fCampoAdifValido(conColunaInicial, sUltimaColuna) ถ้า bNomeDoCampoValido = เท็จแล้ว ("พบชื่อของเขตข้อมูลที่ไม่ถูกต้อง" & vbCrLf & "เอาคอลัมน์ที่เต็มไปด้วยสีแดง!") อื่น
ในการแก้ไข VBA คลิกแทรก / โมดูล. ในโมดูลนี้จะเป็นรหัสที่เหลืออยู่ที่เรียกว่าบล็อกหลัก.
ค่าคงที่ conLinhaInicial (บรรทัด 02 บล็อกถัดไป) และ conColunaInicial (บรรทัด 03 บล็อกถัดไป) บรรทัดที่กำหนด 2 (สเปรดชีท) มีการลงทะเบียนครั้งแรกและที่คอลัมน์ (สเปรดชีท) ที่เขตข้อมูลแรก.
fQualEAUltimaLinha ฟังก์ชั่น (บรรทัด 08 บล็อกถัดไป) และ fQualEAUltimaColuna (บรรทัด 17 บล็อกถัดไป) จะเป็นตัวกำหนดแถวสุดท้ายและข้อมูลในคอลัมน์. นี้ต้องใช้เซลล์ที่ว่างเปล่าหมายถึงการสิ้นสุดของการบันทึกเข้าสู่ระบบ.
fCampoAdifValido ฟังก์ชัน (บรรทัด 05 บล็อกก่อนหน้านี้) การทดสอบความถูกต้องของชื่อเขตข้อมูล. กรณี sNomeDoCampo วงจร 'เลือก’ (บรรทัด 31 บล็อกถัดไป) เขตข้อมูลที่จะสามารถเพิ่มตามข้อกำหนดของ ADIF ที่.
pEscreveAdif ขั้นตอน (บรรทัด 09 บล็อกก่อนหน้านี้) จะเขียนข้อความในคอลัมน์ที่มี ADIF “RAW ADIF” บรรทัดแรก. ขั้นตอนนี้จะนำมาจากเขต Ifen QSO_DATE, จุดสองจุดของเขตข้อมูลและเพิ่ม M TIME_ON ที่ส่วนท้ายของวงเขตข้อมูลที่. นี้เพื่อให้แมโครมากขึ้นสามารถกำหนดเงื่อนไขที่เข้มงวดมากขึ้นสำหรับการตรวจสอบข้อมูลในขั้นตอนนี้.
คัดลอก / วางหรือพิมพ์รหัสต่อไปนี้ภายในโมดูล:
ตัวเลือกที่ชัดเจน 2 Const สาธารณะ conColunaInicial As String = "A" As Integer สาธารณะ iUltimaLinha (iPrimeiraLinha As Integer) As Integer (Folha1.Cells(iValRecebido, "A")) > 0 iValRecebido iValRecebido = + 1 ห่วง - 1 ฟังก์ชั่น End (sPrimeiraColuna String) String (sPrimeiraColuna) ทำในขณะที่ Len(Folha1.Cells(1, Chr(iValRecebido))) > 0 iValRecebido iValRecebido = + 1 ห่วง (iValRecebido - 1) ฟังก์ชั่น End (sPrimeiraColuna String, sUltimaColuna As String) บูลีน (sPrimeiraColuna) เพื่อเก่า(sUltimaColuna) LCase sNomeDoCampo =(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 = เท็จ () As Integer Dim iLinhaCorrente "" สำหรับ iColunaCorrente = Asc(conColunaInicial) เพื่อเก่า(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)) End If & "<" & LCase(Folha1.Cells(1, Chr(iColunaCorrente))) & ":" & เท่านั้น(sTextoNaCelula) & ">" & sTextoNaCelula (iLinhaCorrente, iAdifRaw) = SLinhaEmAdif & "<" & "EOR" & ">" ต่อไป
คลิกที่ File / Save xls2adi.xls และปิดแก้ไข VBA.
ตอนนี้คัดลอกข้อมูลใน MS Excel ไฟล์ของคุณ© ที่คุณต้องการแปลงไปยังคอลัมน์ที่เหมาะสม, ร้ายแรงออกจากที่สิ้นสุดและ MS Excel©.
คุณอาจจำเป็นต้องเปลี่ยนการตั้งค่าสำหรับ MS Excel sugurança© เพื่อเรียกใช้แมโคร, ถ้าจำเป็นต้องไปที่ Tools / Macro และคลิกการรักษาความปลอดภัย, เลือกระดับที่ต่ำกว่า. นี้ถูกเขียนสำหรับ MS Excel© em MS Windows XP© (ทั้งในรุ่นโปรตุเกส). ถ้าคุณจะใช้รหัสนี้ในภาษาอื่น, เช่นในภาษาอังกฤษ, แทนที่คำว่า 'Sheet1’ por 'Sheet1’
เมื่อคุณดับเบิลคลิกที่ไฟล์ xls2adi.xls, รหัสที่คุณเพิ่งป้อนจะถูกดำเนินการและคอลัมน์ “RAW ADIF” เข้าสู่ระบบของเราอยู่ในรูปแบบ ADIF.
ตอนนี้ให้เสร็จสิ้น, เลือกเนื้อหาของคอลัมน์ “RAW ADIF” copie E (Ctrl C), เริ่มต้น Notepad (Notepad) โคลอี (Ctrl V). บันทึกไฟล์ที่มีนามสกุลเพิ่มเติมที่.
ตัวอย่างรหัสนี้มีอิสระที่จะใช้, คุณอิสระสามารถใช้. มันเป็นตัวอย่างที่ง่ายมากของสิ่งที่สามารถทำได้โดยใช้ VBA (Visual Basic สำหรับ Applications). ประกอบการตรวจสอบรหัสนี้กับความแม่นยำมากขึ้น, โดยเฉพาะอย่างยิ่งใน qso_date ฟิลด์ '’ 'time_on' E, ซึ่งรูปแบบจะต้องตรงกับข้อกำหนด ADIF. ถ้าคุณสังเกตเห็นข้อผิดพลาดหรือมีคำถามใด ๆ, ไม่ลังเลที่จะแสดงความคิดเห็น. ฉันหวังว่าบทความจะเป็นประโยชน์.