Page 1 of 1
สอบถามการบันทึกอัตโนมัติ
Posted: Wed Oct 09, 2019 7:07 pm
by sakajohn
ผมต้องการให้ ิ book1 saveทุกๆ 10 วินาที
ที่ workbook
Code: Select all
Private Sub Workbook_Open()
alerttime = Now + TimeValue("00:00:10")
Application.OnTime alerttime, "EventMacro"
End Sub
Module1
Code: Select all
Public Sub EvenMacro()
ActiveWorkbook.Save
alerttime = Now + TimeValue("00:00:10")
Application.OnTime alerttime, "EventMacro"
End Sub
พอเปิดโปรแกรมฟ้อง error
can not run the macro ....... รบกวนผู้รู้ช่วยแนะนำด้วยครับ
และขอถามเพิ่มด้วยว่า code นี้ถ้าเราแชร์ไฟล์ code จะยังรันได้มั้ยครับ
Re: สอบถามการบันทึกอัตโนมัติ
Posted: Wed Oct 09, 2019 8:34 pm
by snasui

เปลี่ยนชื่อ
Public Sub EvenMacro() เป็น
Public Sub EventMacro() ครับ
Re: สอบถามการบันทึกอัตโนมัติ
Posted: Fri Oct 11, 2019 4:13 pm
by sakajohn
ขอสอบถามเพิ่มเติมครับ จากคำสั่งข้างต้น พอปิดไฟล์งาน สักพักมันก็จะเปิดขึ้นมาเอง ไม่สามารถสั่งปิดได้เพราะอะไรครับ และจะต้องแก้ไขยังไงครับ
Re: สอบถามการบันทึกอัตโนมัติ
Posted: Fri Oct 11, 2019 8:12 pm
by snasui

เพิ่ม Code สำหรับ Stop Timer ด้วย ไม่เช่นนั้น Code มันจะ Run อยู่ ปิดไปแล้วมันก็เลยเปิดขึ้นมาใหม่ได้
การ Stop สามารถเรียกใช้โดย Event
Workbook_BeforeClose สำหรับ Code สำหรับการ Stop Timer ดูได้ที่นี่ครับ
https://snasui.com/viewtopic.php?t=9147#p57194
Re: สอบถามการบันทึกอัตโนมัติ
Posted: Mon Oct 14, 2019 10:35 am
by sakajohn
เรียนอาจารย์ครับ ผมลองเขียน Code แล้วแต่ยังเปิดเองอยู่เหมือนเดิมครับ ขอคำแนะนำด้วยครับ
Code: Select all
Private Sub Workbook_BeforeClose(Cancel As Boolean)
On Error Resume Next
Application.OnTime Now + TimeValue("00:00:10"), "EventMacro", , False
'ThisWorkbook.Close
End Sub
Re: สอบถามการบันทึกอัตโนมัติ
Posted: Mon Oct 14, 2019 12:17 pm
by snasui

ตัวอย่าง Code ครับ
Code: Select all
'Code in Thisworkbook
Private Sub Workbook_BeforeClose(Cancel As Boolean)
ThisWorkbook.Save
Call StopTimer
End Sub
Private Sub Workbook_Open()
Call EventMacro
End Sub
'Code in Module1
Dim t As Date
Public Sub EventMacro()
On Error Resume Next
t = Now + TimeValue("0:00:10")
Application.OnTime t, "NextSave"
End Sub
Public Sub NextSave()
On Error Resume Next
ThisWorkbook.Save
Call EventMacro
End Sub
Public Sub StopTimer()
On Error Resume Next
Application.OnTime t, "NextSave", , False
End Sub
Re: สอบถามการบันทึกอัตโนมัติ
Posted: Tue Oct 15, 2019 9:59 am
by sakajohn
ผมขอสอบถามเพิ่มเติมครับ ไฟล์ book1 ผมทำการแชร์ไฟล์ ทั้งหมด 4 เครื่อง มี 2 เครื่องที่เปิดโปรแกรมค้างไว้ตลอด อีก 2 เครื่องให้เปิดโปรแกรมเวลาบันทึกข้อมูลจากนั้นให้ทำการปิด โดยทำการเขียน code vba
Code: Select all
Workbooks.Open Filename:="\\Account\Data (D)\Book1.xlsm"
ThisWorkbook.Activate
Application.Goto Reference:="OFFSET(R10C30,0,2,1,4)"
Selection.Copy
Workbooks("Book1.xlsm").Activate
Sheets("Sheet1").Select
Application.Goto Reference:="OFFSET(R3C1,0,1,1,1)"
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
ThisWorkbook.Activate
Application.Goto Reference:="OFFSET(R10C30,0,10,1,1)"
Selection.Copy
Workbooks("Book1.xlsm").Activate
Sheets("Sheet1").Select
Application.Goto Reference:="OFFSET(R3C1,0,5,1,1)"
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
Range("H3").Select
Selection.ClearContents
Workbooks("Book1.xlsm").Save
Workbooks("Book1.xlsm").Close
บางเครื่องเวลาสั่ง run โปรแกรม จะฟ้อง Error run-time 1004 This file is locked.Try the command again later. ที่Code จะ error
Workbooks("Book1.xlsm").Save พอจะปิดก็จะขึ้น error เหมือนเดิมครับ ต้องใช้วิธี close window ปิดทั้งหมดครับ จะแก้ไขยังไงได้บ้างครับ
Re: สอบถามการบันทึกอัตโนมัติ
Posted: Tue Oct 15, 2019 4:36 pm
by sakajohn
อาจารย์ครับ พอปิดแล้วมันก็ยังเปิดขึ้นเองอยู่นะครับ
Re: สอบถามการบันทึกอัตโนมัติ
Posted: Tue Oct 15, 2019 7:43 pm
by snasui

ไฟล์ที่แชร์กันนั้นจะต้องไม่ใช่ไฟล์ที่มี Code นามสกุลควรเป็น .xlsx แม้มี Code ก็จะไม่ทำงาน เป็นข้อกำหนดของการ Share File ครับ
ผมลองทดสอบไม่พบว่าไฟล์เกิดขึ้นมาใหม่ครับ
กรณีต้องการทดสอบเอง ให้สร้างปุ่มขึ้นมา 1 ปุ่มแล้ว Assign Procedure ที่ชื่อว่า StopTime ให้กับปุ่ม หากต้องการจะหยุดการจับเวลาให้คลิกปุ่มนี้ จากนั้นสังเกตว่า Code การจับเวลายังรันต่อเนื่องอยู่อีกหรือไม่ ถ้าไม่รันอีก แสดงว่า StopTimer ทำงานได้ผล หากปิดไฟล์ไปแล้วย่อมจะต้องไม่เปิดไฟล์ขึ้นมาใหม่ครับ และเมื่อคลิกด้วยมือแล้วทำงานได้ การเรียกใช้ด้วย Event Before Close ก็ควรจะทำงานได้เช่นกันครับ
Re: สอบถามการบันทึกอัตโนมัติ
Posted: Fri Oct 18, 2019 9:54 am
by sakajohn
สิ่งที่ผมต้องการคือ ที่เครื่อง A Book1จะทำหน้าที่เหมือนรายงานแสดงผลว่า เครื่องจักรแต่ละตัวกำลังผลิตงานอะไรอยู่และเสร็จเมื่อไหร โดยBook1 จะทำการแชร์ไฟล์และให้ เครื่อง B C D ทำการบันทึกข้อมูล ผมต้องการให้เมื่อเครื่อง B C D บันทึกข้อมูลแล้วหน้าจอเครื่อง A แสดงข้อมูลแบบ Real-Time ครับ ผมเลยกำหนดให้ Book1 ทำการ save ตัวเองทุกๆ 10 วินาที เพื่อให้ข้อมูล update ตลอดครับ แต่อาจารย์บอกว่า ไม่สามารถเขียนcodeบนไฟล์ที่แชร์ข้อมูลได้ ผมข้อคำแนะนำในการที่จะให้ได้ผลตามที่ต้องการด้วยครับ
Re: สอบถามการบันทึกอัตโนมัติ
Posted: Fri Oct 18, 2019 9:45 pm
by snasui

การแชร์ไฟล์ลักษณะการทำงานจะเป็นเช่นนี้ครับ
- ไฟล์ที่แชร์จะเป็นฐานข้อมูลหรือไฟล์ที่ใช้ทำงานร่ามกัน ไม่มี Code ใด ๆ ในไฟล์นี้
- ผู้ใช้งานแต่ละคนเปิดไฟล์ที่แชร์ เมื่อจะทำงาน ไม่ว่าจะเปิดขึ้นมาด้วยมือหรือมีไฟล์โปรแกรมเปิดขึ้นมาก็ตามให้ Save ก่อน 1 ครั้ง การ Save นี้สำคัญ ทำเพื่อให้ไฟล์ที่เปิดขึ้นมานั้นมีการ Update ล่าสุดเป็นปัจจุบันหากมีการทำงานพร้อมกันหลายคน
- ทำงานเสร็จแล้ว Save อีกรอบ (ลักษณะจะเป็น Save > บันทึก > Save)
Re: สอบถามการบันทึกอัตโนมัติ
Posted: Sat Oct 19, 2019 9:19 am
by sakajohn
ขอบคุณครับ