ปัญหาทั่วไปที่คุณอาจพบเมื่อแปลงโค้ด VBA เป็น Apps Script ด้วยตัวแปลงมาโครมีดังนี้
การพิมพ์
ระบบจะแปลง VBA API ที่พิมพ์ไฟล์เป็น Apps Script โดยอัตโนมัติ แต่อาจทำงานแตกต่างจาก VBA API เดิม ตัวอย่าง 2 รายการมีดังนี้
VBA API | ลักษณะการทำงานใน Apps Script |
---|---|
PrintOut | แปลงเป็น Apps Script แต่ Apps Script API จะพิมพ์ลงในไฟล์แทนที่จะพิมพ์ไปยังเครื่องพิมพ์ คุณพิมพ์ไฟล์ PDF ด้วยตนเองได้ |
PrintToFile | แปลงเป็น Apps Script ระบบจะบันทึกไฟล์ PDF ไว้ในโฟลเดอร์ ไดรฟ์ของฉัน |
รายการที่ไม่ได้แปลง
ตัวแปลงมาโครจะไม่แปลงฟีเจอร์ต่อไปนี้ และคุณจะต้องแปลงด้วยตนเอง
- ทริกเกอร์บางประเภท
- Userforms
- ประเภทของช่วงที่มีชื่อที่ไม่รองรับ
ทริกเกอร์
ตัวแปลงมาโครจะไม่แปลงทริกเกอร์ 2 ประเภท ได้แก่ แป้นพิมพ์ลัดและทริกเกอร์บางรายการที่อิงตามเหตุการณ์ ในหลายกรณี คุณสามารถสร้างทริกเกอร์เหล่านี้ด้วยตนเองได้
แป้นพิมพ์ลัด
หากต้องการเพิ่มแป้นพิมพ์ลัด ให้ทำตามขั้นตอนเพื่อนำเข้าฟังก์ชันเป็น มาโคร
ทริกเกอร์ตามเหตุการณ์
เหตุการณ์บางอย่างจากโค้ด VBA เช่น BeforeClose
หรือ BeforeSave
ไม่มีเหตุการณ์ที่เทียบเท่าใน Apps Script แต่คุณอาจสร้างวิธีแก้ปัญหาได้
สำหรับเหตุการณ์ต่างๆ เช่น BeforeClose
คุณสามารถสร้างเมนูหรือปุ่มที่กำหนดเองเพื่อคลิก
เพื่อดำเนินการที่ต้องทำก่อนปิดสเปรดชีต
เนื่องจาก Google ชีตจะบันทึกการแก้ไขแต่ละครั้งโดยอัตโนมัติ จึงไม่สามารถใช้ทางอ้อมสำหรับเหตุการณ์ต่างๆ เช่น
BeforeSave
Userforms
ใน VBA UserForm คือหน้าต่างหรือกล่องโต้ตอบในอินเทอร์เฟซผู้ใช้ (UI) ของแอปพลิเคชัน Macro Converter ไม่แปลง UserForm คุณสร้างด้วยตนเองได้ใน Apps Script
สร้างกล่องโต้ตอบแบบฟอร์มผู้ใช้
- เปิดไฟล์ที่แปลงแล้วใน Google ชีตในคอมพิวเตอร์
- ที่ด้านบน ให้คลิกส่วนขยาย > ** Apps Script**
- ที่ด้านซ้ายของเอดิเตอร์ข้าง "ไฟล์" ให้คลิกเพิ่มไฟล์ > HTML เราขอแนะนำให้คุณตั้งชื่อไฟล์ HTML ให้เหมือนกับ UserForm VBA ต้นฉบับ
- เพิ่มช่องและข้อมูลที่ต้องการให้ปรากฏในแบบฟอร์ม ดูข้อมูลเพิ่มเติม เกี่ยวกับแบบฟอร์ม HTML ได้ที่ W3school.com
- ทางด้านซ้าย ให้คลิกไฟล์ Apps Script (ไฟล์ GS) ที่มีโค้ดที่แปลงแล้ว
- หากมี
onOpen()
ทริกเกอร์ในโค้ดอยู่แล้ว ให้อัปเดตด้วยโค้ดด้านล่าง หากไม่มีทริกเกอร์onOpen()
ในโค้ด ให้เพิ่มโค้ดด้านล่างfunction onOpen() { SpreadsheetApp.getUi() .createMenu('User Form') .addItem('Show Form', 'showForm') .addToUi(); } function showForm() { var html = HtmlService.createHtmlOutputFromFile('userform_module_name') .setWidth(100) .setTitle('Sign-up for Email Updates'); SpreadsheetApp.getUi().showSidebar(html); }
- แทนที่
userform_module_name
ด้วยชื่อไฟล์ HTML ที่คุณเพิ่ม - คลิกบันทึกโปรเจ็กต์ ที่ด้านบน
- เปลี่ยนไปใช้ Google ชีตแล้วโหลดหน้าเว็บซ้ำ
- ที่ด้านบนของ Google ชีต ให้คลิกแบบฟอร์มผู้ใช้ > แสดงแบบฟอร์ม
ช่วงที่ตั้งชื่อแล้ว
ใน Excel ช่วงที่ตั้งชื่อแล้วคือชื่อที่กำหนดให้กับเซลล์เดียวหรือช่วงของเซลล์
เมื่อแปลงไฟล์ Excel เป็น Google ชีต ระบบจะไม่แปลงช่วงที่มีชื่อบางประเภทเนื่องจากไม่รองรับ ตัวอย่าง 2 รายการมีดังนี้
ช่วงที่ตั้งชื่อแล้วที่ไม่รองรับ | คำอธิบาย |
---|---|
ตาราง | ไม่รองรับใน Google ชีต แต่มีวิธีแก้ปัญหาชั่วคราว
หากต้องการสร้างช่วงที่ตั้งชื่อนี้ขึ้นใหม่ในชีต ให้เพิ่มช่วงที่ตั้งชื่อซึ่งชี้ไปยัง รูปแบบ A1 ของช่วงตาราง ใช้ชื่อเดียวกับช่วงที่มีชื่อเดิม ในโค้ด VBA เพื่อให้โค้ดที่แปลงแล้วรู้จักช่วงดังกล่าว |
รายการช่วง | ไม่รองรับใน Google ชีต ไม่มีวิธีแก้ปัญหาชั่วคราว |
บทความที่เกี่ยวข้อง
- ภาพรวมของส่วนเสริม Macro Converter
- ตรวจสอบว่ามาโคร VBA เข้ากันได้หรือไม่
- แปลงมาโคร VBA เป็น Apps Script
- แก้ไขข้อผิดพลาดในโค้ดที่แปลงแล้ว
- ดูบทแนะนำเกี่ยวกับตัวแปลงมาโคร
- รายการ VBA API ที่เข้ากันได้