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