snasui.com ยินดีต้อนรับ
ยินดีต้อนรับสู่กระดานถามตอบ Excel and VBA และอื่น ๆ ที่เป็นมิตรกับทุกท่าน มีไฟล์แนบมหาศาล ช่วยให้ท่านค้นหาและติดตามศึกษาได้โดยง่าย สมาชิกท่านใดที่ยังไม่ได้ระบุ Version ของ Excel ที่ใช้งานจริง สามารถทำตาม Link นี้เพื่อจะได้รับคำตอบที่ตรงกับ Version ของท่านครับ ระบุ Version ของ Excel
ฟอรัมถาม-ตอบปัญหาการใช้งาน MS Excel and VBA
Forum rules
ไม่อนุญาตให้ใช้ภาษาแชทในการถามและตอบปัญหา ไม่ใช้คำว่า "คับ" หรือ "อ่ะครับ" แทนคำว่า "ครับ" ไม่ใช้คำว่า "เด๋ว" แทนคำว่า "เดี๋ยว" เป็นต้น เนื่องจากเมื่อแปลเป็นภาษาต่างประเทศแล้วจะให้ความหมายผิดไปจากที่ควรจะเป็น
ห้ามถามโดยระบุชื่อผู้ตอบและต้องตั้งชื่อกระทู้ให้สื่อถึงปัญหาที่จะถาม ไม่ตั้งชื่อว่า ช่วยด้วยครับ, มีปัญหามาปรึกษาครับ เป็นต้น
กรุณาอธิบายปัญหาและระบุคำตอบที่ต้องการมาในกระทู้ด้วยเสมอถึงแม้จะอธิบายไว้ในไฟล์แนบแล้วก็ตาม ทั้งนี้เพื่ออำนวยความสะดวกแก่เพื่อนสมาชิกในการค้นหาข้อมูล
กรุณาแนบไฟล์ตัวอย่างพร้อมแสดงคำตอบที่ถูกต้องมาในไฟล์ด้วยเพื่อให้ง่ายต่อการทำความเข้าใจและสะดวกต่อการตอบคำถาม (ขนาดไฟล์ไม่เกิน 500Kb ขนาดภาพไม่เกิน 800*600 Pixel) ไม่แนบเป็น Link มาจากแหล่งอื่นที่อาจจะถูกลบทิ้งไปโดยต้นทางในภายหลัง นอกจากนี้ไม่ควรแนบไฟล์ที่มีข้อมูลสำคัญอันก่อให้เกิดความเสียหายกับตนเองและผู้อื่น
กรณีเป็นคำถามเกี่ยวกับ Programming เช่น VBA, VB.Net, C#, SQL ฯลฯ ต้องลองเขียนมาเองก่อนเสมอ ถามเฉพาะที่ติดปัญหา ระบุ Module, Procedure ที่ติดปัญหาให้ชัดเจน กรุณาโพสต์ Code ให้แสดงเป็น Code คือเปิดด้วย [code]
และปิดด้วย [/code]
ตัวอย่างเช่น [code]dim r as range[/code]
เพื่อให้แตกต่างจากข้อความทั่วไป สะดวกในการอ่านและทดสอบ (คลิกเพื่อดูตัวอย่าง)
กรุณาแจ้งผลการใช้งานเมื่อได้รับคำตอบว่าตรงกับความต้องการหรือไม่
diamondbom
Member
Posts: 121 Joined: Thu Jan 23, 2014 11:32 pm
#1
Post
by diamondbom » Sat Oct 04, 2014 10:36 pm
คือว่าผมต้องการออกแบบการใช้ Excel เชื่อมโยงกับโปรแกรมอื่นๆ นะครับในที่นี้ผมทดลองเริ่มด้นด้วยการเปิด notepad
แต่ไม่สามารถทำได้ขอคำแนะนำด้วยครับ ผมใช้ comandbutton ในการเปิดผิดหรือปล่าวครับในที่นี้ หรื้อต้องใช้คำสั่งอื่น
You do not have the required permissions to view the files attached to this post.
snasui
Site Admin
Posts: 30917 Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:
#2
Post
by snasui » Sat Oct 04, 2014 11:06 pm
ไฟล์ที่จะแนบ Code ได้ อย่างน้อยจะมีนามสกุลเป็น .xlsm ลองแนบมาใหม่ครับ
diamondbom
Member
Posts: 121 Joined: Thu Jan 23, 2014 11:32 pm
#3
Post
by diamondbom » Sun Oct 05, 2014 9:47 am
ขอโทษด้วยครับ ผม Save File ผิด
You do not have the required permissions to view the files attached to this post.
snasui
Site Admin
Posts: 30917 Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:
#4
Post
by snasui » Sun Oct 05, 2014 2:33 pm
ตัวอย่าง Code ตามด้านล่างครับ
Code: Select all
Sub OpenApp()
Dim ProcessID As Double
ProcessID = Shell("Notepad.exe", vbNormalFocus)
AppActivate ProcessID
End Sub
diamondbom
Member
Posts: 121 Joined: Thu Jan 23, 2014 11:32 pm
#5
Post
by diamondbom » Sun Oct 05, 2014 6:09 pm
การใช้งาน code ใช้กับปุ่ม control ใดครับ
snasui
Site Admin
Posts: 30917 Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:
#6
Post
by snasui » Sun Oct 05, 2014 6:12 pm
สำหรับ Code ใช้กับปุ่มใด ๆ หรือไม่ใช่กับปุ่มแต่ใช้กับเหตุการณ์ใด ๆ ที่เกิดขึ้นก็ย่อมได้ เช่นการเลือกเซลล์ การเลือกชีท การปิดไฟล์ ฯลฯ ครับ
diamondbom
Member
Posts: 121 Joined: Thu Jan 23, 2014 11:32 pm
#7
Post
by diamondbom » Sun Oct 05, 2014 7:38 pm
คือว่าผมทดลองใช้กับ 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
snasui
Site Admin
Posts: 30917 Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:
#8
Post
by snasui » Sun Oct 05, 2014 8:08 pm
ควรโพสต์ 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
Posts: 121 Joined: Thu Jan 23, 2014 11:32 pm
#10
Post
by diamondbom » Mon Oct 06, 2014 11:22 am
ในการเปิด notepad สามารถเลือกเปิด File ที่บันทึกไว้ และนำข้อความด้านในมาใส่ใน Excel ได้หรือปล่าวครับ
เช่น ผมต้องการเปิด File AAAA.txt ซื่งข้อความด้านในมีอยู่ว่า บรรทัด1 A=1 บรรทัด2 B=2
A=1 มาใส่ใน cell(1,1)
B=2 มาใส่ใน cell(2,1)
ขอคำแนะนำด้วยครับ
ขอบคุณครับ
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
songsug
Member
Posts: 71 Joined: Wed Apr 04, 2012 11:22 am
Location: สมุทรสาคร
#11
Post
by songsug » Mon Oct 06, 2014 11:55 am
แบบสั้นๆครับ เปิดได้ทุกนามสกุลที่ผมใช้อยู่นะ
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
Posts: 121 Joined: Thu Jan 23, 2014 11:32 pm
#12
Post
by diamondbom » Mon Oct 06, 2014 6:05 pm
ขอบคุณครับ แต่ผมไม่ทราบวิธีการนำไปใช้ขอคำแนะนำด้วยครับ ขอบคุณครับ
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
snasui
Site Admin
Posts: 30917 Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:
#13
Post
by snasui » Tue Oct 07, 2014 11:48 am
diamondbom wrote: ในการเปิด notepad สามารถเลือกเปิด File ที่บันทึกไว้ และนำข้อความด้านในมาใส่ใน Excel ได้หรือปล่าวครับ
เช่น ผมต้องการเปิด File AAAA.txt ซื่งข้อความด้านในมีอยู่ว่า บรรทัด1 A=1 บรรทัด2 B=2
A=1 มาใส่ใน cell(1,1)
B=2 มาใส่ใน cell(2,1)
ขอคำแนะนำด้วยครับ
ขอบคุณครับ
...
การทำเช่นนั้นไม่จำเป็นต้องเปิดไฟล์ ปกติการทำงานระหว่างโปรแกรมจะส่งผ่านข้อมูลกันด้วย Text File และไม่จำเป็นต้องเปิด Text File นั้น แต่เราใช้ Code ไปดึงข้อมูลจาก Text File มาใช้เลย ไม่ทราบว่าการทำเช่นนี้ไม่ตรงกับความต้องการอย่างไร หรือมีวัตถุประสงค์ใดที่ต้องเปิดไฟล์ครับ
songsug
Member
Posts: 71 Joined: Wed Apr 04, 2012 11:22 am
Location: สมุทรสาคร
#14
Post
by songsug » Tue Oct 07, 2014 1:27 pm
แบบนี้หรือป่าวครับ เปิด 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
Posts: 121 Joined: Thu Jan 23, 2014 11:32 pm
#15
Post
by diamondbom » Tue Oct 07, 2014 2:59 pm
ขอบคุณครับ
ที่ผมต้องการเลือกเปิด File เพราะว่าต้องการเปลี่ยนแปลงค่าใน File นั้นๆ ก่อนนำมาใส่ Excel ครับ
ในการเปิด notepad สามารถเลือกเปิด File ที่บันทึกไว้ และนำข้อความด้านในมาใส่ใน Excel ได้หรือปล่าวครับ
เช่น ผมต้องการเปิด File AAAA.txt ที่ Desktop ถ้าเป็นโค๊ดแบบนี้ผมควรป้อนอย่างไรครับ
Code: Select all
ProcessID = Shell("notepad.exe\AAAA.txt", vbNormalFocus)
snasui
Site Admin
Posts: 30917 Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:
#16
Post
by snasui » Tue Oct 07, 2014 3:08 pm
สิ่งที่คุณ diamondbom อธิบายมาคือเปลียนแปลงใน Text File ก่อน ไม่ใช่เปิดขึ้นมาแล้วเปลี่ยนแปลงใด ๆ ดังนั้น ในการนำค่ามาใส่โปรแกรม Excel คุณ diamondbom จึง
ไม่จำเป็นต้องเปิด Text File
ได้ลองใช้ Code ที่คุณ songsug ตอบแล้วยัง ติดขัดตรงไหน อย่างไรครับ
diamondbom
Member
Posts: 121 Joined: Thu Jan 23, 2014 11:32 pm
#17
Post
by diamondbom » Wed Oct 08, 2014 4:23 pm
ขอคำแนะนำเกี่ยวกับการป้อน "ทีอยู่ TextFile" ด้วยครับ
ที่ผมทำลงไปคือ
1 Compile Error
Code: Select all
File_Name = C:\Users\Pet\Desktop\AAAA.txt
2 Run time error '424': object required
snasui
Site Admin
Posts: 30917 Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:
#18
Post
by snasui » Wed Oct 08, 2014 11:07 pm
ค่า String ต้องครอบด้วยฟันหนูครับ จาก
C:\Users\Pet\Desktop\AAAA.txt
เป็น
"C:\Users\Pet\Desktop\AAAA.txt"
diamondbom
Member
Posts: 121 Joined: Thu Jan 23, 2014 11:32 pm
#19
Post
by diamondbom » Thu Oct 09, 2014 1:22 am
ขอบคุณครับ ผมได้ลองใช้ 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
snasui
Site Admin
Posts: 30917 Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:
#20
Post
by snasui » Thu Oct 09, 2014 2:03 pm
ตัวอย่าง Code การเปิดไฟล์ด้วย Notepad ตามด้านล่างครับ
Code: Select all
Sub OpenTextFileWithNotePad()
NotePadOpenFile = Shell("C:\WINDOWS\notepad.exe C:\myText.txt", 1)
End Sub