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]
เพื่อให้แตกต่างจากข้อความทั่วไป สะดวกในการอ่านและทดสอบ (คลิกเพื่อดูตัวอย่าง)
กรุณาแจ้งผลการใช้งานเมื่อได้รับคำตอบว่าตรงกับความต้องการหรือไม่
Aantsugar
Member
Posts: 58 Joined: Sat Aug 06, 2016 1:29 pm
Excel Ver: 2016
#1
Post
by Aantsugar » Sat Feb 11, 2017 5:04 pm
อยากให้ไฟล์ที่เราแนบลิงค์ ปิดอัตโนมัติ เมื่อเราคลิกไฟล์ลิงค์นั้นไปแล้ว เมื่อคำสั่งเวลาในไฟล์ Excel หมดเวลาแล้ว ให้ไฟล์ที่เราคลิกลิงค์ ปิดไฟล์นั้นอัตโนมัติเหมือนกันคะ ไฟล์ลิงค์เป็น Word เราต้องเขียน คำสั่ง VBA ในไฟล์ Excel หรือ ไฟล์ Word คะ พอกดคลิกที่ไฟล์ Excel ที่ TEST เวลาจะนับถอยหลัง พอหมดเวลา ไฟล์ Excel ปิด แต่ไฟล์ที่เราคลิกลิงค์ไปไม่ปิดเองอัตโนมัติคะ
Code ที่เขียนมาที่ รบกวนอาจารย์ช่วยดูว่าติดอะไรตรงไหนคะ ตามแนบไฟล์ ขอบคุณคะ
Code: Select all
Sub Macro1()
Windows("TEST WORK EXCEL.xls").Activate
ThisWorkbook.Close
End Sub
You do not have the required permissions to view the files attached to this post.
snasui
Site Admin
Posts: 30760 Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:
#2
Post
by snasui » Sat Feb 11, 2017 6:14 pm
ช่วยปลดรหัสการเข้าถึง Code ด้วยครับ Code ที่เขียนมาตามโพสต์ด้านบน ไม่สื่อถึงสิ่งที่ต้องการจะทำคือสั่งให้ปิดไฟล์ที่เปิดมาตาม Hyperlink
แนวทางการเขียน Code ให้ควบคุม Microsoft Office อื่นนั้น ควรกำหนดตัวแปรให้กับโปรแกรมนั้น ๆ ที่จะเปิด ซึ่งไม่ใช่เป็นการเปิดด้วย Hyperlink เพราะอาจจะซับซ้อนถึงขั้นเรียก Windows API เพื่อปิดไฟล์ที่เปิดตาม Hyperlink แต่จะเปิดด้วย Code ในไฟล์หลัก เมื่อไฟล์หลักปิดจึงจะสามารถสั่งให้ปิดไฟล์ตามตัวแปรที่กำหนดได้
ช่วยแจ้งมาด้วยว่าติดปัญหาที่ Procedure ใด บรรทัดใด จะได้เข้าถึงปัญหาโดยไวครับ
Aantsugar
Member
Posts: 58 Joined: Sat Aug 06, 2016 1:29 pm
Excel Ver: 2016
#3
Post
by Aantsugar » Mon Feb 13, 2017 10:10 am
You do not have the required permissions to view the files attached to this post.
snasui
Site Admin
Posts: 30760 Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:
#4
Post
by snasui » Mon Feb 13, 2017 10:16 am
Error คืออะไร ใน Code Module ใด ที่บรรทัดใด แจ้งมาด้วยครับ
snasui
Site Admin
Posts: 30760 Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:
#6
Post
by snasui » Mon Feb 13, 2017 10:23 am
โปรแกรมฟ้องว่าอะไรแจ้งมาด้วยครับ
Aantsugar
Member
Posts: 58 Joined: Sat Aug 06, 2016 1:29 pm
Excel Ver: 2016
#7
Post
by Aantsugar » Mon Feb 13, 2017 10:28 am
แต่พอ Run Module2 แล้ว จะเกิดข้อผิดพลาดที่บรรทัด
Set msWord = App.Document.Open
ฟ้องว่า Compile error : Variable not defined คะ
รบกวนอาจารย์ว่าเกิดไรคะ
ขอบคุณคะ
snasui
Site Admin
Posts: 30760 Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:
#8
Post
by snasui » Mon Feb 13, 2017 10:46 am
เกิดจากคำสั่ง App ต้องเขียนให้เต็มเป็น Application ยกเว้นจะประกาศให้ Application เป็น App จึงจะใช้เช่นนั้นได้
ตัวอย่างการปรับ Code ครับ
Code: Select all
Sub Search()
Dim wdApp As Word.Application, msWord As Word.Document
Set wdApp = CreateObject("Word.Application")
Set msWord = Application.Documents.Open("D:\my document\Test File\TEST WORD.doc")
wdApp.Visible = True
End Sub
Aantsugar
Member
Posts: 58 Joined: Sat Aug 06, 2016 1:29 pm
Excel Ver: 2016
#9
Post
by Aantsugar » Mon Feb 13, 2017 11:07 am
ปรับ Code ตามอาจารย์ แล้ว
เกิดข้อผิดพลาดที่บรรทัด
Set msWord = Application.Documents.Open("D:\my document\Test File\TEST WORD.doc")
พอ Run ฟ้อง Error
Run-time error '438' : Object doesn't support this property or method
snasui
Site Admin
Posts: 30760 Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:
#10
Post
by snasui » Mon Feb 13, 2017 11:25 am
ปรับ Code เป็นด้านล่างครับ
Code: Select all
Set msWord = wdApp.Documents.Open("D:\my document\Test File\TEST WORD.doc")
Aantsugar
Member
Posts: 58 Joined: Sat Aug 06, 2016 1:29 pm
Excel Ver: 2016
#12
Post
by Aantsugar » Mon Feb 13, 2017 4:25 pm
อาจารย์คะ
ติดตรงอีกอย่างคะ
ตอนกด TEST ตรงหน้า
Sheet หน้าแรก แล้วเวลาจะนับถอยหลัง แล้วเปิดไฟล์ Word พร้อมกัน พอหมดเวลา ไฟล์ Excel ปิด แต่ไฟล์ Word ไม่ปิดด้วยคะ ไม่ทราบเราต้องเอา Code ไปแทรกในส่วนไหนคะถึงจะให้ไฟล์ปิดพร้อมกัน เมื่อหมดเวลาคะ ตามไฟล์แนบคะ
You do not have the required permissions to view the files attached to this post.
puriwutpokin
Guru
Posts: 3712 Joined: Fri Jan 04, 2013 9:49 pm
Location: Bangkok
Excel Ver: MS.365
#13
Post
by puriwutpokin » Mon Feb 13, 2017 5:41 pm
ลองปรับเป็น
Code: Select all
Sub Reset()
Dim Count As Range
Dim objWord As Object
Set Count = Worksheets("TIME").[B7]
Set objWord = GetObject(, "Word.Application")
On Error Resume Next
Count.Value = Count.Value - TimeValue("00:00:01")
If Count <= 0 Then
MsgBox "หมดเวลา"
Application.DisplayAlerts = False
objWord.Quit
Application.Save
Application.Quit
Exit Sub
End If
Call Timer
End Sub
snasui
Site Admin
Posts: 30760 Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:
#14
Post
by snasui » Mon Feb 13, 2017 7:53 pm
Aantsugar wrote: อาจารย์คะ
ติดตรงอีกอย่างคะ
ตอนกด TEST ตรงหน้า
Sheet หน้าแรก แล้วเวลาจะนับถอยหลัง แล้วเปิดไฟล์ Word พร้อมกัน พอหมดเวลา ไฟล์ Excel ปิด แต่ไฟล์ Word ไม่ปิดด้วยคะ ไม่ทราบเราต้องเอา Code ไปแทรกในส่วนไหนคะถึงจะให้ไฟล์ปิดพร้อมกัน เมื่อหมดเวลาคะ ตามไฟล์แนบคะ
ย้ายตัแปรเดิมไปเป็นระดับ Module ตัวอย่างตามด้านล่าง
Code: Select all
Option Explicit
Dim CountDown As Date
Dim wdApp As Word.Application, msWord As Word.Document
ตรง Procedure Reset ปรับเป็นด้านล่างครับ
Code: Select all
Sub Reset()
Dim Count As Range
Set Count = Worksheets("TIME").[B7]
On Error Resume Next
Count.Value = Count.Value - TimeValue("00:00:01")
If Count <= 0 Then
MsgBox "หมดเวลา"
Application.DisplayAlerts = False
Application.Save
Application.Quit
wdApp.Quit
Exit Sub
End If
Call Timer
End Sub
Aantsugar
Member
Posts: 58 Joined: Sat Aug 06, 2016 1:29 pm
Excel Ver: 2016
#16
Post
by Aantsugar » Wed Feb 15, 2017 10:47 am
สอบถามอีกอย่างคะ
คือ พอเวลาในคำสั่ง
ตอนเราพิมพ์ข้อมูลในไฟล์ Word มันไม่แจ้งเตือน MsgBox "หมดเวลา" ให้คะ อยากให้แสดง MsgBox "หมดเวลา" แจ้งเตือนในไฟล์ Word ด้วยคะ ขอคำแนะนำด้วยคะ
ขอบคุณคะ
ตัวอย่างตามไฟล์แนบคะ
You do not have the required permissions to view the files attached to this post.
snasui
Site Admin
Posts: 30760 Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:
#17
Post
by snasui » Wed Feb 15, 2017 6:38 pm
คำสั่งเดิมเมื่อหมดเวลามันจะปิด Word ไปด้วย ไม่ทราบว่ายังเป็นคำสั่งนั้นหรือไม่ หากยังเป็นคำสั่งนั้นเกิดการฟ้องอะไรหรือไม่ อย่างไรครับ
ในกรณีที่ถามมานี้ได้เขียนคำสั่งอะไรเพิ่มเข้าไปหรือไม่ ติดขัดบรรทัดใดครับ
Aantsugar
Member
Posts: 58 Joined: Sat Aug 06, 2016 1:29 pm
Excel Ver: 2016
#18
Post
by Aantsugar » Thu Feb 16, 2017 8:52 am
ยังใช้คำสั่งเดิมคะ ไม่ได้เขียนอะไรเพิ่มเติม เวลามันหมดจะปิด Word ไปด้วยคะ แต่ว่ามัน
ไม่แจ้งเตือน MsgBox "หมดเวลา" ในหน้า Word ถึงแม้เวลาในคำสั่ง Excel จะหมดเวลาแล้วเราก็ยังสามารถทำงานในหน้า Word ต่อคะ จนกว่าเราจะคลิกกลับไปหน้า Excel คะมันถึงจะแจ้งเตือน MsgBox "หมดเวลา" คะ
snasui
Site Admin
Posts: 30760 Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:
#19
Post
by snasui » Thu Feb 16, 2017 7:28 pm
คำสั่งเดิมคงไม่พอครับ หากทำงานใน Excel แล้วหมดเวลาแต่ไม่คลิกกล่องโต้ตอบเพื่อให้ Code ทำงานต่อโดยปิดโปรแกรม Word แต่กลับไปทำงานใน Word ต่อ งานลักษณะนี้สามารถเขียนจับเวลาด้วย Windows API ครับ
http://www.cpearson.com/excel/OnTime.aspx