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

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