:D snasui.com ยินดีต้อนรับ :D
ยินดีต้อนรับสู่กระดานถามตอบ Excel and VBA และอื่น ๆ ที่เป็นมิตรกับทุกท่าน มีไฟล์แนบมหาศาล ช่วยให้ท่านค้นหาและติดตามศึกษาได้โดยง่าย :thup: สมาชิกท่านใดที่ยังไม่ได้ระบุ Version ของ Excel ที่ใช้งานจริง สามารถทำตาม Link นี้เพื่อจะได้รับคำตอบที่ตรงกับ Version ของท่านครับ :arrow: ระบุ Version ของ Excel
:!: โปรดทราบ :!:
  1. กรุณาอ่านกฎการใช้บอร์ด (Forum rules) ในตำแหน่งด้านบนของแต่ละบอร์ด
  2. การสมัครสมาชิก การ Login การกู้คืนรหัสผ่าน
    1. สมัครสมาชิกดูขั้นตอนได้ที่ :arrow: สมัครสมาชิก
    2. Login เข้าระบบโดยคลิกปุ่ม Login ตรงมุมขวาบนของหน้านี้ :roll:
    3. การ Login ผ่าน Facebook ดูวิธีที่ :arrow: Login ผ่าน Facebook
    4. ลืมรหัสผ่านสามารถรับรหัสใหม่ได้ที่ :arrow: Reset รหัสผ่าน
  3. มีปัญหาการใช้งาน แจ้งผู้ดูแลระบบได้ที่ :arrow: ติดต่อผู้ดูแลระบบ
  4. กำหนดการตั้งค่าส่วนตัว เช่นตั้งค่าภาษาเป็นไทยหรืออังกฤษดูได้ที่ :arrow: ตั้งค่าส่วนตัว
  5. การตั้งและตอบกระทู้ดูได้ที่ :arrow: วิธีการตั้งและตอบกระทู้
  6. การจัดรูปแบบตัวอักษรด้วย bbcode ในช่องแสดงความคิดเห็นดูได้ที่ :arrow: จัดรูปแบบตัวอักษร
  7. กำหนดขนาดตัวอักษรใน Browser ดูได้ที่ :arrow: กำหนดขนาดตัวอักษรใน Browser

การเปิดโปรแกรมอื่นด้วย VBA

ฟอรัมถาม-ตอบปัญหาการใช้งาน MS Excel and VBA
Forum rules
  1. ไม่อนุญาตให้ใช้ภาษาแชทในการถามและตอบปัญหา ไม่ใช้คำว่า "คับ" หรือ "อ่ะครับ" แทนคำว่า "ครับ" ไม่ใช้คำว่า "เด๋ว" แทนคำว่า "เดี๋ยว" เป็นต้น เนื่องจากเมื่อแปลเป็นภาษาต่างประเทศแล้วจะให้ความหมายผิดไปจากที่ควรจะเป็น
  2. ห้ามถามโดยระบุชื่อผู้ตอบและต้องตั้งชื่อกระทู้ให้สื่อถึงปัญหาที่จะถาม ไม่ตั้งชื่อว่า ช่วยด้วยครับ, มีปัญหามาปรึกษาครับ เป็นต้น
  3. กรุณาอธิบายปัญหาและระบุคำตอบที่ต้องการมาในกระทู้ด้วยเสมอถึงแม้จะอธิบายไว้ในไฟล์แนบแล้วก็ตาม ทั้งนี้เพื่ออำนวยความสะดวกแก่เพื่อนสมาชิกในการค้นหาข้อมูล
  4. กรุณาแนบไฟล์ตัวอย่างพร้อมแสดงคำตอบที่ถูกต้องมาในไฟล์ด้วยเพื่อให้ง่ายต่อการทำความเข้าใจและสะดวกต่อการตอบคำถาม (ขนาดไฟล์ไม่เกิน 500Kb ขนาดภาพไม่เกิน 800*600 Pixel) ไม่แนบเป็น Link มาจากแหล่งอื่นที่อาจจะถูกลบทิ้งไปโดยต้นทางในภายหลัง นอกจากนี้ไม่ควรแนบไฟล์ที่มีข้อมูลสำคัญอันก่อให้เกิดความเสียหายกับตนเองและผู้อื่น
  5. กรณีเป็นคำถามเกี่ยวกับ Programming เช่น VBA, VB.Net, C#, SQL ฯลฯ ต้องลองเขียนมาเองก่อนเสมอ ถามเฉพาะที่ติดปัญหา ระบุ Module, Procedure ที่ติดปัญหาให้ชัดเจน กรุณาโพสต์ Code ให้แสดงเป็น Code คือเปิดด้วย [code] และปิดด้วย [/code] ตัวอย่างเช่น [code]dim r as range[/code] เพื่อให้แตกต่างจากข้อความทั่วไป สะดวกในการอ่านและทดสอบ (คลิกเพื่อดูตัวอย่าง)
  6. กรุณาแจ้งผลการใช้งานเมื่อได้รับคำตอบว่าตรงกับความต้องการหรือไม่
diamondbom
Member
Member
Posts: 121
Joined: Thu Jan 23, 2014 11:32 pm

การเปิดโปรแกรมอื่นด้วย VBA

#1

Post by diamondbom »

คือว่าผมต้องการออกแบบการใช้ Excel เชื่อมโยงกับโปรแกรมอื่นๆ นะครับในที่นี้ผมทดลองเริ่มด้นด้วยการเปิด notepad
แต่ไม่สามารถทำได้ขอคำแนะนำด้วยครับ ผมใช้ comandbutton ในการเปิดผิดหรือปล่าวครับในที่นี้ หรื้อต้องใช้คำสั่งอื่น
You do not have the required permissions to view the files attached to this post.
User avatar
snasui
Site Admin
Site Admin
Posts: 30917
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: การเปิดโปรแกรมอื่นด้วย VBA

#2

Post by snasui »

:D ไฟล์ที่จะแนบ Code ได้ อย่างน้อยจะมีนามสกุลเป็น .xlsm ลองแนบมาใหม่ครับ
diamondbom
Member
Member
Posts: 121
Joined: Thu Jan 23, 2014 11:32 pm

Re: การเปิดโปรแกรมอื่นด้วย VBA

#3

Post by diamondbom »

ขอโทษด้วยครับ ผม Save File ผิด :D
You do not have the required permissions to view the files attached to this post.
User avatar
snasui
Site Admin
Site Admin
Posts: 30917
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: การเปิดโปรแกรมอื่นด้วย VBA

#4

Post by snasui »

:D ตัวอย่าง Code ตามด้านล่างครับ

Code: Select all

Sub OpenApp()
    Dim ProcessID As Double
    ProcessID = Shell("Notepad.exe", vbNormalFocus)
    AppActivate ProcessID
End Sub
diamondbom
Member
Member
Posts: 121
Joined: Thu Jan 23, 2014 11:32 pm

Re: การเปิดโปรแกรมอื่นด้วย VBA

#5

Post by diamondbom »

การใช้งาน code ใช้กับปุ่ม control ใดครับ
User avatar
snasui
Site Admin
Site Admin
Posts: 30917
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: การเปิดโปรแกรมอื่นด้วย VBA

#6

Post by snasui »

:D สำหรับ Code ใช้กับปุ่มใด ๆ หรือไม่ใช่กับปุ่มแต่ใช้กับเหตุการณ์ใด ๆ ที่เกิดขึ้นก็ย่อมได้ เช่นการเลือกเซลล์ การเลือกชีท การปิดไฟล์ ฯลฯ ครับ
diamondbom
Member
Member
Posts: 121
Joined: Thu Jan 23, 2014 11:32 pm

Re: การเปิดโปรแกรมอื่นด้วย VBA

#7

Post by diamondbom »

คือว่าผมทดลองใช้กับ comand button 2 กรณีดังนี้ครับ

1-โปรแกรมแสดง Complie error Ambiguous name detected :OpenApp
Private Sub CommandButton2_Click()
Sub OpenApp()
Dim ProcessID As Double
ProcessID = Shell("Notepad.exe", vbNormalFocus)
AppActivate ProcessID
End Sub
End Sub

2-โปรแกรมนิ่งเฉย
Sub OpenApp()
Dim ProcessID As Double
ProcessID = Shell("Notepad.exe", vbNormalFocus)
AppActivate ProcessID
End Sub
User avatar
snasui
Site Admin
Site Admin
Posts: 30917
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: การเปิดโปรแกรมอื่นด้วย VBA

#8

Post by snasui »

:D ควรโพสต์ Code ให้แสดงเป็น Code โดยดูจากตัวอย่างที่นี่ครับ viewtopic.php?style=3&f=3&t=1187

ข้อ 1 Code ไม่ถูกต้อง เราจะวาง Sub ซ้อนกัน 2 อัน End Sub ซ้อนกัน 2 อันเช่นนั้นไม่ได้ครับ

แก้ไขโดยการลบ Sub OpenApp() และ End Sub ออกไป 1 ตัว

สำหรับข้อ 2 หากไม่ได้ Assign Macro ให้กับปุ่มใด ๆ ก็ไม่แปลกที่จะไม่เกิดอะไรขึ้น สำหรับการ Assign Macro ให้กับปุ่มศึกษาจากที่นี่ครับ http://snasui-excelvba.blogspot.com/201 ... macro.html

คุณ diamondbom ควรซื้อหนังสือเกียวกับการใช้งาน VBA มาอ่านแล้วฝึกทำตามนั้น เมื่อติดแล้วค่อยมาถาม สำหรับหนังสือคงต้องดูด้วยตนเอง ผมไม่สามารถแนะนำได้เพราะผมไม่ได้อ่านหนังสือไทย อ่านจาก Help ของโปรแกรมเป็นหลัก
diamondbom
Member
Member
Posts: 121
Joined: Thu Jan 23, 2014 11:32 pm

Re: การเปิดโปรแกรมอื่นด้วย VBA

#9

Post by diamondbom »

ขอบคุณครับ
diamondbom
Member
Member
Posts: 121
Joined: Thu Jan 23, 2014 11:32 pm

Re: การเปิดโปรแกรมอื่นด้วย VBA

#10

Post by diamondbom »

ในการเปิด notepad สามารถเลือกเปิด File ที่บันทึกไว้ และนำข้อความด้านในมาใส่ใน Excel ได้หรือปล่าวครับ
เช่น ผมต้องการเปิด File AAAA.txt ซื่งข้อความด้านในมีอยู่ว่า บรรทัด1 A=1 บรรทัด2 B=2
A=1 มาใส่ใน cell(1,1)
B=2 มาใส่ใน cell(2,1)
ขอคำแนะนำด้วยครับ :D ขอบคุณครับ

Code: Select all

Private Sub CommandButton2_Click()
On Error Resume Next
Dim ProcessID As Double
ProcessID = Shell("notepad.exe\AAAA.txt", vbNormalFocus)
Debug.Print ProcessID
If ProcessID <> 0 Then
AppActivate ProcessID
Else
MsgBox "No app"
End If
End Sub
User avatar
songsug
Member
Member
Posts: 71
Joined: Wed Apr 04, 2012 11:22 am
Location: สมุทรสาคร

Re: การเปิดโปรแกรมอื่นด้วย VBA

#11

Post by songsug »

แบบสั้นๆครับ เปิดได้ทุกนามสกุลที่ผมใช้อยู่นะ

Code: Select all

Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hWnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long

Code: Select all

Sub OpenShellExecute()
Dim handle As Long
    handle = ShellExecute(0, "Open", Range("A1").Value, 0, 0, 1)
End Sub
diamondbom
Member
Member
Posts: 121
Joined: Thu Jan 23, 2014 11:32 pm

Re: การเปิดโปรแกรมอื่นด้วย VBA

#12

Post by diamondbom »

ขอบคุณครับ แต่ผมไม่ทราบวิธีการนำไปใช้ขอคำแนะนำด้วยครับ ขอบคุณครับ

Code: Select all

Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hWnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
User avatar
snasui
Site Admin
Site Admin
Posts: 30917
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: การเปิดโปรแกรมอื่นด้วย VBA

#13

Post by snasui »

diamondbom wrote:ในการเปิด notepad สามารถเลือกเปิด File ที่บันทึกไว้ และนำข้อความด้านในมาใส่ใน Excel ได้หรือปล่าวครับ
เช่น ผมต้องการเปิด File AAAA.txt ซื่งข้อความด้านในมีอยู่ว่า บรรทัด1 A=1 บรรทัด2 B=2
A=1 มาใส่ใน cell(1,1)
B=2 มาใส่ใน cell(2,1)
ขอคำแนะนำด้วยครับ :D ขอบคุณครับ
...
:D การทำเช่นนั้นไม่จำเป็นต้องเปิดไฟล์ ปกติการทำงานระหว่างโปรแกรมจะส่งผ่านข้อมูลกันด้วย Text File และไม่จำเป็นต้องเปิด Text File นั้น แต่เราใช้ Code ไปดึงข้อมูลจาก Text File มาใช้เลย ไม่ทราบว่าการทำเช่นนี้ไม่ตรงกับความต้องการอย่างไร หรือมีวัตถุประสงค์ใดที่ต้องเปิดไฟล์ครับ
User avatar
songsug
Member
Member
Posts: 71
Joined: Wed Apr 04, 2012 11:22 am
Location: สมุทรสาคร

Re: การเปิดโปรแกรมอื่นด้วย VBA

#14

Post by songsug »

แบบนี้หรือป่าวครับ เปิด TextFile แล้ววน Loop เอามาวาง

Code: Select all

Private Sub CommandButton1_Click()
        Dim Handle As Integer, File_Name As String
        Dim WriteRow As Long, TemArr, OneLine As String
        Dim intRow As Integer
        intRow = 1
        Handle = FreeFile
        File_Name = "ทีอยู่ TextFile"
        Open File_Name For Input As #Handle
        While Not EOF(1)
                Line Input #Handle, OneLine
              Sheet4.Range("A" & intRow).Value = OneLine
        intRow = intRow + 1
        Wend
        Close #Handle
End Sub
diamondbom
Member
Member
Posts: 121
Joined: Thu Jan 23, 2014 11:32 pm

Re: การเปิดโปรแกรมอื่นด้วย VBA

#15

Post by diamondbom »

ขอบคุณครับ :D ที่ผมต้องการเลือกเปิด File เพราะว่าต้องการเปลี่ยนแปลงค่าใน File นั้นๆ ก่อนนำมาใส่ Excel ครับ

ในการเปิด notepad สามารถเลือกเปิด File ที่บันทึกไว้ และนำข้อความด้านในมาใส่ใน Excel ได้หรือปล่าวครับ
เช่น ผมต้องการเปิด File AAAA.txt ที่ Desktop ถ้าเป็นโค๊ดแบบนี้ผมควรป้อนอย่างไรครับ

Code: Select all

ProcessID = Shell("notepad.exe\AAAA.txt", vbNormalFocus)
User avatar
snasui
Site Admin
Site Admin
Posts: 30917
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: การเปิดโปรแกรมอื่นด้วย VBA

#16

Post by snasui »

:? สิ่งที่คุณ diamondbom อธิบายมาคือเปลียนแปลงใน Text File ก่อน ไม่ใช่เปิดขึ้นมาแล้วเปลี่ยนแปลงใด ๆ ดังนั้น ในการนำค่ามาใส่โปรแกรม Excel คุณ diamondbom จึงไม่จำเป็นต้องเปิด Text File

ได้ลองใช้ Code ที่คุณ songsug ตอบแล้วยัง ติดขัดตรงไหน อย่างไรครับ
diamondbom
Member
Member
Posts: 121
Joined: Thu Jan 23, 2014 11:32 pm

Re: การเปิดโปรแกรมอื่นด้วย VBA

#17

Post by diamondbom »

ขอคำแนะนำเกี่ยวกับการป้อน "ทีอยู่ TextFile" ด้วยครับ

ที่ผมทำลงไปคือ
1 Compile Error

Code: Select all

File_Name = C:\Users\Pet\Desktop\AAAA.txt
2 Run time error '424': object required

Code: Select all

File_Name = Desktop \ AAAA.txt
User avatar
snasui
Site Admin
Site Admin
Posts: 30917
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: การเปิดโปรแกรมอื่นด้วย VBA

#18

Post by snasui »

:D ค่า String ต้องครอบด้วยฟันหนูครับ จาก C:\Users\Pet\Desktop\AAAA.txt เป็น "C:\Users\Pet\Desktop\AAAA.txt"
diamondbom
Member
Member
Posts: 121
Joined: Thu Jan 23, 2014 11:32 pm

Re: การเปิดโปรแกรมอื่นด้วย VBA

#19

Post by diamondbom »

:D ขอบคุณครับ ผมได้ลองใช้ Code ที่คุณ songsug แนะนำมาแล้วครับ ไม่มีติดขัดครับ

รบกวนขอคำแนะนำเพิ่มเติมด้วยครับ
คือว่าผมต้องการเลือกเปิด File ของ Notepad ก่อนนั้น เพราะว่าผมต้องการเปลี่ยนแปลงค่าในนั้นก่อนแล้วจึงนำข้อมูลมาลงใน Excel ประมาณว่า ค่าในนั้นมีการเเปลี่ยนแปลงอยู่เสมอ ใช้งานทั้งสองโปรแกรมไปพร้อมๆกัน

ผมลองเขียนแล้วแต่ยังไม่สามารถเลือกเปิด File ของ Notepad ได้ รบกวนขอคำแนะนำด้วยครับ

Code: Select all

Private Sub CommandButton2_Click()
On Error Resume Next
Dim ProcessID As Double
ProcessID = Shell("C:\Users\Pet\Desktop\AAAA.txt", vbNormalFocus)
Debug.Print ProcessID
If ProcessID <> 0 Then
AppActivate ProcessID
Else
MsgBox "No app"
End If
End Sub
User avatar
snasui
Site Admin
Site Admin
Posts: 30917
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: การเปิดโปรแกรมอื่นด้วย VBA

#20

Post by snasui »

:D ตัวอย่าง Code การเปิดไฟล์ด้วย Notepad ตามด้านล่างครับ

Code: Select all

Sub OpenTextFileWithNotePad()
    NotePadOpenFile = Shell("C:\WINDOWS\notepad.exe C:\myText.txt", 1)
End Sub
Post Reply