: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

สอบถามการบันทึกอัตโนมัติ

ฟอรัมถาม-ตอบปัญหาการใช้งานสูตรและฟังก์ชัน Excel
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. กรุณาแจ้งผลการใช้งานเมื่อได้รับคำตอบว่าตรงกับความต้องการหรือไม่
sakajohn
Member
Member
Posts: 229
Joined: Tue Aug 06, 2013 10:55 am
Excel Ver: 2010

สอบถามการบันทึกอัตโนมัติ

#1

Post 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 จะยังรันได้มั้ยครับ
You do not have the required permissions to view the files attached to this post.
User avatar
snasui
Site Admin
Site Admin
Posts: 31256
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: สอบถามการบันทึกอัตโนมัติ

#2

Post by snasui »

:D เปลี่ยนชื่อ Public Sub EvenMacro() เป็น Public Sub EventMacro() ครับ
sakajohn
Member
Member
Posts: 229
Joined: Tue Aug 06, 2013 10:55 am
Excel Ver: 2010

Re: สอบถามการบันทึกอัตโนมัติ

#3

Post by sakajohn »

ขอสอบถามเพิ่มเติมครับ จากคำสั่งข้างต้น พอปิดไฟล์งาน สักพักมันก็จะเปิดขึ้นมาเอง ไม่สามารถสั่งปิดได้เพราะอะไรครับ และจะต้องแก้ไขยังไงครับ
User avatar
snasui
Site Admin
Site Admin
Posts: 31256
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: สอบถามการบันทึกอัตโนมัติ

#4

Post by snasui »

:D เพิ่ม Code สำหรับ Stop Timer ด้วย ไม่เช่นนั้น Code มันจะ Run อยู่ ปิดไปแล้วมันก็เลยเปิดขึ้นมาใหม่ได้

การ Stop สามารถเรียกใช้โดย Event Workbook_BeforeClose สำหรับ Code สำหรับการ Stop Timer ดูได้ที่นี่ครับ https://snasui.com/viewtopic.php?t=9147#p57194
sakajohn
Member
Member
Posts: 229
Joined: Tue Aug 06, 2013 10:55 am
Excel Ver: 2010

Re: สอบถามการบันทึกอัตโนมัติ

#5

Post 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
You do not have the required permissions to view the files attached to this post.
User avatar
snasui
Site Admin
Site Admin
Posts: 31256
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: สอบถามการบันทึกอัตโนมัติ

#6

Post by snasui »

:D ตัวอย่าง 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
sakajohn
Member
Member
Posts: 229
Joined: Tue Aug 06, 2013 10:55 am
Excel Ver: 2010

Re: สอบถามการบันทึกอัตโนมัติ

#7

Post 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 ปิดทั้งหมดครับ จะแก้ไขยังไงได้บ้างครับ
You do not have the required permissions to view the files attached to this post.
sakajohn
Member
Member
Posts: 229
Joined: Tue Aug 06, 2013 10:55 am
Excel Ver: 2010

Re: สอบถามการบันทึกอัตโนมัติ

#8

Post by sakajohn »

อาจารย์ครับ พอปิดแล้วมันก็ยังเปิดขึ้นเองอยู่นะครับ
User avatar
snasui
Site Admin
Site Admin
Posts: 31256
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: สอบถามการบันทึกอัตโนมัติ

#9

Post by snasui »

:D ไฟล์ที่แชร์กันนั้นจะต้องไม่ใช่ไฟล์ที่มี Code นามสกุลควรเป็น .xlsx แม้มี Code ก็จะไม่ทำงาน เป็นข้อกำหนดของการ Share File ครับ

ผมลองทดสอบไม่พบว่าไฟล์เกิดขึ้นมาใหม่ครับ

กรณีต้องการทดสอบเอง ให้สร้างปุ่มขึ้นมา 1 ปุ่มแล้ว Assign Procedure ที่ชื่อว่า StopTime ให้กับปุ่ม หากต้องการจะหยุดการจับเวลาให้คลิกปุ่มนี้ จากนั้นสังเกตว่า Code การจับเวลายังรันต่อเนื่องอยู่อีกหรือไม่ ถ้าไม่รันอีก แสดงว่า StopTimer ทำงานได้ผล หากปิดไฟล์ไปแล้วย่อมจะต้องไม่เปิดไฟล์ขึ้นมาใหม่ครับ และเมื่อคลิกด้วยมือแล้วทำงานได้ การเรียกใช้ด้วย Event Before Close ก็ควรจะทำงานได้เช่นกันครับ
sakajohn
Member
Member
Posts: 229
Joined: Tue Aug 06, 2013 10:55 am
Excel Ver: 2010

Re: สอบถามการบันทึกอัตโนมัติ

#10

Post by sakajohn »

สิ่งที่ผมต้องการคือ ที่เครื่อง A Book1จะทำหน้าที่เหมือนรายงานแสดงผลว่า เครื่องจักรแต่ละตัวกำลังผลิตงานอะไรอยู่และเสร็จเมื่อไหร โดยBook1 จะทำการแชร์ไฟล์และให้ เครื่อง B C D ทำการบันทึกข้อมูล ผมต้องการให้เมื่อเครื่อง B C D บันทึกข้อมูลแล้วหน้าจอเครื่อง A แสดงข้อมูลแบบ Real-Time ครับ ผมเลยกำหนดให้ Book1 ทำการ save ตัวเองทุกๆ 10 วินาที เพื่อให้ข้อมูล update ตลอดครับ แต่อาจารย์บอกว่า ไม่สามารถเขียนcodeบนไฟล์ที่แชร์ข้อมูลได้ ผมข้อคำแนะนำในการที่จะให้ได้ผลตามที่ต้องการด้วยครับ
User avatar
snasui
Site Admin
Site Admin
Posts: 31256
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: สอบถามการบันทึกอัตโนมัติ

#11

Post by snasui »

:D การแชร์ไฟล์ลักษณะการทำงานจะเป็นเช่นนี้ครับ
  1. ไฟล์ที่แชร์จะเป็นฐานข้อมูลหรือไฟล์ที่ใช้ทำงานร่ามกัน ไม่มี Code ใด ๆ ในไฟล์นี้
  2. ผู้ใช้งานแต่ละคนเปิดไฟล์ที่แชร์ เมื่อจะทำงาน ไม่ว่าจะเปิดขึ้นมาด้วยมือหรือมีไฟล์โปรแกรมเปิดขึ้นมาก็ตามให้ Save ก่อน 1 ครั้ง การ Save นี้สำคัญ ทำเพื่อให้ไฟล์ที่เปิดขึ้นมานั้นมีการ Update ล่าสุดเป็นปัจจุบันหากมีการทำงานพร้อมกันหลายคน
  3. ทำงานเสร็จแล้ว Save อีกรอบ (ลักษณะจะเป็น Save > บันทึก > Save)
sakajohn
Member
Member
Posts: 229
Joined: Tue Aug 06, 2013 10:55 am
Excel Ver: 2010

Re: สอบถามการบันทึกอัตโนมัติ

#12

Post by sakajohn »

ขอบคุณครับ
Post Reply