: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 ที่กำหนด Hyperlink ปิดแฟ้มอัตโนมัติ

ฟอรัมถาม-ตอบปัญหาการใช้งาน 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. กรุณาแจ้งผลการใช้งานเมื่อได้รับคำตอบว่าตรงกับความต้องการหรือไม่
Aantsugar
Member
Member
Posts: 58
Joined: Sat Aug 06, 2016 1:29 pm
Excel Ver: 2016

คำสั่ง VBA ที่กำหนด Hyperlink ปิดแฟ้มอัตโนมัติ

#1

Post by Aantsugar »

อยากให้ไฟล์ที่เราแนบลิงค์ ปิดอัตโนมัติ เมื่อเราคลิกไฟล์ลิงค์นั้นไปแล้ว เมื่อคำสั่งเวลาในไฟล์ Excel หมดเวลาแล้ว ให้ไฟล์ที่เราคลิกลิงค์ ปิดไฟล์นั้นอัตโนมัติเหมือนกันคะ ไฟล์ลิงค์เป็น Word เราต้องเขียน คำสั่ง VBA ในไฟล์ Excel หรือ ไฟล์ Word คะ พอกดคลิกที่ไฟล์ Excel ที่ TEST เวลาจะนับถอยหลัง พอหมดเวลา ไฟล์ Excel ปิด แต่ไฟล์ที่เราคลิกลิงค์ไปไม่ปิดเองอัตโนมัติคะ :roll: :roll: Code ที่เขียนมาที่ รบกวนอาจารย์ช่วยดูว่าติดอะไรตรงไหนคะ ตามแนบไฟล์ ขอบคุณคะ :D

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.
User avatar
snasui
Site Admin
Site Admin
Posts: 30760
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: คำสั่ง VBA ที่กำหนด Hyperlink ปิดแฟ้มอัตโนมัติ

#2

Post by snasui »

:D ช่วยปลดรหัสการเข้าถึง Code ด้วยครับ Code ที่เขียนมาตามโพสต์ด้านบน ไม่สื่อถึงสิ่งที่ต้องการจะทำคือสั่งให้ปิดไฟล์ที่เปิดมาตาม Hyperlink

แนวทางการเขียน Code ให้ควบคุม Microsoft Office อื่นนั้น ควรกำหนดตัวแปรให้กับโปรแกรมนั้น ๆ ที่จะเปิด ซึ่งไม่ใช่เป็นการเปิดด้วย Hyperlink เพราะอาจจะซับซ้อนถึงขั้นเรียก Windows API เพื่อปิดไฟล์ที่เปิดตาม Hyperlink แต่จะเปิดด้วย Code ในไฟล์หลัก เมื่อไฟล์หลักปิดจึงจะสามารถสั่งให้ปิดไฟล์ตามตัวแปรที่กำหนดได้

ช่วยแจ้งมาด้วยว่าติดปัญหาที่ Procedure ใด บรรทัดใด จะได้เข้าถึงปัญหาโดยไวครับ
Aantsugar
Member
Member
Posts: 58
Joined: Sat Aug 06, 2016 1:29 pm
Excel Ver: 2016

Re: คำสั่ง VBA ที่กำหนด Hyperlink ปิดแฟ้มอัตโนมัติ

#3

Post by Aantsugar »

:D ขอโทษคะที่ลืมปลดล็อคไฟล์ :lol: ลองเขียนปรับ Code ดูใหม่แต่พอ Run แล้ว Error คะอาจารย์
รบกวนอาจารย์ดู Code ให้คำชี้แนะด้วยคะ ตามไฟล์แนบ :roll: :roll: :D
You do not have the required permissions to view the files attached to this post.
User avatar
snasui
Site Admin
Site Admin
Posts: 30760
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: คำสั่ง VBA ที่กำหนด Hyperlink ปิดแฟ้มอัตโนมัติ

#4

Post by snasui »

:D Error คืออะไร ใน Code Module ใด ที่บรรทัดใด แจ้งมาด้วยครับ
Aantsugar
Member
Member
Posts: 58
Joined: Sat Aug 06, 2016 1:29 pm
Excel Ver: 2016

Re: คำสั่ง VBA ที่กำหนด Hyperlink ปิดแฟ้มอัตโนมัติ

#5

Post by Aantsugar »

Error ที่ Module2 คะ บรรทัดที่ 6 คะ :roll: :cry: :D
User avatar
snasui
Site Admin
Site Admin
Posts: 30760
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: คำสั่ง VBA ที่กำหนด Hyperlink ปิดแฟ้มอัตโนมัติ

#6

Post by snasui »

:D โปรแกรมฟ้องว่าอะไรแจ้งมาด้วยครับ
Aantsugar
Member
Member
Posts: 58
Joined: Sat Aug 06, 2016 1:29 pm
Excel Ver: 2016

Re: คำสั่ง VBA ที่กำหนด Hyperlink ปิดแฟ้มอัตโนมัติ

#7

Post by Aantsugar »

แต่พอ Run Module2 แล้ว จะเกิดข้อผิดพลาดที่บรรทัด
Set msWord = App.Document.Open
ฟ้องว่า Compile error : Variable not defined คะ
รบกวนอาจารย์ว่าเกิดไรคะ
ขอบคุณคะ :D
User avatar
snasui
Site Admin
Site Admin
Posts: 30760
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: คำสั่ง VBA ที่กำหนด Hyperlink ปิดแฟ้มอัตโนมัติ

#8

Post by snasui »

:D เกิดจากคำสั่ง 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
Member
Posts: 58
Joined: Sat Aug 06, 2016 1:29 pm
Excel Ver: 2016

Re: คำสั่ง VBA ที่กำหนด Hyperlink ปิดแฟ้มอัตโนมัติ

#9

Post by Aantsugar »

ปรับ 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
:cry: :? :roll:
User avatar
snasui
Site Admin
Site Admin
Posts: 30760
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: คำสั่ง VBA ที่กำหนด Hyperlink ปิดแฟ้มอัตโนมัติ

#10

Post by snasui »

:D ปรับ Code เป็นด้านล่างครับ

Code: Select all

Set msWord = wdApp.Documents.Open("D:\my document\Test File\TEST WORD.doc")
Aantsugar
Member
Member
Posts: 58
Joined: Sat Aug 06, 2016 1:29 pm
Excel Ver: 2016

Re: คำสั่ง VBA ที่กำหนด Hyperlink ปิดแฟ้มอัตโนมัติ

#11

Post by Aantsugar »

ขอบคุณคะ :thup: อาจารย์ :D :D :D
Aantsugar
Member
Member
Posts: 58
Joined: Sat Aug 06, 2016 1:29 pm
Excel Ver: 2016

Re: คำสั่ง VBA ที่กำหนด Hyperlink ปิดแฟ้มอัตโนมัติ

#12

Post by Aantsugar »

อาจารย์คะ :D ติดตรงอีกอย่างคะ :roll:
ตอนกด TEST ตรงหน้า Sheet หน้าแรก แล้วเวลาจะนับถอยหลัง แล้วเปิดไฟล์ Word พร้อมกัน พอหมดเวลา ไฟล์ Excel ปิด แต่ไฟล์ Word ไม่ปิดด้วยคะ ไม่ทราบเราต้องเอา Code ไปแทรกในส่วนไหนคะถึงจะให้ไฟล์ปิดพร้อมกัน เมื่อหมดเวลาคะ ตามไฟล์แนบคะ :roll: :roll:
You do not have the required permissions to view the files attached to this post.
User avatar
puriwutpokin
Guru
Guru
Posts: 3712
Joined: Fri Jan 04, 2013 9:49 pm
Location: Bangkok
Excel Ver: MS.365

Re: คำสั่ง VBA ที่กำหนด Hyperlink ปิดแฟ้มอัตโนมัติ

#13

Post by puriwutpokin »

ลองปรับเป็น

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
:shock: :roll: :D
User avatar
snasui
Site Admin
Site Admin
Posts: 30760
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: คำสั่ง VBA ที่กำหนด Hyperlink ปิดแฟ้มอัตโนมัติ

#14

Post by snasui »

Aantsugar wrote:อาจารย์คะ :D ติดตรงอีกอย่างคะ :roll:
ตอนกด TEST ตรงหน้า Sheet หน้าแรก แล้วเวลาจะนับถอยหลัง แล้วเปิดไฟล์ Word พร้อมกัน พอหมดเวลา ไฟล์ Excel ปิด แต่ไฟล์ Word ไม่ปิดด้วยคะ ไม่ทราบเราต้องเอา Code ไปแทรกในส่วนไหนคะถึงจะให้ไฟล์ปิดพร้อมกัน เมื่อหมดเวลาคะ ตามไฟล์แนบคะ :roll: :roll:
:D ย้ายตัแปรเดิมไปเป็นระดับ 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
Member
Posts: 58
Joined: Sat Aug 06, 2016 1:29 pm
Excel Ver: 2016

Re: คำสั่ง VBA ที่กำหนด Hyperlink ปิดแฟ้มอัตโนมัติ

#15

Post by Aantsugar »

ขอบคุณอาจารย์ snasui และ คุณ puriwutpokin นะคะ :D :cp: :cp: :thup:
Aantsugar
Member
Member
Posts: 58
Joined: Sat Aug 06, 2016 1:29 pm
Excel Ver: 2016

Re: คำสั่ง VBA ที่กำหนด Hyperlink ปิดแฟ้มอัตโนมัติ

#16

Post by Aantsugar »

สอบถามอีกอย่างคะ :D คือ พอเวลาในคำสั่ง
  • ไฟล์ Excel หมดเวลา
ตอนเราพิมพ์ข้อมูลในไฟล์ Word มันไม่แจ้งเตือน MsgBox "หมดเวลา" ให้คะ อยากให้แสดง MsgBox "หมดเวลา" แจ้งเตือนในไฟล์ Word ด้วยคะ ขอคำแนะนำด้วยคะ :roll: ขอบคุณคะ :D
ตัวอย่างตามไฟล์แนบคะ
You do not have the required permissions to view the files attached to this post.
User avatar
snasui
Site Admin
Site Admin
Posts: 30760
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: คำสั่ง VBA ที่กำหนด Hyperlink ปิดแฟ้มอัตโนมัติ

#17

Post by snasui »

:D คำสั่งเดิมเมื่อหมดเวลามันจะปิด Word ไปด้วย ไม่ทราบว่ายังเป็นคำสั่งนั้นหรือไม่ หากยังเป็นคำสั่งนั้นเกิดการฟ้องอะไรหรือไม่ อย่างไรครับ

ในกรณีที่ถามมานี้ได้เขียนคำสั่งอะไรเพิ่มเข้าไปหรือไม่ ติดขัดบรรทัดใดครับ
Aantsugar
Member
Member
Posts: 58
Joined: Sat Aug 06, 2016 1:29 pm
Excel Ver: 2016

Re: คำสั่ง VBA ที่กำหนด Hyperlink ปิดแฟ้มอัตโนมัติ

#18

Post by Aantsugar »

ยังใช้คำสั่งเดิมคะ ไม่ได้เขียนอะไรเพิ่มเติม เวลามันหมดจะปิด Word ไปด้วยคะ แต่ว่ามัน
  • ไม่แจ้งเตือน MsgBox "หมดเวลา" ในหน้า Word
ถึงแม้เวลาในคำสั่ง Excel จะหมดเวลาแล้วเราก็ยังสามารถทำงานในหน้า Word ต่อคะ จนกว่าเราจะคลิกกลับไปหน้า Excel คะมันถึงจะแจ้งเตือน MsgBox "หมดเวลา" คะ :D
User avatar
snasui
Site Admin
Site Admin
Posts: 30760
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: คำสั่ง VBA ที่กำหนด Hyperlink ปิดแฟ้มอัตโนมัติ

#19

Post by snasui »

:D คำสั่งเดิมคงไม่พอครับ หากทำงานใน Excel แล้วหมดเวลาแต่ไม่คลิกกล่องโต้ตอบเพื่อให้ Code ทำงานต่อโดยปิดโปรแกรม Word แต่กลับไปทำงานใน Word ต่อ งานลักษณะนี้สามารถเขียนจับเวลาด้วย Windows API ครับ :arrow: http://www.cpearson.com/excel/OnTime.aspx
Post Reply