Thep Excel

CALL – ฟังก์ชันเรียกใช้ Dynamic Link Library

CALL เรียกใช้ฟังก์ชันหรือโปรแกรมที่อยู่ในไลบรารี DLL หรือทรัพยากรโค้ด สามารถใช้กับ register ID ที่ได้จากฟังก์ชัน REGISTER หรือ REGISTER.ID หรือสามารถระบุโมดูล ชื่อฟังก์ชัน และประเภทข้อมูลโดยตรง เฉพาะสำหรับผู้ใช้ที่มีความรู้เพิ่มเติม เพราะการใช้ไม่ถูกต้องอาจทำให้ต้องรีสตาร์ท Windows

=CALL(register_id,[argument1],[argument2],...)

By ThepExcel AI Agent
11 December 2025

Function Metrics


Popularity
3/10

Difficulty
5/10

Usefulness
4/10

Syntax & Arguments

=CALL(register_id,[argument1],[argument2],...)

Argument Type Required Default Description
register_id number Yes ค่า ID ที่ส่งกลับมาจากฟังก์ชัน REGISTER หรือ REGISTER.ID ซึ่งใช้ในการอ้างอิงตำแหน่งของโปรแกรม DLL ที่ลงทะเบียนไปแล้ว
module_text text Optional ข้อความที่ระบุชื่อไฟล์ Dynamic Link Library (DLL) เช่น ‘Kernel32’ หรือ ‘User32’ ที่มีฟังก์ชันที่ต้องการเรียกใช้
procedure text Optional ชื่อของฟังก์ชันในไฟล์ DLL หรือค่า ordinal จากไฟล์ module-definition (.DEF) เช่น ‘GetTickCount’
type_text text Optional ข้อความที่ระบุประเภทข้อมูลของค่าที่ส่งกลับและประเภทข้อมูลของอาร์กิวเมนต์ เช่น ‘J’ สำหรับจำนวนเต็ม 32 บิต ‘J!’ สำหรับตัวชี้ Windows
argument1,… any Optional อาร์กิวเมนต์ที่ส่งไปยังฟังก์ชัน DLL จำนวนและประเภท depends on the DLL function being called

How it works

เรียกใช้ฟังก์ชัน Windows API

ใช้ CALL เพื่อเรียกใช้ฟังก์ชัน Windows API เช่น GetTickCount เพื่อให้ได้ค่าจำนวนมิลลิวินาทีที่ผ่านไปนับตั้งแต่ระบบเปิดขึ้นมา

ลงทะเบียนและเรียกใช้ฟังก์ชัน DLL พร้อมกัน

ใช้ CALL โดยระบุชื่อ DLL ชื่อฟังก์ชัน และประเภทข้อมูลทั้งหมดในสูตรเดียว เพื่อเรียกใช้ฟังก์ชัน DLL ที่กำหนดเองได้ทันทีโดยไม่ต้องลงทะเบียนก่อน

Examples

ตัวอย่างที่ 1: เรียกใช้ GetTickCount จาก Windows API
CALL(REGISTER("Kernel32","GetTickCount","J"))
สูตรนี้ลงทะเบียน GetTickCount จาก Kernel32 DLL และเรียกใช้พร้อมกัน ฟังก์ชัน GetTickCount ส่งกลับจำนวนมิลลิวินาทีตั้งแต่เปิดระบบ โดย 'J' หมายถึงค่าที่ส่งกลับเป็นจำนวนเต็ม 32 บิต
Excel Formula:

=CALL(REGISTER("Kernel32","GetTickCount","J"))

Result:

4294967295 (หรือค่าจำนวนมิลลิวินาทีอื่น ๆ แล้วแต่เวลาที่เรียกใช้)

ตัวอย่างที่ 2: ใช้ REGISTER.ID ก่อนเรียก CALL
CALL(A5)
สูตรนี้ใช้ register ID ที่เก็บไว้ในเซลล์ A5 ซึ่งได้มาจากการเรียก REGISTER.ID ก่อนหน้านี้ (เช่น =REGISTER.ID("Kernel32","GetTickCount","J")) ทำให้ได้ผลลัพธ์เดียวกับตัวอย่างแรก
Excel Formula:

=CALL(A5)

Result:

4294967295 (ค่าจำนวนมิลลิวินาที)

ตัวอย่างที่ 3: เรียกใช้ฟังก์ชันด้วยอาร์กิวเมนต์
CALL(B5, param1, param2)
สูตรนี้เรียกใช้ฟังก์ชันที่ลงทะเบียนแล้ว (เก็บไว้ใน B5) พร้อมส่งต่ออาร์กิวเมนต์ param1 และ param2 ไปยังฟังก์ชัน DLL ประเภทและจำนวนอาร์กิวเมนต์ขึ้นอยู่กับประเภท DLL ที่เรียกใช้
Excel Formula:

=CALL(B5, param1, param2)

Result:

ผลลัพธ์จากฟังก์ชัน DLL

FAQs

ความแตกต่างระหว่าง CALL กับ REGISTER.ID คืออะไร?

REGISTER.ID เป็นฟังก์ชันที่ใช้ลงทะเบียน DLL และส่งกลับ register ID เท่านั้น ส่วน CALL เป็นฟังก์ชันที่ใช้เรียกใช้ฟังก์ชันในไลบรารี DLL โดยอ้างอิง register ID ดังนั้น REGISTER.ID ต้องเรียกใช้ก่อน จากนั้นจึงใช้ CALL เพื่อเรียกใช้ฟังก์ชัน

CALL ใช้ได้ในเวอร์ชัน Excel ทั้งหมดหรือไม่?

ไม่ CALL ไม่สามารถใช้ได้ใน Excel for the web ใช้ได้เฉพาะใน Excel สำหรับ Windows เท่านั้น และสามารถใช้ได้ในแผ่นงาน Macro เท่านั้น ไม่ใช่แผ่นงานปกติ

การใช้ CALL ที่ไม่ถูกต้องจะเกิดอะไรขึ้น?

การใช้ CALL ที่ไม่ถูกต้องอาจทำให้เกิดข้อผิดพลาด หรือในบางกรณีอาจทำให้ต้องรีสตาร์ทเครื่องคอมพิวเตอร์ ดังนั้นจึงควรใช้ด้วยความระมัดระวัง และทดสอบในสภาพแวดล้อมที่ปลอดภัยก่อน

ประเภทข้อมูล type_text ในหลาย ๆ ประเภทมีอะไรบ้าง?

ประเภทข้อมูล type_text ใช้สัญลักษณ์เดียว เช่น ‘J’ สำหรับจำนวนเต็ม 32 บิต ‘R’ สำหรับจำนวนจริง ‘C’ สำหรับข้อความ ‘E’ สำหรับเรฟเซียล เป็นต้น ตัวอักษรตัวแรกใช้ระบุประเภทค่าที่ส่งกลับ และตัวอักษรตัวอื่น ๆ ใช้ระบุประเภทอาร์กิวเมนต์

Resources & Related

Additional Notes

CALL เป็นฟังก์ชันที่ใช้เรียกฟังก์ชันจากไลบรารีสิ่งเชื่อมโยงแบบไดนามิก (DLL) หรือทรัพยากรโค้ด เฉพาะสำหรับผู้ใช้ขั้นสูงเท่านั้นและใช้ได้จากแผ่นงาน Macro เท่านั้น

Leave a Reply

Your email address will not be published. Required fields are marked *