【Excel函數113】CALL函數 早期呼叫外部 DLL使用,現在被拋棄停用的舊函數

更新 發佈閱讀 7 分鐘

在 Excel 中,CALL 函數屬於早期的 XLM 宏語言,用於直接呼叫外部 DLL(動態連結程式庫)中的函數。由於安全性與相容性問題,CALL 函數在現代 Excel 中已預設停用,且不支援 64 位元環境。若需呼叫 DLL,應改用 VBA 的 Declare 語法。

🔹快速摘要(語法、用途、常見場景)

  • 用途:呼叫外部 DLL 中的函數(僅限 XLM 宏語言)
  • 語法=CALL("Library","Function","TypeText",Argument1,Argument2,...)
  • 常見場景:舊版 Excel 的系統整合、API 呼叫、硬體控制(現已不建議使用)

一、CALL 函數語法與用途

語法:

=CALL("Library","Function","TypeText",Arg1,Arg2,...)
  • "Library":DLL 檔案名稱(例如 "user32")
  • "Function":DLL 中的函數名稱(例如 "MessageBoxA")
  • "TypeText":參數與回傳值的型別定義(例如 "JJJC")
  • Arg1, Arg2,...:傳入的參數值

範例(不建議執行):

=CALL("user32","MessageBoxA","JJJC",0,"警告","標題",0)

此範例會呼叫 Windows API 顯示訊息框,但在現代 Excel 中通常會被阻擋。

二、範例教學:五個基礎 + 五個進階範例

🔸基礎範例

範例一:呼叫 Windows 訊息框(MessageBoxA)

=CALL("user32","MessageBoxA","JJJC",0,"Hello","Title",0)

範例二:呼叫自訂 DLL 中的函數

=CALL("mydll","MyFunction","JJ",100,200)

範例三:傳入字串參數

=CALL("user32","MessageBoxA","JJJC",0,"測試訊息","標題",0)

範例四:回傳整數結果

=CALL("kernel32","GetTickCount","J")

範例五:處理錯誤型別定義

=CALL("user32","MessageBoxA","JJJX",0,"錯誤","標題",0)

回傳 #VALUE! 或導致 Excel 異常。

🔸進階範例(僅供理解,不建議實作)

範例六:搭配 REGISTER 函數註冊 DLL 函數

=REGISTER("user32","MessageBoxA","JJJC","警告","標題",0)

範例七:搭配 XLM 宏語言建立自動化流程

=CALL("mydll","AutoProcess","JJJ",A1,B1,C1)

範例八:呼叫硬體控制 DLL(如 COM 埠)

=CALL("serial.dll","OpenPort","J",1)

範例九:處理多型別參數(整數 + 字串)

=CALL("mydll","SendCommand","JC",100,"CMD")

範例十:搭配 GET.CELL 擷取儲存格資訊後傳入 DLL

=CALL("mydll","ProcessCell","J",GET.CELL(1,A1))

三、常見問題解答(FAQ)

Q1:CALL 為什麼會被停用?

因為它可直接呼叫外部程式庫,可能造成安全風險或執行惡意程式碼。

Q2:CALL 可以在 VBA 中使用嗎?

不行,VBA 使用 Declare PtrSafe Function 搭配 Lib 來呼叫 DLL,不使用 CALL 函數。

Q3:CALL 是否支援 64 位元 Excel?

不支援,CALL 屬於 XLM 宏語言,與 64 位元環境不相容。

Q4:CALL 是否可用於一般函數設計?

不建議,現代 Excel 開發應使用 VBA 或 Office JavaScript API。

Q5:CALL 是否可在 Excel 365 使用?

預設為停用,需啟用 XLM 宏支援,且仍有安全風險。

四、注意事項與錯誤排除

  • CALL 函數屬於高風險函數,可能遭防毒軟體或 Excel 安全性機制阻擋
  • 若 DLL 或函數不存在,會回傳 #VALUE! 或導致 Excel 異常
  • 若型別定義錯誤,可能造成記憶體錯誤或系統崩潰
  • 若需進行 DLL 呼叫,請改用 VBA 的 Declare 語法
  • CALL 函數無法在 Excel Web 或 Mac 版本使用

五、延伸技巧與相關函數

若你有 DLL 整合或系統呼叫需求,以下是比 CALL 函數更安全、現代化的替代方案:

首先,VBA 的 Declare Function 語法是目前最推薦的方式。它能安全地呼叫 DLL 函數,支援 64 位元環境,並可明確定義參數型別與錯誤處理邏輯。這是 CALL 函數在 VBA 中的正式替代方案

其次,若你正在開發 Excel Online 或跨平台應用程式,Office JavaScript API 提供了更現代化的整合方式。它支援網頁端執行,並能與 Excel、Outlook、Teams 等 Office 元件互動,適合雲端與企業級開發。

若你的目的是資料整合與轉換,Power Query(M 語言)是更合適的工具。它不需呼叫外部 DLL,就能完成複雜的資料清理、合併與轉換流程,並支援多種資料來源。

最後,若你想在 Excel 中建立自訂邏輯或批次處理,Lambda 函數與 MAP 函數是現代 Excel 的首選。它們能在儲存格中建立可重複使用的邏輯,並批次處理整欄資料,完全不需依賴外部程式庫。

這些工具不僅更安全,也更符合現代 Excel 的設計理念,建議全面取代 CALL 函數的使用。

六、結語與延伸閱讀推薦

CALL 函數是 Excel 中極少數可直接呼叫外部程式庫的函數,但因安全性與相容性問題,已不建議使用。若你有 DLL 整合需求,請改用 VBA 的 Declare Function 或探索 Office JavaScript API。

延伸閱讀:

  • [Declare Function 教學]:VBA 呼叫 DLL 的安全做法
  • [Excel Lambda 函數教學]:現代自訂邏輯設計工具
  • [Power Query 教學]:資料整合與轉換的首選工具
留言
avatar-img
留言分享你的想法!
avatar-img
蝦仁藥師_臨床輕鬆學的沙龍
42會員
314內容數
哈囉~!這裡主要在分享醫療知識,還有記錄下學習程式語言的各種筆記,偶爾穿插一些個人的淺見與有趣分享,希望大家都可以在這邊得到有用的資訊~!
2025/10/31
在日常資料處理中,統計數量、加總金額、計算平均值等動作常常重複進行。若能透過 VBA 一鍵完成統計並產出摘要,不僅節省時間,也能避免公式錯誤與人工疏漏。本文將教你如何建立一個「一鍵統計」功能,自動計算指定欄位的統計值並輸出至摘要區塊。
Thumbnail
2025/10/31
在日常資料處理中,統計數量、加總金額、計算平均值等動作常常重複進行。若能透過 VBA 一鍵完成統計並產出摘要,不僅節省時間,也能避免公式錯誤與人工疏漏。本文將教你如何建立一個「一鍵統計」功能,自動計算指定欄位的統計值並輸出至摘要區塊。
Thumbnail
2025/10/30
在 Excel 中處理日期資料時,若需建立年度分類、計算年差或進行報表統計,YEAR 函數能從日期值中擷取「年份」的部分(四位數整數),是日期拆解與年度邏輯判斷的常用工具。 用途:從日期中擷取「年份」的整數值(如 2025) 語法:=YEAR(日期值),年份會傳回成1900-9999內的整數
Thumbnail
2025/10/30
在 Excel 中處理日期資料時,若需建立年度分類、計算年差或進行報表統計,YEAR 函數能從日期值中擷取「年份」的部分(四位數整數),是日期拆解與年度邏輯判斷的常用工具。 用途:從日期中擷取「年份」的整數值(如 2025) 語法:=YEAR(日期值),年份會傳回成1900-9999內的整數
Thumbnail
2025/10/30
在 Excel 中處理工期推算、到期日計算或跨國排程時,WORKDAY.INTL 函數能根據起始日期與工作日天數,排除自訂的週末與假日後回傳目標日期。它是 WORKDAY 函數的進階版本,支援非標準工時與多國假期設定,適合用於行政報表、人事考勤與專案管理。
Thumbnail
2025/10/30
在 Excel 中處理工期推算、到期日計算或跨國排程時,WORKDAY.INTL 函數能根據起始日期與工作日天數,排除自訂的週末與假日後回傳目標日期。它是 WORKDAY 函數的進階版本,支援非標準工時與多國假期設定,適合用於行政報表、人事考勤與專案管理。
Thumbnail
看更多
你可能也想看
Thumbnail
這篇內容,將會講解什麼是函式,以及與函式相關的知識。包括函式的簡介、Runtime Function、自訂函式、Script Function 腳本函式、Method 方法。
Thumbnail
這篇內容,將會講解什麼是函式,以及與函式相關的知識。包括函式的簡介、Runtime Function、自訂函式、Script Function 腳本函式、Method 方法。
Thumbnail
在這篇教學中,我們將介紹如何使用 Excel VBA 來發送訊息到 LINE Notify。LINE Notify 是 LINE 提供的服務,可以透過 API 發送訊息到 LINE 上。這篇教學將帶你步驟一步完成設置。
Thumbnail
在這篇教學中,我們將介紹如何使用 Excel VBA 來發送訊息到 LINE Notify。LINE Notify 是 LINE 提供的服務,可以透過 API 發送訊息到 LINE 上。這篇教學將帶你步驟一步完成設置。
Thumbnail
本法省去開啟EXCEL檔,轉存為CSV檔之手動作業,縮短作業時間,提高工作效率,尤其是對象為複數個檔案場合
Thumbnail
本法省去開啟EXCEL檔,轉存為CSV檔之手動作業,縮短作業時間,提高工作效率,尤其是對象為複數個檔案場合
Thumbnail
🎗️本次主題成果展示:人力資訊分析 上集回顧 🔗EXCEL儀表板 | 人力資訊分析儀表板 #1 | 上手等級:入門🔗 🔗EXCEL儀表板 | 人力資訊分析儀表板 #2 | 上手等級:入門🔗 🔗EXCEL儀表板 | 人力資訊分析儀表板 #3 | 上手等級:入門🔗 🔗E
Thumbnail
🎗️本次主題成果展示:人力資訊分析 上集回顧 🔗EXCEL儀表板 | 人力資訊分析儀表板 #1 | 上手等級:入門🔗 🔗EXCEL儀表板 | 人力資訊分析儀表板 #2 | 上手等級:入門🔗 🔗EXCEL儀表板 | 人力資訊分析儀表板 #3 | 上手等級:入門🔗 🔗E
Thumbnail
🎗️本次主題成果展示:人力資訊分析 上集回顧 🔗EXCEL儀表板 | 人力資訊分析儀表板 #1 | 上手等級:入門🔗 🔗EXCEL儀表板 | 人力資訊分析儀表板 #2 | 上手等級:入門🔗 🔗EXCEL儀表板 | 人力資訊分析儀表板 #3 | 上手等級:入門🔗
Thumbnail
🎗️本次主題成果展示:人力資訊分析 上集回顧 🔗EXCEL儀表板 | 人力資訊分析儀表板 #1 | 上手等級:入門🔗 🔗EXCEL儀表板 | 人力資訊分析儀表板 #2 | 上手等級:入門🔗 🔗EXCEL儀表板 | 人力資訊分析儀表板 #3 | 上手等級:入門🔗
Thumbnail
Function的使用方式
Thumbnail
Function的使用方式
Thumbnail
EXCEL設計新思維,即日起新增了一個新的房間【EXCEL儀表板】,什麼是EXCEL儀表板呢? Excel 儀表板是一種視覺化工具,用於展示和分析數據,幫助用戶快速理解和決策。以下是Excel儀表板的主要特點和功能簡介: 特點 視覺化展示: 使用圖表、圖形和表格來直觀展示數據。 常見的圖
Thumbnail
EXCEL設計新思維,即日起新增了一個新的房間【EXCEL儀表板】,什麼是EXCEL儀表板呢? Excel 儀表板是一種視覺化工具,用於展示和分析數據,幫助用戶快速理解和決策。以下是Excel儀表板的主要特點和功能簡介: 特點 視覺化展示: 使用圖表、圖形和表格來直觀展示數據。 常見的圖
Thumbnail
在Excel中實作使用者介面(UI)是一個有趣且實用的技能,能夠幫助你更好地呈現資料、提供功能並增強使用者體驗。本文將逐步介紹如何在Excel中建立基本的UI元素,例如按鈕、下拉式選單和文字框,並擴展功能,例如資料驗證和動態更新。
Thumbnail
在Excel中實作使用者介面(UI)是一個有趣且實用的技能,能夠幫助你更好地呈現資料、提供功能並增強使用者體驗。本文將逐步介紹如何在Excel中建立基本的UI元素,例如按鈕、下拉式選單和文字框,並擴展功能,例如資料驗證和動態更新。
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News