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

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

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

  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 ชีต ยังไม่มีวิธีแก้ปัญหา