สอบถาม การสั่งให้ VBA เลือกไม่ Save ไฟล์ที่สั่งให้ VBA เปิดไฟล์มาเพื่อคัดลอกข้อมูล
Posted: Wed Mar 17, 2021 7:34 pm
สอบถาม การสั่งให้ VBA เลือกไม่ Save ไฟล์ที่สั่งให้ VBA เปิดไฟล์มาเพื่อคัดลอกข้อมูล
เนื่องจากผมต้องการดึงฐานข้อมูลจากไฟล์ database ไปยังไฟล์ Invoice เพื่อจะใช้ Vlookup หรือ Xlookup ครับ
ผมลองใช้สูตรด้านล่างแล้ว จะขึ้น pop-up ให้เลือก Save หรือ ไม่ Save ทุกครั้ง เนื่องจากไฟล์ sheet ในไฟล์ database มีการ lock sheet ไว้ และผมลองไม่ lock sheet ปรากฎว่าไม่มี pop-up ใดๆเด้งมาถามครับ VBA ทำงานได้ปกติ
ผมจึงสรุปได้ว่าน่าจะเป็นเพราะไฟล์ที่ไป copy ข้อมูลมามีการ Lock Sheet ผมเลยอยากมาถามว่ามีวีธีการไหน ให้ VBA มันเลือก ไม่ Save ไฟล์ database รึเปล่าครับ
ปล.ผมได้แนบไฟล์ .rar ไว้แล้วนะครับ
เนื่องจากผมต้องการดึงฐานข้อมูลจากไฟล์ database ไปยังไฟล์ Invoice เพื่อจะใช้ Vlookup หรือ Xlookup ครับ
ผมลองใช้สูตรด้านล่างแล้ว จะขึ้น pop-up ให้เลือก Save หรือ ไม่ Save ทุกครั้ง เนื่องจากไฟล์ sheet ในไฟล์ database มีการ lock sheet ไว้ และผมลองไม่ lock sheet ปรากฎว่าไม่มี pop-up ใดๆเด้งมาถามครับ VBA ทำงานได้ปกติ
ผมจึงสรุปได้ว่าน่าจะเป็นเพราะไฟล์ที่ไป copy ข้อมูลมามีการ Lock Sheet ผมเลยอยากมาถามว่ามีวีธีการไหน ให้ VBA มันเลือก ไม่ Save ไฟล์ database รึเปล่าครับ
ปล.ผมได้แนบไฟล์ .rar ไว้แล้วนะครับ
Code: Select all
Option Explicit
Dim Data_Folder As String
Dim File_Name As String
Dim Data_Workbook As Variant
Sub Update_Database()
Clear_Existed_Data
Update_Data
End Sub
Private Sub Clear_Existed_Data()
Application.ScreenUpdating = False
Range("Table_DB").ClearContents
Sheets("DB_Product").ListObjects("Table_DB").Resize Range("$A$4:$F$5")
End Sub
Private Sub Update_Data()
Set Data_Workbook = Workbooks.Open(ActiveWorkbook.Path & "\" & ActiveSheet.[Data_Folder] & "\" & ActiveSheet.[File_Name], , True)
ActiveWorkbook.Worksheets("DB_Product").Select
Range("Table_DB[[Barcode]:[Product Code]],Table_DB[[Detail]:[Created Date]]").Copy
Windows("Invoice.xlsm").Activate
Range("A5").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Data_Workbook.Close
Application.ScreenUpdating = True
End Sub