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