Page 1 of 1

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

Posted: Sat Feb 11, 2017 5:04 pm
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

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

Posted: Sat Feb 11, 2017 6:14 pm
by snasui
:D ช่วยปลดรหัสการเข้าถึง Code ด้วยครับ Code ที่เขียนมาตามโพสต์ด้านบน ไม่สื่อถึงสิ่งที่ต้องการจะทำคือสั่งให้ปิดไฟล์ที่เปิดมาตาม Hyperlink

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

ช่วยแจ้งมาด้วยว่าติดปัญหาที่ Procedure ใด บรรทัดใด จะได้เข้าถึงปัญหาโดยไวครับ

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

Posted: Mon Feb 13, 2017 10:10 am
by Aantsugar
:D ขอโทษคะที่ลืมปลดล็อคไฟล์ :lol: ลองเขียนปรับ Code ดูใหม่แต่พอ Run แล้ว Error คะอาจารย์
รบกวนอาจารย์ดู Code ให้คำชี้แนะด้วยคะ ตามไฟล์แนบ :roll: :roll: :D

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

Posted: Mon Feb 13, 2017 10:16 am
by snasui
:D Error คืออะไร ใน Code Module ใด ที่บรรทัดใด แจ้งมาด้วยครับ

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

Posted: Mon Feb 13, 2017 10:20 am
by Aantsugar
Error ที่ Module2 คะ บรรทัดที่ 6 คะ :roll: :cry: :D

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

Posted: Mon Feb 13, 2017 10:23 am
by snasui
:D โปรแกรมฟ้องว่าอะไรแจ้งมาด้วยครับ

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

Posted: Mon Feb 13, 2017 10:28 am
by Aantsugar
แต่พอ Run Module2 แล้ว จะเกิดข้อผิดพลาดที่บรรทัด
Set msWord = App.Document.Open
ฟ้องว่า Compile error : Variable not defined คะ
รบกวนอาจารย์ว่าเกิดไรคะ
ขอบคุณคะ :D

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

Posted: Mon Feb 13, 2017 10:46 am
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

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

Posted: Mon Feb 13, 2017 11:07 am
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:

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

Posted: Mon Feb 13, 2017 11:25 am
by snasui
:D ปรับ Code เป็นด้านล่างครับ

Code: Select all

Set msWord = wdApp.Documents.Open("D:\my document\Test File\TEST WORD.doc")

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

Posted: Mon Feb 13, 2017 11:49 am
by Aantsugar
ขอบคุณคะ :thup: อาจารย์ :D :D :D

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

Posted: Mon Feb 13, 2017 4:25 pm
by Aantsugar
อาจารย์คะ :D ติดตรงอีกอย่างคะ :roll:
ตอนกด TEST ตรงหน้า Sheet หน้าแรก แล้วเวลาจะนับถอยหลัง แล้วเปิดไฟล์ Word พร้อมกัน พอหมดเวลา ไฟล์ Excel ปิด แต่ไฟล์ Word ไม่ปิดด้วยคะ ไม่ทราบเราต้องเอา Code ไปแทรกในส่วนไหนคะถึงจะให้ไฟล์ปิดพร้อมกัน เมื่อหมดเวลาคะ ตามไฟล์แนบคะ :roll: :roll:

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

Posted: Mon Feb 13, 2017 5:41 pm
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

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

Posted: Mon Feb 13, 2017 7:53 pm
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

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

Posted: Tue Feb 14, 2017 8:53 am
by Aantsugar
ขอบคุณอาจารย์ snasui และ คุณ puriwutpokin นะคะ :D :cp: :cp: :thup:

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

Posted: Wed Feb 15, 2017 10:47 am
by Aantsugar
สอบถามอีกอย่างคะ :D คือ พอเวลาในคำสั่ง
  • ไฟล์ Excel หมดเวลา
ตอนเราพิมพ์ข้อมูลในไฟล์ Word มันไม่แจ้งเตือน MsgBox "หมดเวลา" ให้คะ อยากให้แสดง MsgBox "หมดเวลา" แจ้งเตือนในไฟล์ Word ด้วยคะ ขอคำแนะนำด้วยคะ :roll: ขอบคุณคะ :D
ตัวอย่างตามไฟล์แนบคะ

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

Posted: Wed Feb 15, 2017 6:38 pm
by snasui
:D คำสั่งเดิมเมื่อหมดเวลามันจะปิด Word ไปด้วย ไม่ทราบว่ายังเป็นคำสั่งนั้นหรือไม่ หากยังเป็นคำสั่งนั้นเกิดการฟ้องอะไรหรือไม่ อย่างไรครับ

ในกรณีที่ถามมานี้ได้เขียนคำสั่งอะไรเพิ่มเข้าไปหรือไม่ ติดขัดบรรทัดใดครับ

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

Posted: Thu Feb 16, 2017 8:52 am
by Aantsugar
ยังใช้คำสั่งเดิมคะ ไม่ได้เขียนอะไรเพิ่มเติม เวลามันหมดจะปิด Word ไปด้วยคะ แต่ว่ามัน
  • ไม่แจ้งเตือน MsgBox "หมดเวลา" ในหน้า Word
ถึงแม้เวลาในคำสั่ง Excel จะหมดเวลาแล้วเราก็ยังสามารถทำงานในหน้า Word ต่อคะ จนกว่าเราจะคลิกกลับไปหน้า Excel คะมันถึงจะแจ้งเตือน MsgBox "หมดเวลา" คะ :D

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

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