แก้ไขปัญหาทั่วไป

ปัญหาทั่วไปที่คุณอาจพบเมื่อแปลงโค้ด 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 ไว้ในโฟลเดอร์ ไดรฟ์ของฉัน

รายการที่ไม่ได้แปลง

ตัวแปลงมาโครจะไม่แปลงฟีเจอร์ต่อไปนี้ และคุณจะต้องแปลงด้วยตนเอง

ทริกเกอร์

ตัวแปลงมาโครจะไม่แปลงทริกเกอร์ 2 ประเภท ได้แก่ แป้นพิมพ์ลัดและทริกเกอร์บางรายการที่อิงตามเหตุการณ์ ในหลายกรณี คุณสามารถสร้างทริกเกอร์เหล่านี้ด้วยตนเองได้

แป้นพิมพ์ลัด

หากต้องการเพิ่มแป้นพิมพ์ลัด ให้ทำตามขั้นตอนเพื่อนำเข้าฟังก์ชันเป็น มาโคร

ทริกเกอร์ตามเหตุการณ์

เหตุการณ์บางอย่างจากโค้ด VBA เช่น BeforeClose หรือ BeforeSave ไม่มีเหตุการณ์ที่เทียบเท่าใน Apps Script แต่คุณอาจสร้างวิธีแก้ปัญหาได้

สำหรับเหตุการณ์ต่างๆ เช่น BeforeClose คุณสามารถสร้างเมนูหรือปุ่มที่กำหนดเองเพื่อคลิก เพื่อดำเนินการที่ต้องทำก่อนปิดสเปรดชีต

เนื่องจาก Google ชีตจะบันทึกการแก้ไขแต่ละครั้งโดยอัตโนมัติ จึงไม่สามารถใช้ทางอ้อมสำหรับเหตุการณ์ต่างๆ เช่น BeforeSave

Userforms

ใน VBA UserForm คือหน้าต่างหรือกล่องโต้ตอบในอินเทอร์เฟซผู้ใช้ (UI) ของแอปพลิเคชัน Macro Converter ไม่แปลง UserForm คุณสร้างด้วยตนเองได้ใน Apps Script

สร้างกล่องโต้ตอบแบบฟอร์มผู้ใช้

  1. เปิดไฟล์ที่แปลงแล้วใน Google ชีตในคอมพิวเตอร์
  2. ที่ด้านบน ให้คลิกส่วนขยาย > ** Apps Script**
  3. ที่ด้านซ้ายของเอดิเตอร์ข้าง "ไฟล์" ให้คลิกเพิ่มไฟล์ > HTML เราขอแนะนำให้คุณตั้งชื่อไฟล์ HTML ให้เหมือนกับ UserForm VBA ต้นฉบับ
  4. เพิ่มช่องและข้อมูลที่ต้องการให้ปรากฏในแบบฟอร์ม ดูข้อมูลเพิ่มเติม เกี่ยวกับแบบฟอร์ม HTML ได้ที่ W3school.com
  5. ทางด้านซ้าย ให้คลิกไฟล์ Apps Script (ไฟล์ GS) ที่มีโค้ดที่แปลงแล้ว
  6. หากมี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);
    }
        
  7. แทนที่ userform_module_name ด้วยชื่อไฟล์ HTML ที่คุณเพิ่ม
  8. คลิกบันทึกโปรเจ็กต์ ที่ด้านบน
  9. เปลี่ยนไปใช้ Google ชีตแล้วโหลดหน้าเว็บซ้ำ
  10. ที่ด้านบนของ Google ชีต ให้คลิกแบบฟอร์มผู้ใช้ > แสดงแบบฟอร์ม

ช่วงที่ตั้งชื่อแล้ว

ใน Excel ช่วงที่ตั้งชื่อแล้วคือชื่อที่กำหนดให้กับเซลล์เดียวหรือช่วงของเซลล์

เมื่อแปลงไฟล์ Excel เป็น Google ชีต ระบบจะไม่แปลงช่วงที่มีชื่อบางประเภทเนื่องจากไม่รองรับ ตัวอย่าง 2 รายการมีดังนี้

ช่วงที่ตั้งชื่อแล้วที่ไม่รองรับคำอธิบาย
ตารางไม่รองรับใน Google ชีต แต่มีวิธีแก้ปัญหาชั่วคราว

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