---
title: CALL – ฟังก์ชันเรียกใช้ Dynamic Link Library
url: https://www.thepexcel.com/functions/excel/add-in-and-automation/call/
type: function-explainer
program: Excel
syntax: "=CALL(register_id,[argument1],[argument2],...)"
date: 2025-12-11
updated: 2025-12-17
scores:
  popularity: 3
  difficulty: 5
  usefulness: 4
---

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

> เรียกใช้ฟังก์ชันจาก DLL หรือทรัพยากรโค้ด

## คำอธิบาย

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

## Syntax

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

**Variant**

```excel
=CALL(register_id,[argument1],..)
```

เรียกใช้โปรแกรม DLL โดยอ้างอิง register ID ที่ได้จากการลงทะเบียนก่อนหน้านี้

**Variant**

```excel
=CALL(module_text,procedure,type_text,[argument1],...)
```

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

## Arguments

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

## เคสการใช้งาน

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

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

_เหมาะกับ:_ windows-api-call

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

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

_เหมาะกับ:_ inline-dll-call

## ตัวอย่าง

### 1. ตัวอย่างที่ 1: เรียกใช้ GetTickCount จาก Windows API

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

**ผลลัพธ์:** `4294967295 (หรือค่าจำนวนมิลลิวินาทีอื่น ๆ แล้วแต่เวลาที่เรียกใช้)`

สูตรนี้ลงทะเบียน GetTickCount จาก Kernel32 DLL และเรียกใช้พร้อมกัน ฟังก์ชัน GetTickCount ส่งกลับจำนวนมิลลิวินาทีตั้งแต่เปิดระบบ โดย 'J' หมายถึงค่าที่ส่งกลับเป็นจำนวนเต็ม 32 บิต

### 2. ตัวอย่างที่ 2: ใช้ REGISTER.ID ก่อนเรียก CALL

```excel
=CALL(A5)
```

**ผลลัพธ์:** `4294967295 (ค่าจำนวนมิลลิวินาที)`

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

### 3. ตัวอย่างที่ 3: เรียกใช้ฟังก์ชันด้วยอาร์กิวเมนต์

```excel
=CALL(B5, param1, param2)
```

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

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

## หมายเหตุเพิ่มเติม

⚠️ CALL เป็นฟังก์ชันที่ใช้ได้เฉพาะใน Excel for Windows เท่านั้น ไม่สามารถใช้ใน Excel for the web หรือ Excel for Mac การใช้ CALL ต้องมีความรู้เกี่ยวกับ Windows API และ DLL เป็นประเภทเดียวกันหากใช้ไม่ถูกต้องอาจเกิดข้อผิดพลาดร้ายแรง สามารถใช้ได้ในแผ่นงาน Macro เท่านั้น ไม่ใช่แผ่นงานปกติ

## คำถามที่พบบ่อย

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

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

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

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

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

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

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

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

## ฟังก์ชันที่เกี่ยวข้อง

- [REGISTER.ID – ฟังก์ชันส่งกลับรหัสลงทะเบียน DLL](https://www.thepexcel.com/functions/excel/add-in-and-automation/register-id/)
- [EUROCONVERT – ฟังก์ชันแปลงสกุลเงินเป็นยูโร](https://www.thepexcel.com/functions/excel/add-in-and-automation/euroconvert/)

## แหล่งข้อมูลเพิ่มเติม

- [Microsoft Learn: CALL Function](https://support.microsoft.com/en-us/office/call-function-32d58445-e646-4ffd-8d5e-b45077a5e995) _(documentation)_
- [Microsoft Learn: REGISTER.ID Function](https://support.microsoft.com/en-us/office/register-id-function-f8f0af0f-fd66-4704-a0f2-87b27b175b50) _(documentation)_

---

_Source: [https://www.thepexcel.com/functions/excel/add-in-and-automation/call/](https://www.thepexcel.com/functions/excel/add-in-and-automation/call/)_
