คู่มือนี้แสดงปัญหาที่พบได้ทั่วไปซึ่งคุณอาจพบเมื่อแปลงโค้ด Visual Basic for Applications (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 ไว้ในโฟลเดอร์ MyDrive |
รายการที่ไม่ได้แปลง
ตัวแปลงมาโครจะไม่แปลงฟีเจอร์ต่อไปนี้ และคุณต้องแปลงด้วยตนเอง
- ทริกเกอร์บางประเภท
- Userforms
- ประเภทช่วงที่มีชื่อที่ไม่รองรับ
ทริกเกอร์
ตัวแปลงมาโครจะไม่แปลงทริกเกอร์ 2 ประเภท ได้แก่ แป้นพิมพ์ลัดและทริกเกอร์บางรายการที่อิงตามเหตุการณ์ ในหลายๆ กรณี คุณสามารถสร้างทริกเกอร์เหล่านี้ได้ด้วยตนเอง
แป้นพิมพ์ลัด
หากต้องการเพิ่มแป้นพิมพ์ลัด ให้ทำตามขั้นตอนเพื่อนำเข้าฟังก์ชันเป็น มาโคร
ทริกเกอร์ตามเหตุการณ์
เหตุการณ์บางอย่างจากโค้ด VBA เช่น BeforeClose หรือ BeforeSave ไม่มี
เหตุการณ์ที่เทียบเท่าใน Apps Script แต่คุณอาจสร้าง
วิธีแก้ปัญหาได้
สำหรับเหตุการณ์ต่างๆ เช่น BeforeClose คุณสามารถสร้างเมนูหรือปุ่มที่กำหนดเองเพื่อคลิก
เพื่อดำเนินการที่ต้องทำก่อนปิดสเปรดชีต
ไม่สามารถใช้ทางอ้อมสำหรับเหตุการณ์ BeforeSave ได้เนื่องจาก Google ชีตจะบันทึกการเปลี่ยนแปลงโดยอัตโนมัติขณะที่คุณทำการเปลี่ยนแปลง
Userforms
ใน VBA UserForm คือหน้าต่างหรือกล่องโต้ตอบในอินเทอร์เฟซผู้ใช้ (UI) ของแอปพลิเคชัน Macro Converter ไม่แปลง UserForm สร้างด้วยตนเองใน Apps Script
สร้างกล่องโต้ตอบแบบฟอร์มผู้ใช้
- เปิดไฟล์ที่แปลงแล้วในชีตในคอมพิวเตอร์
- ที่ด้านบน ให้คลิกส่วนขยาย > ** 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 เป็นชีต ระบบจะไม่แปลงช่วงที่ตั้งชื่อแล้วบางประเภท เนื่องจากไม่รองรับ ตารางต่อไปนี้แสดงตัวอย่างที่พบบ่อย
| ช่วงที่ตั้งชื่อแล้วที่ไม่รองรับ | คำอธิบาย |
|---|---|
| ตาราง | ไม่รองรับในชีต แต่มี
วิธีแก้ปัญหา
หากต้องการสร้างช่วงที่ตั้งชื่อแล้วนี้ขึ้นใหม่ในชีต ให้เพิ่มช่วงที่ตั้งชื่อแล้วซึ่งชี้ไปยัง สัญกรณ์ A1 ของช่วงตาราง ใช้ชื่อเดียวกับช่วงที่มีชื่อเดิม ในโค้ด VBA เพื่อให้โค้ดที่แปลงแล้วรู้จักช่วงดังกล่าว |
| รายการช่วง | ไม่รองรับในชีต ไม่มีวิธีแก้ปัญหาชั่วคราว |
บทความที่เกี่ยวข้อง
- ภาพรวมส่วนเสริม Macro Converter ของ Google Workspace
- ตรวจสอบว่ามาโคร VBA เข้ากันได้หรือไม่
- แปลงมาโคร VBA เป็น Apps Script
- แก้ไขข้อผิดพลาดในโค้ดที่แปลงแล้ว
- ดูบทแนะนำเกี่ยวกับตัวแปลงมาโคร
- รายการ VBA API ที่เข้ากันได้