2026年10月19日 星期一

[研究]有 VBA 的 .xlsx 上傳 成為 Google 試算表後,會變成 GAS ? 還可以跑 ?

[研究]有 VBA 的 .xlsx 上傳 成為 Google 試算表後,會變成 GAS ? 還可以跑 ? 

2026-10-19

可以,但要注意一個關鍵觀念:Excel 的 VBA 不會因為把 .xlsx 上傳到 Google 雲端硬碟、再轉換成 Google 試算表,就自動變成 GAS(Google Apps Script)。

Excel VBA 與 Google Apps Script 是兩種不同的程式語言與執行環境。不過,您可以將 VBA 的功能改寫成 GAS,讓它在 Google 試算表中繼續執行。

一、Excel VBA 上傳 Google 試算表後會怎樣?

項目

Excel .xlsx / .xlsm

Google 試算表

主要程式語言

VBA

Google Apps Script(JavaScript)

原有 VBA 程式碼

.xlsm 可保存 VBA;.xlsx 不支援保存 VBA 專案

不會自動轉換成 GAS

一般儲存格公式

大部分可保留,部分函數可能有差異

轉換後需檢查相容性

工作表、格式、資料

通常可以匯入

可能需要檢查格式與功能差異

按鈕與巨集

可能無法正常運作

通常需要重新建立操作介面及 GAS

自動執行 VBA

只能在支援 VBA 的 Excel 環境執行

不能直接執行 VBA

改寫後的 GAS

不適用

可以在 Google 試算表中執行

特別注意:如果您的原始檔是 .xlsx,它本身通常就沒有儲存 VBA 專案;如果實際上有 VBA 巨集,原始檔通常是 .xlsm。

二、VBA 與 GAS 的轉換概念

例如,您在 Excel VBA 裡寫了以下程式:

Sub HelloWorld()
    Range("A1").Value = "Hello World"
End Sub

這段程式會將 Excel 工作表的 A1 儲存格填入 Hello World。

改寫成 GAS 後:

function helloWorld() {
  const sheet = SpreadsheetApp
    .getActiveSpreadsheet()
    .getActiveSheet();

  sheet.getRange("A1").setValue("Hello World");
}

功能相同,但程式碼並不相同。

(完)

沒有留言:

張貼留言