Page 1 of 1

VBA: ทำสูตร save หลายแถว จาก sheet หนึ่ง ให้ไปต่อในแถวสุดท้ายของ workbook ใหม่

Posted: Fri Feb 12, 2021 3:53 pm
by Max_Amontep
file สำหรับ นับ stock ครับ
sheet ชื่อ stock take จะเป็น file ที่เอาไว้ใช้สำหรับให้น้อง scan บาร์โค้ดซึ่งเป็น serial number ของ product
เมือ scan ครบแล้วในแต่ละ location จะให้กด save และข้อมูลที่อยู่ในช่วง J2:J55 ให้ไปบันทึกอยู่ใน workbook ใหม่ ชื่อ data
และเมือมีการ save ใหม่ก็จะมีการบันทึกต่อไปเรื่อยๆ......

แต่พยายมเขียนเองแล้วติดตรงที่ว่า code ดึงมาเฉพาะแค่ serial แรก ไม่มาทั้งหมด (จริงแล้วอยากให้ได้ช่วงข้อมูลที่เป็นแบบการดึงแบบ End(xldown) เพราะ serial ในแต่ละ location ก็จะไม่เท่ากัน ไม่ได้เป็น 54 pcs เสมอ

Code: Select all

Sub save2()

Application.ScreenUpdating = False

    Dim wbMaster As Workbook
    Dim wbLocal As Workbook
    Dim masterNextRow As Long
    
    Set wbLocal = ThisWorkbook
    
    Set wbMaster = Workbooks.Open("D:\Desktop\Stock take\Data.xlsx")
    
    	masterNextRow = wbMaster.Worksheets("Data").Range("A" & 
	wbMaster.Worksheets("Data").Rows.Count).End(xlUp).Offset(1).Row
    
    wbMaster.Worksheets("Data").Cells(masterNextRow, 1).Value = wbLocal.Worksheets("Scan").Range("J2").Value
    
    wbMaster.Close True
    
    wbLocal.Worksheets("Scan").Range("J2:J55").Value = ""
        
    MsgBox "saved"
    
Application.ScreenUpdating = True

End Sub


Re: VBA: ทำสูตร save หลายแถว จาก sheet หนึ่ง ให้ไปต่อในแถวสุดท้ายของ workbook ใหม่

Posted: Fri Feb 12, 2021 4:51 pm
by puriwutpokin
แบบนี้หรือเปล่าครับลองดูครับ

Code: Select all

Sub save2()
Application.ScreenUpdating = False
    Dim wbMaster As Workbook
    Dim wbLocal As Workbook
    Dim masterNextRow As Long
    Set wbLocal = ThisWorkbook
    Set wbMaster = Workbooks.Open("C:\Users\Stock Manager\Downloads\Data.xlsx") 'D:\Desktop\Stock take\Data.xlsx
    masterNextRow = wbMaster.Worksheets("Data").Range("A" & wbMaster.Worksheets("Data").Rows.Count).End(xlUp).Offset(1).Row
    wbLocal.Activate
    wbLocal.Worksheets("Scan").Range("b2:b" & Range("b" & Worksheets("Scan").Rows.Count).End(xlUp).Row).SpecialCells(xlCellTypeConstants, 23).Copy
    wbMaster.Worksheets("Data").Cells(masterNextRow, 1).PasteSpecial xlPasteValues
    Application.CutCopyMode = False
   wbMaster.Close True
    wbLocal.Worksheets("Scan").Range("b2:b55").Value = ""
Application.ScreenUpdating = True
    MsgBox "Saved"
End Sub