1c excel Thin Client กรอกตารางค่า ไหนดีกว่า - 1C หรือ Excel ผ่านแอปพลิเคชัน Excel

กิน วิธีต่างๆเพื่อเปิดไฟล์ Excel ใน 1C และในทางกลับกัน ผู้ใช้ระดับเริ่มต้นจะชอบมากกว่านี้ การดำเนินงานที่เรียบง่ายบันทึกเอกสารในรูปแบบอื่นหรือใช้ โปรแกรมพิเศษ- แต่ก็คุ้มค่าที่จะใช้เวลาเพียงเล็กน้อยและเรียนรู้วิธีการทำงานกับเครื่องมือซอฟต์แวร์เพื่อดูและประมวลผลข้อมูลจากโปรแกรมหนึ่งไปยังอีกโปรแกรมหนึ่ง ทักษะการเขียนโปรแกรมพื้นฐานเหล่านี้จะช่วยให้คุณหลีกเลี่ยงงานประจำในอนาคตได้

วิธีเปิดเอกสาร Excel ใน 1C และในทางกลับกัน

โปรแกรมแก้ไขสเปรดชีต Microsoft Excel มีฟังก์ชันการทำงานที่เหนือกว่าผลิตภัณฑ์ซอฟต์แวร์บัญชี 1C ดังนั้นผู้ใช้ 1C ต้องการดำเนินการบางอย่างในตัวแก้ไขสเปรดชีตแล้วส่งคืนข้อมูลไปยังโปรแกรมบัญชี และนี่ก็ไม่น่าแปลกใจเพราะก่อนหน้านี้การบัญชีของหลาย ๆ บริษัท ดำเนินการโดยใช้โปรแกรม Microsoft โดยเฉพาะ แต่ด้วยระบบอัตโนมัติของกระบวนการทางธุรกิจขององค์กรในปัจจุบันจึงเป็นไปไม่ได้ที่จะละทิ้งโปรแกรมพิเศษ เพื่อสร้างปฏิสัมพันธ์ระหว่าง การใช้งานที่แตกต่างกันมีวิธีง่ายๆ ดังนี้

    เมื่อคุณต้องจัดการกับไฟล์ ผลิตภัณฑ์ซอฟต์แวร์ซึ่งไม่ได้ติดตั้งไว้ในคอมพิวเตอร์ปัจจุบันของคุณ วิธีที่ง่ายที่สุดคือการใช้งาน แอปพลิเคชั่นพิเศษสำหรับการแปล ตาราง Excelเป็นรูปแบบ 1C และในทางกลับกัน สามารถพบได้บนเว็บไซต์ผลิตภัณฑ์ 1C

    หากคอมพิวเตอร์ของคุณมีทั้ง 1C และ Excel คุณสามารถเปิดไฟล์ด้วยตนเองในแอปพลิเคชัน "เนทิฟ" จากนั้นบันทึกเป็นรูปแบบของโปรแกรมอื่น โดยทั่วไปตัวเลือกนี้จะใช้ได้เมื่อบันทึกการพิมพ์หรือเค้าโครง

    ผู้ใช้ 1C 7.7 สามารถอัปเกรดเป็นเวอร์ชัน 1C 8 ซึ่งมีตัวแก้ไขตารางที่ได้รับการปรับปรุง

1C และ Excel สามารถโต้ตอบโดยทางโปรแกรมได้อย่างไร

การโต้ตอบระหว่าง 1C และ Excel สามารถดำเนินการได้ในระดับโปรแกรมโดยใช้เทคโนโลยี OLE Automation ที่พัฒนาโดย Microsoft ช่วยให้คุณสามารถเข้าถึงวัตถุ COM ได้โดยตรงจากล่ามสคริปต์ โปรแกรมที่แตกต่างกัน- พูดง่ายๆ ก็คือ OLE ช่วยให้คุณสามารถถ่ายโอนชิ้นงานจากโปรแกรมหนึ่งไปยังอีกโปรแกรมหนึ่ง จากนั้นจึงคืนงานไปยังแอปพลิเคชันดั้งเดิม นี่คือสิ่งที่นักบัญชีต้องการจากโปรแกรมแก้ไขสเปรดชีตของ Microsoft

คุณไม่จำเป็นต้องเป็นโปรแกรมเมอร์เพื่อใช้เครื่องมือ OLE แม้ว่าการรู้จักบรรทัดโค้ดครั้งแรกจะมาพร้อมกับข้อผิดพลาด แต่การตรวจสอบจะช่วยระบุข้อผิดพลาดได้ และประสบการณ์ที่ได้รับจะช่วยหลีกเลี่ยงข้อผิดพลาดเหล่านี้ในอนาคต ด้านล่างนี้เป็นคำสั่งยอดนิยม (เรียกว่ารายการ) สำหรับการทำงานกับข้อมูล Excel ในโปรแกรมบัญชีและในทางกลับกัน

วิธีเปิดไฟล์ Excel ใน 1C โดยทางโปรแกรม

ดังนั้นหากคุณติดตั้งทั้งสองโปรแกรมบนคอมพิวเตอร์ของคุณซึ่งคุณต้องการสร้างการแลกเปลี่ยนข้อมูลระหว่างนั้นคุณสามารถจัดระเบียบการโต้ตอบโดยทางโปรแกรมได้ ในการดำเนินการนี้ คุณต้องเปิดทั้งสองแอปพลิเคชัน จากนั้นใช้ OLE เพื่อสร้างการเข้าถึงจาก 1C ไปยัง Excel:

  • ข้อยกเว้น

    รายงาน (ErrorDescription() + "ไม่ได้ติดตั้ง Excel บนคอมพิวเตอร์เครื่องนี้!");

  • สิ้นสุดความพยายาม.

มีการสร้างการเข้าถึงตัวแก้ไขตารางแล้ว ตอนนี้ใช้คำสั่งต่อไปนี้ที่คุณต้องการเพื่อเข้าถึง:

    เอกสารเฉพาะ:

    • หนังสือ = Excel.WorkBooks.Open(FilePath)

    • แผ่นงาน = Book.WorkSheets (SheetNumber);

  • รวมถึงหมายเลขแผ่นงานเฉพาะ:

    รวมถึงชื่อชีตเฉพาะ:

    • แผ่นงาน = Book.WorkSheets (ชื่อแผ่นงาน);

    • Value = Sheet.Cells(RowNumber, ColumnNumber).Value;

หากต้องการอ่านข้อมูลจากหน้าแรกของไฟล์ ให้ใช้รายการต่อไปนี้:

    Excel = CreateObject("Excel.Application");

    หนังสือ = Excel.WorkBooks.Open(FilePath);

    แผ่นงาน = หนังสือแผ่นงาน (1);

    TotalColumns = Sheet.Cells(1,1).SpecialCells(11).Column;

    TotalRows = Sheet.Cells(1,1).SpecialCells(11).Row;

    สำหรับแถว = 1 โดย TotalRows Loop

    • สำหรับคอลัมน์ = 1 ตามรอบ TotalColumns

      Value = Abbr(Sheet.Cells(Row,Column).Value);

      สิ้นสุดรอบ;

    สิ้นสุดรอบ;

โปรดจำไว้ว่าต้องระบุเส้นทางไปยังไฟล์ให้ครบถ้วน เมื่อบันทึกชื่อเอกสาร คุณจะไม่สามารถใส่อักขระ เช่น \, /, :, *, ?, ", >,< и |.

วิธีเปิดไฟล์ 1C ผ่าน Excel โดยทางโปรแกรม

ในการบันทึกข้อมูลใน Excel คุณต้อง:

    หรือเปิดเอกสารที่มีอยู่:

    • Book = Excel.WorkBooks.Open(Path to File) - โดยการเปรียบเทียบกับการอ่านไฟล์ Excel จาก 1C

    หรือเพิ่มอันใหม่:

    • สมุดงาน = Excel.WorkBooks.Add();

    คุณสามารถสร้างแผ่นงานใหม่ในเอกสารใหม่ได้:

    • แผ่นงาน = Book.Sheets.Add();

    และเพิ่มค่าใหม่ให้กับเซลล์:

    • Sheet.Cells(RowNumber, ColumnNumber).Value = ค่า; (วิธีการเขียนค่าโดยใช้ OLE มีการอธิบายโดยละเอียดบนอินเทอร์เน็ต)

  • หนังสือ SaveAs(FilePath);

    ข้อยกเว้น

    รายงาน(ErrorDescription()+"ไฟล์ไม่ถูกบันทึก!");

    สิ้นสุดความพยายาม.

เมื่อคุณทำงานกับโปรแกรมแก้ไขสเปรดชีตเสร็จแล้ว ให้ออกจากการใช้งาน ทีมพิเศษ(Excel.Application.Quit();) วิธีนี้จะช่วยประหยัดทรัพยากรคอมพิวเตอร์ระหว่างการทำงานต่อไป

อันตรายเมื่อแลกเปลี่ยนข้อมูลระหว่าง 1C และ Excel

1C และ Excel ได้รับการพัฒนาโดยบริษัทต่างๆ และใช้วิธีการจัดการข้อมูลที่แตกต่างกัน ดังนั้นเมื่อทำการโอนตารางจากโปรแกรมหนึ่งไปยังอีกโปรแกรมหนึ่ง ให้จำข้อผิดพลาดต่อไปนี้:

    ตัวแยกต่างๆใน ตัวเลขเศษส่วน- Microsoft แบ่งเลขทศนิยมโดยใช้ลูกน้ำ ดังนั้นเมื่อโอนตารางจากโปรแกรมบัญชีอย่าแปลกใจกับวันที่ที่มีอยู่มากมายและความสับสนอื่น ๆ เพียงแต่ว่าในโปรแกรมบัญชี อาจใช้จุดในการเขียนเศษส่วนได้ ซึ่งโปรแกรมแก้ไขสเปรดชีตของ Microsoft จะตีความว่าเป็นตัวคั่นวันที่ และ 15.5 จะกลายเป็นวันที่ 15 พฤษภาคม ในการประมวลผลข้อมูลการบัญชีในตัวแก้ไขสเปรดชีต จะต้องแทนที่ตัวคั่นด้วยเครื่องหมายจุลภาค

    เมื่อถ่ายโอนข้อมูลจาก Excel ไปยัง 1C ค่าคงที่ของ Excel ที่ไม่ได้อยู่ในโปรแกรมบัญชีอาจแสดงไม่ถูกต้อง หากต้องการถอดรหัสคุณต้องไปที่วิธีใช้ตัวแก้ไขสเปรดชีตหรือเข้าสู่โหมดแก้ไขข้อบกพร่องและตรวจสอบนิพจน์ตัวเลขของค่าคงที่ต่างๆ

หากคุณต้องการแลกเปลี่ยนข้อมูลจำนวนมากหรือไม่สามารถกำจัดข้อผิดพลาดได้ โปรดติดต่อผู้เชี่ยวชาญของบริษัท Setby เพื่อขอความช่วยเหลือ เราจะช่วยคุณแก้ปัญหาในระดับโปรแกรมและเข้าใจคำสั่งที่จำเป็นสำหรับงานของคุณ

แอปพลิเคชัน 1C เป็นโปรแกรมที่ได้รับความนิยมมากที่สุดในหมู่นักบัญชี นักวางแผน นักเศรษฐศาสตร์ และผู้จัดการมายาวนาน ไม่เพียงแต่จะมีการกำหนดค่าที่หลากหลายเท่านั้น ประเภทต่างๆกิจกรรม แต่ยังรวมถึงการแปลมาตรฐานการบัญชีในหลายประเทศทั่วโลก องค์กรจำนวนมากขึ้นเรื่อยๆ กำลังเปลี่ยนมาใช้การบัญชีในโปรแกรมนี้ แต่ขั้นตอนการถ่ายโอนข้อมูลจากโปรแกรมบัญชีอื่นไปยัง 1C ด้วยตนเองนั้นเป็นงานที่ค่อนข้างยาวและน่าเบื่อซึ่งใช้เวลานาน หากสถานประกอบการเก็บบันทึกด้วย ใช้ Excelจากนั้นกระบวนการถ่ายโอนจะเป็นอัตโนมัติและเร่งความเร็วได้อย่างมาก

การถ่ายโอนข้อมูลจาก Excel ไปยัง 1C จำเป็นไม่เพียงแต่ในช่วงเริ่มต้นของการทำงานกับโปรแกรมนี้เท่านั้น บางครั้งจำเป็นต้องทำสิ่งนี้เมื่อคุณต้องป้อนรายการบางรายการที่จัดเก็บไว้ในสมุดสเปรดชีตในระหว่างทำกิจกรรม ตัวอย่างเช่น หากคุณต้องการโอนรายการราคาหรือคำสั่งซื้อจากร้านค้าออนไลน์ หากรายการมีขนาดเล็ก คุณสามารถป้อนด้วยตนเองได้ แต่จะเกิดอะไรขึ้นหากรายการเหล่านั้นมีรายการหลายร้อยรายการ เพื่อเร่งขั้นตอนให้เร็วขึ้นคุณสามารถใช้ตัวเลือกเพิ่มเติมได้

เอกสารเกือบทุกประเภทเหมาะสำหรับการดาวน์โหลดอัตโนมัติ:

  • รายการระบบการตั้งชื่อ;
  • รายชื่อคู่สัญญา
  • รายการราคา;
  • รายการคำสั่ง;
  • ข้อมูลเกี่ยวกับการซื้อหรือการขาย ฯลฯ

ควรสังเกตทันทีว่า 1C ไม่มีเครื่องมือในตัวที่จะช่วยให้คุณสามารถถ่ายโอนข้อมูลจาก Excel เพื่อวัตถุประสงค์เหล่านี้ คุณจะต้องเชื่อมต่อโปรแกรมโหลดบูตภายนอกซึ่งเป็นไฟล์ในรูปแบบ อีพีเอฟ.

การเตรียมข้อมูล

เราจะต้องเตรียมข้อมูลในตาราง Excel เอง


นอกเหนือจากการดำเนินการที่เป็นสากลเหล่านี้ในการเตรียมข้อมูลในหนังสือ Excel คุณจะต้องนำเอกสารให้สอดคล้องกับข้อกำหนดของตัวโหลดเฉพาะที่เราจะใช้ แต่เราจะพูดถึงเรื่องนี้ด้านล่างเล็กน้อย

การเชื่อมต่อบูตโหลดเดอร์ภายนอก

เชื่อมต่อ bootloader ภายนอกพร้อมส่วนขยาย อีพีเอฟแอปพลิเคชัน 1C สามารถทำได้ทั้งก่อนและหลังการเตรียมไฟล์ Excel สิ่งสำคัญคือปัญหาการเตรียมการทั้งสองนี้ได้รับการแก้ไขก่อนเริ่มกระบวนการโหลด

มีตัวโหลดตาราง Excel ภายนอกหลายตัวสำหรับ 1C ซึ่งสร้างโดยนักพัฒนาหลายคน เราจะพิจารณาตัวอย่างโดยใช้เครื่องมือในการประมวลผลข้อมูล "กำลังโหลดข้อมูลจากเอกสารสเปรดชีต"สำหรับเวอร์ชัน 1C 8.3


หนึ่งในฐานข้อมูลหลักที่ 1C ทำงานด้วยคือรายการผลิตภัณฑ์และบริการ ดังนั้นเพื่ออธิบายขั้นตอนการโหลดจาก Excel เราจะเน้นที่ตัวอย่างการถ่ายโอนข้อมูลประเภทนี้

  1. เรากลับไปที่หน้าต่างการประมวลผล เนื่องจากเราจะโหลดกลุ่มผลิตภัณฑ์ สวิตช์ในพารามิเตอร์จึงควรอยู่ในตำแหน่ง "ไดเรกทอรี"- อย่างไรก็ตาม มีการติดตั้งด้วยวิธีนี้ตามค่าเริ่มต้น คุณควรเปลี่ยนเฉพาะเมื่อคุณกำลังจะถ่ายโอนข้อมูลประเภทอื่น: ส่วนตารางหรือลงทะเบียนข้อมูล ต่อไปในสนาม "มุมมองไดเรกทอรี"คลิกที่ปุ่มที่มีจุดไข่ปลาอยู่ รายการแบบเลื่อนลงจะเปิดขึ้น ในนั้นเราควรเลือกรายการ "ระบบการตั้งชื่อ".
  2. หลังจากนี้ ตัวจัดการจะวางฟิลด์ที่โปรแกรมใช้ในสมุดอ้างอิงประเภทนี้โดยอัตโนมัติ ควรสังเกตทันทีว่าไม่จำเป็นต้องกรอกข้อมูลทุกช่องเลย
  3. ตอนนี้เปิดแบบพกพาอีกครั้ง เอกสารเอ็กเซล- หากชื่อของคอลัมน์แตกต่างจากชื่อของฟิลด์ไดเร็กทอรี 1C ที่มีคอลัมน์ที่เกี่ยวข้องคุณจะต้องเปลี่ยนชื่อคอลัมน์เหล่านี้ใน Excel เพื่อให้ชื่อตรงกันโดยสมบูรณ์ หากตารางมีคอลัมน์ที่ไม่มีแอนะล็อกในไดเร็กทอรี ก็ควรลบคอลัมน์เหล่านั้นออก ในกรณีของเรา คอลัมน์เหล่านี้คือ "ปริมาณ"และ "ราคา"- ควรเพิ่มด้วยว่าลำดับของคอลัมน์ในเอกสารจะต้องตรงกับลำดับที่แสดงในการประมวลผลอย่างเคร่งครัด หากคุณไม่มีข้อมูลสำหรับบางคอลัมน์ที่แสดงในตัวโหลด คอลัมน์เหล่านี้สามารถเว้นว่างไว้ได้ แต่หมายเลขของคอลัมน์ที่มีข้อมูลจะต้องตรงกัน เพื่อความสะดวกและรวดเร็วในการแก้ไขคุณสามารถใช้ โอกาสพิเศษ Excel สำหรับการย้ายคอลัมน์ไปรอบๆ อย่างรวดเร็ว

    หลังจากทำตามขั้นตอนเหล่านี้เสร็จสิ้นแล้ว ให้คลิกที่ไอคอน "บันทึก"ซึ่งแสดงด้วยไอคอนรูปฟล็อปปี้ดิสก์ที่มุมซ้ายบนของหน้าต่าง จากนั้นปิดไฟล์โดยคลิกที่ปุ่มปิดมาตรฐาน

  4. เรากลับไปที่หน้าต่างการประมวลผล 1C คลิกที่ปุ่ม "เปิด"ซึ่งแสดงเป็นโฟลเดอร์สีเหลือง
  5. หน้าต่างเปิดไฟล์จะเปิดขึ้น ไปที่ไดเร็กทอรีที่มีเอกสาร Excel ที่เราต้องการอยู่ สวิตช์แสดงไฟล์เริ่มต้นถูกตั้งค่าเป็นนามสกุล เอ็มเอ็กซ์แอล- เพื่อที่จะแสดงไฟล์ที่เราต้องการ เราต้องย้ายมันไปยังตำแหน่งนั้น "แผ่นงาน Excel"- หลังจากนั้นเลือกเอกสารที่จะถ่ายโอนแล้วคลิกที่ปุ่ม "เปิด".
  6. จากนั้นเนื้อหาจะถูกเปิดในตัวจัดการ หากต้องการตรวจสอบว่ากรอกข้อมูลถูกต้องให้คลิกที่ปุ่ม "การควบคุมการเติม".
  7. ดังที่เราเห็น เครื่องมือควบคุมการเติมแจ้งให้เราทราบว่าไม่พบข้อผิดพลาด
  8. ตอนนี้เรามาดูแท็บกัน "การตั้งค่า"- ใน "ช่องค้นหา"เราใส่เครื่องหมายถูกในบรรทัดซึ่งจะไม่ซ้ำกันสำหรับชื่อทั้งหมดที่ป้อนในไดเร็กทอรีระบบการตั้งชื่อ ฟิลด์ที่ใช้บ่อยที่สุดสำหรับสิ่งนี้คือ "บทความ"หรือ "ชื่อ"- จะต้องดำเนินการนี้เพื่อที่ว่าเมื่อเพิ่มรายการใหม่ลงในรายการ ข้อมูลจะไม่ซ้ำกัน
  9. หลังจากป้อนข้อมูลทั้งหมดและตั้งค่าเรียบร้อยแล้ว คุณสามารถดำเนินการโหลดข้อมูลลงในไดเร็กทอรีได้โดยตรง โดยคลิกที่คำจารึก “โหลดข้อมูล”.
  10. กระบวนการดาวน์โหลดอยู่ในระหว่างดำเนินการ หลังจากเสร็จสิ้น คุณสามารถไปที่สมุดอ้างอิงรายการและตรวจสอบให้แน่ใจว่าได้เพิ่มข้อมูลที่จำเป็นทั้งหมดแล้ว

เราทำตามขั้นตอนในการเพิ่มข้อมูลลงในไดเร็กทอรีระบบการตั้งชื่อในโปรแกรม 1C 8.3 สำหรับไดเร็กทอรีและเอกสารอื่น ๆ การดาวน์โหลดจะดำเนินการตามหลักการเดียวกัน แต่มีความแตกต่างบางประการที่ผู้ใช้สามารถทราบได้ด้วยตนเอง ควรสังเกตว่าขั้นตอนอาจแตกต่างกันสำหรับตัวโหลดบุคคลที่สามที่แตกต่างกัน แต่วิธีการทั่วไปยังคงเหมือนเดิมสำหรับทุกคน: ขั้นแรก ตัวประมวลผลจะโหลดข้อมูลจากไฟล์ลงในหน้าต่างที่แก้ไข จากนั้นจึงเพิ่มเท่านั้น โดยตรงไปยังฐานข้อมูล 1C

วิธีนี้ง่าย สาระสำคัญของมันคือวัตถุ เอกสารแบบตารางมีวิธีการ:

  • เขียนลงไป (< ИмяФайла>, < ТипФайлаТаблицы >) เพื่ออัปโหลดข้อมูลไปยังไฟล์
  • อ่าน (< ИмяФайла>, < СпособЧтенияЗначений >) เพื่อโหลดข้อมูลจากไฟล์

ความสนใจ!

วิธีการ Write() สามารถใช้ได้ทั้งบนไคลเอนต์และเซิร์ฟเวอร์ วิธีการ Read() ใช้ได้เฉพาะบนฝั่งเซิร์ฟเวอร์เท่านั้น จำเป็นต้องจำสิ่งนี้
เมื่อวางแผนการโต้ตอบระหว่างไคลเอนต์และเซิร์ฟเวอร์

ลองดูตัวอย่างการบันทึกเอกสารสเปรดชีตเป็นไฟล์ จำเป็นต้องสร้างและเติมวัตถุ TabularDocument แต่อย่างใดและ ขนถ่ายไปยังไฟล์ทำได้เพียงบรรทัดเดียว:

แท็บด็อก - เขียน (FilePath, TabularDocumentFileType. XLSX);

ที่นี่ แท็บด็อก- ก่อตัว เอกสารสเปรดชีต, PathToFile— ชื่อไฟล์ที่จะอัพโหลด TabularDocumentFileType.XLSX— รูปแบบของไฟล์ที่สร้างขึ้น รองรับรูปแบบ Excel ต่อไปนี้:

  • XLS95— รูปแบบ Excel 95;
  • XLS97 - รูปแบบ Excel 97;
  • XLSX เป็นรูปแบบ Excel 2007

TabDoc = TabularDocument ใหม่;
แท็บด็อก - อ่าน (PathToFile วิธีการ ReadingTabularDocumentValues.Value);

ที่นี่ PathToFile— เส้นทางไปยังไฟล์ Excel ที่ดาวน์โหลด วิธีการอ่านค่าเอกสารตารางค่ากำหนดวิธีการตีความข้อมูลที่อ่านจากเอกสารต้นฉบับ ตัวเลือกที่มี:

  • ความหมาย;
  • ข้อความ.

แลกเปลี่ยนผ่าน OLE

การแลกเปลี่ยนผ่านเทคโนโลยีอัตโนมัติของ OLE อาจเป็นตัวเลือกที่พบบ่อยที่สุดสำหรับงานซอฟต์แวร์ ไฟล์ Excel- ช่วยให้คุณสามารถใช้ฟังก์ชันการทำงานทั้งหมดของ Excel ได้ แต่จะช้ากว่าเมื่อเปรียบเทียบกับวิธีอื่น หากต้องการแลกเปลี่ยนผ่าน OLE จำเป็นต้องติดตั้ง MS Excel:

  • บนคอมพิวเตอร์ของผู้ใช้ หากมีการแลกเปลี่ยนเกิดขึ้นในฝั่งไคลเอ็นต์
  • บนคอมพิวเตอร์เซิร์ฟเวอร์ 1C:Enterprise หากมีการแลกเปลี่ยนเกิดขึ้นทางฝั่งเซิร์ฟเวอร์

ตัวอย่าง ขนถ่าย:

// สร้างวัตถุ COM
Excel = COMObject ใหม่ ("Excel.Application");
// ปิดการใช้งานคำเตือนและคำถาม
เอ็กเซล - DisplayAlerts = เท็จ;
// สร้างหนังสือเล่มใหม่
หนังสือ = เอ็กเซล หนังสืองาน. เพิ่ม();
// ตำแหน่งบนแผ่นงานแรก
แผ่น = หนังสือ ใบงาน(1);

// เขียนค่าลงในเซลล์
แผ่น - เซลล์ (RowNumber, ColumnNumber) ค่า = ค่าเซลล์;

//บันทึกไฟล์
หนังสือ - บันทึกเป็น(ชื่อไฟล์);


เอ็กเซล - ล้มเลิก();
เอ็กเซล = 0;

ตัวอย่าง การอ่าน:

// —— ตัวเลือก 1 ——

// สร้างวัตถุ COM
Excel = COMObject ใหม่ ("Excel.Application");
//เปิดหนังสือ
หนังสือ = เอ็กเซล สมุดงาน เปิด( PathKFile);

แผ่น = หนังสือ ใบงาน(1);

//ปิดหนังสือ.
หนังสือ - ปิด(0);

// ปิด Excel และเพิ่มหน่วยความจำ
เอ็กเซล - ล้มเลิก();
เอ็กเซล = 0;

// —— ตัวเลือก 2 ——

//เปิดหนังสือ
หนังสือ = GetCOMObject( PathKFile);
// วางตำแหน่งบนแผ่นงานที่ต้องการ
แผ่น = หนังสือ ใบงาน(1);

// อ่านค่าของเซลล์ โดยปกติแล้วลูปการข้ามเซลล์จะอยู่ที่นี่
CellValue = แผ่นงาน เซลล์ (RowNumber, ColumnNumber) ค่า;

//ปิดหนังสือ.
หนังสือ - แอปพลิเคชัน. ควิเสื้อ();

สำหรับ บายพาสสำหรับแถวที่เสร็จสมบูรณ์ทั้งหมดของแผ่นงาน Excel คุณสามารถใช้เทคนิคต่อไปนี้:

// —— ตัวเลือก 1 ——
จำนวนแถว = แผ่นงาน เซลล์(1 , 1 ) เซลล์พิเศษ(11) แถว;
สำหรับ RowNumber = 1 ตามจำนวนแถว
CellValue = แผ่นงาน เซลล์ (RowNumber, ColumnNumber) ค่า;
สิ้นสุดรอบ;

// —— ตัวเลือก 2 ——
หมายเลขแถว = 0 ;
ในขณะที่วงจรความจริง
RowNumber = RowNumber + 1 ;
CellValue = แผ่นงาน เซลล์ (RowNumber, ColumnNumber) ค่า;
ถ้าไม่ใช่ ValueFilled(CellValue) แล้ว
ยกเลิก;
สิ้นสุดถ้า;
สิ้นสุดรอบ;

แทนที่จะข้ามแถวทั้งหมดของแผ่นงานตามลำดับ คุณสามารถทำได้ ดัมพ์ข้อมูลทั้งหมดลงในอาร์เรย์และทำงานร่วมกับเขา วิธีนี้จะเร็วขึ้นเมื่ออ่านข้อมูลจำนวนมาก:

TotalColumns = แผ่นงาน เซลล์(1 , 1 ) เซลล์พิเศษ(11) คอลัมน์;
TotalRows = ใบไม้ เซลล์(1 , 1 ) เซลล์พิเศษ(11) แถว;

ภูมิภาค = ใบไม้ ช่วง (Sheet. Cells (1, 1), Sheet. Cells (TotalRows, TotalColumns));
ข้อมูล = ภูมิภาค ค่า. ยกเลิกการโหลด();

ตารางด้านล่างแสดงคุณสมบัติและวิธีการทำงานกับ Excel ผ่าน OLE ที่ได้รับความนิยมสูงสุด:

การกระทำ รหัส ความคิดเห็น
ทำงานกับแอปพลิเคชัน
การตั้งค่าการมองเห็นหน้าต่างแอปพลิเคชัน เอ็กเซล - มองเห็นได้= เท็จ;
การตั้งค่าโหมดเอาท์พุตการเตือน (แสดง/ไม่แสดง) เอ็กเซล - การแจ้งเตือนแบบดิสเพลย์= เท็จ;
ปิดรับสมัคร เอ็กเซล - ล้มเลิก();
ทำงานกับหนังสือ
การสร้างหนังสือเล่มใหม่ หนังสือ = เอ็กเซล หนังสืองาน. เพิ่ม();
การเปิดสมุดงานที่มีอยู่ หนังสือ = เอ็กเซล หนังสืองาน. เปิด(ชื่อไฟล์);
กำลังบันทึกหนังสือ หนังสือ - บันทึกเป็น(FileName);
ปิดหนังสือ หนังสือ - ปิด(0);
ทำงานกับแผ่นงาน
การตั้งค่าแผ่นงานปัจจุบัน แผ่น = หนังสือ แผ่นงาน(SheetNumber);
การตั้งชื่อ แผ่น - ชื่อ=ชื่อ;
การตั้งค่าการป้องกัน แผ่น - ปกป้อง();
การถอดการป้องกัน แผ่น - ยกเลิกการป้องกัน();
การตั้งค่าการวางแนวหน้า แผ่น - การตั้งค่าเพจ การวางแนว = 2; 1 - แนวตั้ง, 2 - แนวนอน
การตั้งค่าขอบด้านซ้าย แผ่น - การตั้งค่าหน้า ขอบซ้าย = Excel เซนติเมตรถึงจุด(Centimeters);
การตั้งค่าขีดจำกัดบน แผ่น - การตั้งค่าเพจ อัตรากำไรขั้นต้น = Excel เซนติเมตรถึงจุด(Centimeters);
การตั้งค่าเส้นขอบด้านขวา แผ่น - การตั้งค่าหน้า ขอบขวา = Excel เซนติเมตรถึงจุด(Centimeters);
การตั้งค่าขีดจำกัดล่าง แผ่น - การตั้งค่าเพจ ขอบล่าง = Excel เซนติเมตรถึงจุด(Centimeters);
การทำงานกับแถว คอลัมน์ เซลล์
การตั้งค่าความกว้างของคอลัมน์ แผ่น - คอลัมน์(ColumnNumber) ความกว้างของคอลัมน์ = ความกว้าง;
ลบบรรทัด แผ่น - แถว(RowNumber) ลบ();
การลบคอลัมน์ แผ่น - คอลัมน์(ColumnNumber) ลบ();
ลบเซลล์ แผ่น - เซลล์ (RowNumber, ColumnNumber) ลบ();
การตั้งค่า แผ่น - เซลล์ (RowNumber, ColumnNumber) ความคุ้มค่า = ความคุ้มค่า;
การรวมเซลล์ แผ่น - ช่วง(Sheet. Cells(RowNumber, ColumnNumber), Sheet.Cells(RowNumber1, ColumnNumber1)) ผสาน();
การตั้งค่าแบบอักษร แผ่น - เซลล์ (RowNumber, ColumnNumber) แบบอักษร ชื่อ = ชื่อแบบอักษร;
การตั้งค่าขนาดตัวอักษร แผ่น - เซลล์ (RowNumber, ColumnNumber) แบบอักษร ขนาด = ขนาดตัวอักษร;
การตั้งค่าตัวอักษรตัวหนา แผ่น - เซลล์ (RowNumber, ColumnNumber) แบบอักษร ตัวหนา = 1 ; 1 - ตัวหนา 0 - ปกติ
การตั้งค่าตัวเอียง แผ่น - เซลล์ (RowNumber, ColumnNumber) แบบอักษร ตัวเอียง = 1 ; 1 - ตัวเอียง 0 - ปกติ
การตั้งค่าแบบอักษรที่ขีดเส้นใต้ แผ่น - เซลล์ (RowNumber, ColumnNumber) แบบอักษร ขีดเส้นใต้ = 2 ; 2 - ขีดเส้นใต้, 1 - ไม่ใช่

คุณสามารถใช้เพื่อค้นหาว่าคุณสมบัติใดจำเป็นต้องเปลี่ยนแปลงหรือวิธีใดที่จะเรียก มาโครเอ็กเซล หากคุณบันทึกแมโครด้วยการดำเนินการที่จำเป็น คุณจะสามารถดูโค้ด VBA ของมาโครที่บันทึกไว้ได้

การใช้ COMSafeArray

เมื่อดาวน์โหลดข้อมูลจำนวนมากจาก 1C ไปยัง Excel คุณสามารถใช้วัตถุเพื่อเพิ่มความเร็วได้ COMSafeArray- ตามคำจำกัดความจากผู้ช่วยไวยากรณ์ COMSafeArray เป็นตัวตัดคำอ็อบเจ็กต์ อาร์เรย์หลายมิติ SafeArrayจากคอม. ช่วยให้คุณสร้างและใช้ SafeArray เพื่อแลกเปลี่ยนข้อมูลระหว่างออบเจ็กต์ COM พูดง่ายๆ ก็คืออาร์เรย์ของค่าที่สามารถใช้เพื่อแลกเปลี่ยนระหว่างแอปพลิเคชันที่ใช้เทคโนโลยี OLE

// สร้าง COMSafeArray
ArrayCom = COMSafeArray ใหม่ ("VT_Variant" , TotalColumns, TotalRows);
// กรอก COMSafeArray
สำหรับ หน้า = 0 โดย TotalLines - 1 รอบ
สำหรับ จำนวน = 0 คอลัมน์ทั้งหมด - 1 รอบ
อาร์เรย์คอม - SetValue(นับ หน้า ค่า);
สิ้นสุดรอบ;
สิ้นสุดรอบ;
// การกำหนดให้กับพื้นที่แผ่นงาน ค่า Excelจาก COMSafeArray
แผ่น - ช่วง(Sheet. Cells(1, 1), Sheet. Cells(TotalRows,TotalColumns)) ค่า = ArrayCom;

แลกเปลี่ยนผ่าน ADO

ไฟล์ Excel เมื่อแลกเปลี่ยนผ่าน ADO จะเป็นฐานข้อมูลที่สามารถเข้าถึงได้โดยใช้คำสั่ง SQL ไม่จำเป็นต้องติดตั้ง MS Excel แต่จำเป็นต้องมีไดรเวอร์ ODBC ซึ่งจะดำเนินการเข้าถึงได้ โปรแกรมควบคุม ODBC ที่ใช้ถูกกำหนดโดยการระบุสตริงการเชื่อมต่อกับไฟล์ โดยทั่วไปแล้ว ไดรเวอร์ที่จำเป็นได้รับการติดตั้งบนคอมพิวเตอร์แล้ว

การแลกเปลี่ยนผ่าน ADO นั้นเร็วกว่าการแลกเปลี่ยนผ่าน OLE อย่างเห็นได้ชัด แต่เมื่ออัปโหลด คุณจะไม่สามารถใช้ฟังก์ชัน Excel สำหรับการออกแบบเซลล์ การจัดวางหน้า การตั้งค่าสูตร ฯลฯ

ตัวอย่าง ขนถ่าย:


การเชื่อมต่อ = COMObject ใหม่ ("ADODB.Connection");


สารประกอบ - สตริงการเชื่อมต่อ = "

|แหล่งข้อมูล=" + ชื่อไฟล์ + ";
;
สารประกอบ - เปิด(); // เปิดการเชื่อมต่อ

// สร้างวัตถุ COM สำหรับคำสั่ง
Command = COMObject ใหม่ ("ADODB.Command");
ทีม

// กำหนดข้อความคำสั่งเพื่อสร้างตาราง
ทีม - ข้อความคำสั่ง = "สร้างตาราง [Sheet1] (Column1 char (255), วันที่ Column2, Column3 int, Column4 float)";
ทีม - ดำเนินการ(); //ดำเนินการคำสั่ง

// กำหนดข้อความคำสั่งเพื่อเพิ่มแถวของตาราง
ทีม - ข้อความคำสั่ง = "INSERT INTO [Sheet1] (Column1, Column2, Column3, Column4) ค่า ('abvwhere', '8/11/2017', '12345', '12345,6789')";
Command.ดำเนินการ(); //ดำเนินการคำสั่ง

// ลบคำสั่งและปิดการเชื่อมต่อ
คำสั่ง = ไม่ได้กำหนด;
สารประกอบ - ปิด();
การเชื่อมต่อ = ไม่ได้กำหนด;

หากต้องการสร้างแผ่นงานใหม่และสร้างโครงสร้างคุณสามารถใช้วัตถุได้ ADOX.แค็ตตาล็อกและ ADOX.ตาราง- ในกรณีนี้โค้ดจะมีลักษณะดังนี้:

// การสร้างวัตถุ COM เพื่อทำงานกับหนังสือ
หนังสือ = COMObject ใหม่ ("ADOX.Catalog");
หนังสือ - ActiveConnection = การเชื่อมต่อ;

// สร้างวัตถุ COM เพื่อทำงานกับโครงสร้างข้อมูลบนแผ่นงาน
ตาราง = COMObject ใหม่ ("ADOX.Table");
โต๊ะ - ชื่อ = "แผ่นงาน1" ;
โต๊ะ - คอลัมน์ ผนวก("Column1", 202);
โต๊ะ - คอลัมน์ ผนวก("Column2", 7);
โต๊ะ - คอลัมน์ ผนวก("Column3", 5);
โต๊ะ - คอลัมน์ ผนวก("Column4", 5);

// สร้างแผ่นงานในสมุดงานด้วยโครงสร้างที่อธิบายไว้
หนังสือ - ตาราง ผนวก(ตาราง);
ตาราง = ไม่ได้กำหนด;
หนังสือ = ไม่ได้กำหนด;

ในตัวอย่างข้างต้นในวิธีการ

โต๊ะ - คอลัมน์ ผนวก(“คอลัมน์ 1”, 202);

พารามิเตอร์ตัวที่สองระบุประเภทคอลัมน์ พารามิเตอร์นี้เป็นทางเลือก ต่อไปนี้เป็นค่าประเภทคอลัมน์บางส่วน:

  • 5 - adDouble;
  • 6 - สกุลเงินโฆษณา;
  • 7 - วันที่โฆษณา;
  • 11 - แอดบูลีน;
  • 202 - adVarWChar;
  • 203 - adLongVarWChar.

ตัวอย่าง การอ่าน:

// สร้างวัตถุ COM สำหรับการเชื่อมต่อ
การเชื่อมต่อ = COMObject ใหม่ ("ADODB.Connection");

// ตั้งค่าสตริงการเชื่อมต่อ
สารประกอบ - สตริงการเชื่อมต่อ = "
|ผู้ให้บริการ=Microsoft.ACE.OLEDB.12.0;
|แหล่งข้อมูล=" + ชื่อไฟล์ + ";
|คุณสมบัติขยาย=""Excel 12.0 XML;HDR=YES"";";
สารประกอบ - เปิด(); // เปิดการเชื่อมต่อ

// สร้างวัตถุ COM เพื่อรับการเลือก
เลือก = COMObject ใหม่ ("ADODB.Recordset");
ข้อความขอ = "เลือก * จาก [Sheet1$]";

// ดำเนินการตามคำขอ
ตัวอย่าง - เปิด (ข้อความค้นหา, การเชื่อมต่อ);

// ข้ามผลลัพธ์ตัวอย่าง
ยังไม่ได้เลือกเลย EOF() วนซ้ำ
ค่า Column1 = การเลือก เขตข้อมูล รายการ("คอลัมน์1"). ค่า ; // เข้าถึงด้วยชื่อคอลัมน์
Column2Value = การเลือก เขตข้อมูล รายการ(0) ค่า; // เข้าถึงโดยดัชนีคอลัมน์
ตัวอย่าง - ย้ายถัดไป();
สิ้นสุดรอบ;

ตัวอย่าง - ปิด();
ตัวอย่าง = ไม่ได้กำหนด;
สารประกอบ - ปิด();
การเชื่อมต่อ = ไม่ได้กำหนด;

ในสตริงการเชื่อมต่อพารามิเตอร์ เอชดีอาร์กำหนดว่าบรรทัดแรกบนแผ่นงานจะถูกรับรู้อย่างไร ตัวเลือกที่เป็นไปได้:

  • ใช่ - บรรทัดแรกจะถือเป็นชื่อคอลัมน์ สามารถเข้าถึงค่าได้ด้วยชื่อและดัชนีคอลัมน์
  • NO - บรรทัดแรกถือเป็นข้อมูล สามารถเข้าถึงค่าได้โดยดัชนีคอลัมน์เท่านั้น

ตัวอย่างเหล่านี้ครอบคลุมเฉพาะวัตถุ ADO บางส่วนเท่านั้น โมเดลวัตถุ ADO ประกอบด้วยวัตถุต่อไปนี้:

  • การเชื่อมต่อ;
  • สั่งการ;
  • ชุดบันทึก;
  • บันทึก;
  • ทุ่งนา;
  • ลำธาร;
  • ข้อผิดพลาด;
  • พารามิเตอร์;
  • คุณสมบัติ.

อัปโหลดโดยไม่ต้องเขียนโปรแกรม

หากต้องการบันทึกข้อมูลจาก 1C ไปยัง Excel ไม่แนะนำให้ใช้การเขียนโปรแกรมเสมอไป หากในโหมดองค์กร ผู้ใช้สามารถแสดงข้อมูลที่จำเป็นสำหรับการดาวน์โหลด ก็สามารถบันทึกลงใน Excel ได้โดยไม่ต้องเขียนโปรแกรม

หากต้องการบันทึกเอกสารสเปรดชีต (เช่น ผลลัพธ์ของรายงาน) คุณสามารถเรียกใช้คำสั่งได้ บันทึกหรือ บันทึกเป็น...เมนูหลัก

ในหน้าต่างที่เปิดขึ้นมา คุณจะต้องเลือกไดเร็กทอรี ชื่อ และรูปแบบของไฟล์ที่บันทึกไว้

เพื่อบันทึกข้อมูล รายการแบบไดนามิก(เช่น รายการสินค้า) คุณต้อง:

  1. ส่งออกข้อมูลลงในเอกสารสเปรดชีตโดยใช้คำสั่ง เพิ่มเติม ⇒ รายการ...;
  2. บันทึกเอกสารสเปรดชีตในรูปแบบที่ต้องการ



2024 wisemotors.ru. วิธีนี้ทำงานอย่างไร. เหล็ก. การทำเหมืองแร่ สกุลเงินดิจิทัล