หากจะใส่ชื่อ file dll ที่เรียกใช้ใน vba จะต้องทำอย่างไร โดยไม่ต้องTools.Referens



0 สมาชิก และ 1 บุคคลทั่วไป กำลังดูหัวข้อนี้

01 ก.พ. 61 , 20:18:55
อ่าน 825 ครั้ง

bgfc

 คือปกติเมื่อจะเรียกใช้โปรแกรมเพิ่มเติม เช่น mscomm32.dll เราก็จะต้องไปที่ Tools.References แล้วหา ใน list เมื่อเจอก็คลิก เลือก   โปรแกรมจะโหลด mscomm32.dll เข้ามา   คือผมอยากสอบถามว่า

1. เราสามารถเขียน หรือ ประกาศ ในโปรแกรมได้หรือไม่ เพื่อคนอื่นที่มาดูแลโปรแกรมต่อจากเรา จะได้ทราบว่า โปรแกรม Load dll ตัวไหนเข้ามา

2. เมื่อ Compile เป็น *.accde  แล้ว   mscomm32.dll จะถูก copy เข้ามารวมใน *.accde ด้วยหรือไม่   เพราะอาจต้องนำไปใช้กับเครื่องอื่นที่ไม่มี mscomm32.dll โปรแกรมจะทำงานไม่ได้

เรียนสอบถามท่านผู้รู้ครับ

 

02 ก.พ. 61 , 12:56:31
ตอบกลับ #1

pizza_p

1. เราสามารถเรียกใช้ Win API ได้โดยประกาศการใช้ใน VBA ครับ เช่น

Private Declare Function apiOpenClipboard Lib "user32" Alias "OpenClipboard" (ByVal hwnd As Long) As Long

หลังจากนั้นเราก็สามารถใช้ฟังก์ชั่น apiOpenClipboard() ใน code ของเราได้

2. ปกติพวก .dll ไม่ได้ถูก compile รวมไปด้วยกับโปรแกรมครับ มันจะไปโหลดที่เครื่องปลายทางตอนเปิดโปรแกรมขึ้นมาครับ .dll บางตัวสามารถใส่ลงไปในที่เดียวกับ .accde ได้ แต่ปกติ Access จะไปหาที่มีอยู่ในระบบก่อน สุดท้ายถึงจะมาหาใน path ที่โปรแกรมอยู่ และไฟล์ .dll บางตัวก็ทำงานไม่ได้ถ้าไม่ได้ register หรือติดตั้งเข้ากับ windows ก่อน

 

02 ก.พ. 61 , 23:00:07
ตอบกลับ #2

TTT

1. เราสามารถเขียน หรือ ประกาศ ในโปรแกรมได้หรือไม่ เพื่อคนอื่นที่มาดูแลโปรแกรมต่อจากเรา จะได้ทราบว่า โปรแกรม Load dll ตัวไหนเข้ามา
- อื่ม! กับคำถามนี้ไม่ค่อยเข้าใจความต้องการนะครับ แต่ถ้าหมายถึงการที่ยากแสดงว่าไฟล์เราใช้ไลบารี่ตัวใดบ้างโดยไม่ต้องมาดูที่ VBE เราสามารถเขียนคำสั่งให้แสดง ชื่อ หรือ พาธไฟล์ ไลบารี่ ที่ใช้งานอยู่ได้ครับ

โค๊ด: [Select]
Sub ListLibraryName()
    Dim chkref As Reference
    For Each chkref In Application.References
        MsgBox "Reference: " & chkref.name & Chr(13) & chkref.FullPath
    Next
End Function

<Return>
Reference: VBA
C:\PROGRA~1\COMMON~1\MICROS~1\VBA\VBA7\VBE7.DLL
 
Reference: Access
C:\Program Files\Microsoft Office\Office14\MSACC.OLB
 
Reference: stdole
C:\Windows\system32\stdole2.tlb

2. ปกติพวก .dll ไม่ได้ถูก compile รวมไปด้วยกับโปรแกรมครับ มันจะไปโหลดที่เครื่องปลายทางตอนเปิดโปรแกรมขึ้นมาครับ .dll บางตัวสามารถใส่ลงไปในที่เดียวกับ .accde ได้ แต่ปกติ Access จะไปหาที่มีอยู่ในระบบก่อน สุดท้ายถึงจะมาหาใน path ที่โปรแกรมอยู่ และไฟล์ .dll บางตัวก็ทำงานไม่ได้ถ้าไม่ได้ register หรือติดตั้งเข้ากับ windows ก่อน
-เราไม่สามารถนำไฟล์ไลบารี่ภายนอกมาก bundle เข้าด้วยกันกับไฟล์ Data ได้ คืออย่าลืมว่าไฟล์ Access เราเป็นแค่ไฟล์ Data นะครับ ไม่ใช่ Execute ไฟล์ (ถึงต่อให้เป็น Execute ก็ไม่ควร bundle เข้าไปเป็นไฟล์เดียว เพราะมันจะพัฒนาต่อได้ยาก และยุ่งยากในการแก้บัค) โปรแกรมส่วนมากจะแยกไฟล์ dll ของตัวเองไว้เป็นอีกไฟล์ภายนอก ส่วนการลงในเครื่องอื่นๆ ก็สามารถใช้โปรแกรมที่สามารถทำเป็นไฟล์ติดตั้งได้ลงในพาธต่างๆตามที่เราต้องการแทน เหมือนการลงโปรแกรมทั้งไปที่จะใช้ไฟล์ตัว Setup.exe อะไรประมาณนี้แทนการแค่ก็อปปี้ใส่ลงในโฟลเดอร์เดียว
ฐานข้อมูลเป็นเรื่องใกล้ตัว ใครๆก็ทำฐานข้อมูลเองได้นะครับhttp://www.youtube.com/c/AccessCreator link
 

03 ก.พ. 61 , 12:58:49
ตอบกลับ #3

bgfc

ขอบคุณ ทั้ง 2 ท่านครับ _/|\_

ที่ผมต้องการ คือเมื่อเขียน VBA กับเพื่อน ๆ ในที่ทำงาน  เราต้องการให้ในเนื้อหาโปรแกรม VBA เขียนชื่อ file ที่เรียกใช้ลงไปในเนื้อโปรแกรมเลย เช่น "C:\windows\system32\Mscomm32.ocx"  เพื่อให้เพื่อน ๆ ที่มาดูแลโปรแกรมคนอื่น ๆ สามารถรู้ได้ว่า Function นั้น ๆ มาจาก โปรแกรมที่เพิ่มเติ่ม (API) ตัวไหน และ อยู่ที่ไหน (ที่คุณ PIZZA_P กรุณาแสดงให้ดู ซึ่งขอกราบขอบคุณ)  และคุณ TTT แสดงโปรแกรมให้ตรวจสอบว่า มีโปรแกรมเพิ่มเติมอะไรบ้าง กราบขอบคุณเช่นกันครับ
 :nice day:

 


บอร์ดเรียนรู้ Access สำหรับคนไทย