<% Option Explicit %>
<html>
<head>
<title>ThaiCreate.Com ASP Excel.Application Tutorial</title>
</head>
<body>
<%
Dim xlApp
Set xlApp = Server.CreateObject("Excel.Application")
If IsObject(xlApp) Then
Response.write("Connect to Excel.Application")
Else
Response.write("Can Not Connect to Excel.Application")
End IF
%>
</body>
</html>
Error Message
Error Type:
Server object, ASP 0178 (0x80070005)
The call to Server.CreateObject failed while checking permissions. Access is denied to this object.
/myasp/AspConnectExcel.asp, line 9
หรือบน Windows Server 2003
Server object error 'ASP 0177 : 800401f3'
Server.CreateObject Failed
/myasp/AspConnectExcel.asp, line 9
เมื่อลอง Run โปรแกรมจะเห็นว่าแสดงข้อผิดพลาดในส่วนของ permissions. Access is denied อันเป็นเนื่องจาก เราไม่สามารถเรียกใช้งาน DCOM ของ Microsoft Excel ได้ครับ จะต้องทำการกำหนดสิทธิ์ให้กับ User ก่อนครับ
ถ้าหากใช้ IIS เป็น Web Server จะต้องตรวจสอบ User ที่ใช้ในการเรียกใช้งาน DCOM โดยไปที่ IIS
คลิกวาที่ Default Web Site -> Properties
Tab ชื่อ Directory Security คลิกเลือก Edit
จะเห็นว่าใน IIS ใช้ User ชื่อ IUSR_WEERACHAI ในการ Access เพื่อเรียกใช้งาน Resource ต่าง ๆ ซึ่งถ้าติดปัญหาเรื่อง Permission สิ่งที่ต้องทำคือการกำหนดสิทธิ์ให้กับ User ชื่อ IUSR_WEERACHAI
เมื่อลองดูในส่วนของ Control Panel -> Administrative Tools -> Event Viewer -> System
จะเห็นว่ามี User ชื่อ IUSR_Machine-name และ IWAM_Machine-name ทำการเรียกใช้งาน DCOM แต่ไม่สามารถเรียกใช้งานได้ วิธีแก้ก็คือให้กำหนดสิทธิ์ให้กับ User 2 ตัวนี้ครับ โดยไปที่
Control Panel -> Administrative Tools -> Component Services
เปิดโปรแกรม Component Services
Component Services -> Computers -> My Computer -> DCOM Config
หาโปรแกรม Microsoft Excel Application -> Right Click -> Properties