Page 1 of 1

ต้องการดึงข้อมูลล่าสุดของวัน ไปวางอีกไฟล์ โดยใช้ code vba

Posted: Tue Mar 19, 2024 9:51 pm
by March201711
เช่น ต้องการ copy ข้อมูลสุดท้ายของเดือนที่ sheet "0324" คือ วันที่ 12/3/24 ไปวางไว้ที่ File : Copy_runLastdata ที่ sheet "0324" ต่อลงไปเรื่อยๆ แต่อยากให้ code มีความยึดหยุ่นน่ะค่ะ ต้องปรับเปลี่ยน code vba อย่างไรคะ

Code: Select all

Sub CopyData_to_otherFile()
'
' CopyData_to_otherFile Macro
'

'
    Range("B8").Select
    Selection.End(xlDown).Select
    Range(Selection, Selection.End(xlToRight)).Select
    Selection.Copy
    Range("J18").Select
    Windows("Copy_runLastdata.xlsx").Activate
    Sheets("0324").Select
    Range("B18").Select
    Selection.End(xlUp).Select
    Range("B3").Select
    Selection.End(xlDown).Select
    Range("B21").Select
    ActiveSheet.Paste
    Range("G17").Select
    Windows("Test_2024.xlsm").Activate
    Range("J15").Select
End Sub


Re: ต้องการดึงข้อมูลล่าสุดของวัน ไปวางอีกไฟล์ โดยใช้ code vba

Posted: Wed Mar 20, 2024 11:40 am
by snasui
:D ตัวอย่างการปรับ Code ครับ

Code: Select all

'Other code
Dim srb As Workbook, tgb As Workbook, srcRngs As Range

Set srb = ThisWorkbook
Set tgb = Workbooks("Copy_runLastdata.xlsx")

With srb.Worksheets("0324")
    Set srcRngs = .Range("b" & .Rows.Count).End(xlUp).Resize(, 4)
End With
With tgb.Worksheets("0324")
    .Range("b" & .Rows.Count).End(xlUp).Offset(1, 0).Resize(, 4).Value = srcRngs.Value
End With
'Other code

Re: ต้องการดึงข้อมูลล่าสุดของวัน ไปวางอีกไฟล์ โดยใช้ code vba

Posted: Wed Mar 20, 2024 9:37 pm
by March201711
ค่ะ ได้แล้วค่ะ แต่ติดปัญหานิดนึงค่ะ ตรงนี้

Code: Select all

 With srb.Worksheets("0324")
 
With tgb.Worksheets("0324")  
ถ้าเดือนถัดไป เป็นเดือน 04 ที่ sheet 0424 ต้องมาเปลี่ยนที่ code vba เอง อยากให้ code รู้ได้เองว่าเป็นเดือนที่ทำ เป็นเดือน 04 เดือนปัจจุบันค่ะ

Re: ต้องการดึงข้อมูลล่าสุดของวัน ไปวางอีกไฟล์ โดยใช้ code vba

Posted: Wed Mar 20, 2024 10:28 pm
by puriwutpokin
ปรับตามนี้ครับ

Code: Select all

'Other code
'Other code
Dim srb As Workbook, tgb As Workbook, srcRngs As Range, myy As String

Set srb = ThisWorkbook
Set tgb = Workbooks("Copy_runLastdata.xlsx")
myy = Format(Date, "mmyy")
With srb.Worksheets(myy)
    Set srcRngs = .Range("b" & .Rows.Count).End(xlUp).Resize(, 4)
End With
With tgb.Worksheets(myy)
    .Range("b" & .Rows.Count).End(xlUp).Offset(1, 0).Resize(, 4).Value = srcRngs.Value
End With
'Other code

Re: ต้องการดึงข้อมูลล่าสุดของวัน ไปวางอีกไฟล์ โดยใช้ code vba

Posted: Thu Mar 21, 2024 9:15 pm
by March201711
ได้เพิ่มบรรทัด total ที่ Row25 พอกดรันข้อมูลแล้ว วันที่ 12-03-2024 ไม่มาคะ มีแต่ Total มาแทน ค่ะ ต้องปรับ code vba อย่างไรคะ

Re: ต้องการดึงข้อมูลล่าสุดของวัน ไปวางอีกไฟล์ โดยใช้ code vba

Posted: Thu Mar 21, 2024 10:32 pm
by puriwutpokin
ปรับตามนี้

Code: Select all

Sub CopyData_to_otherFile()
Dim srb As Workbook, tgb As Workbook, srcRngs As Range, x As Long
Set srb = ThisWorkbook
Set tgb = Workbooks("Copy_runLastdata.xlsx")
myy = Format(Date, "mmyy")
With srb.Worksheets(myy)
x = Application.Match(9E+99, .Range("b1:b999"))
    Set srcRngs = .Range("b" & x).Resize(, 4)
End With
With tgb.Worksheets(myy)
    .Range("b" & .Rows.Count).End(xlUp).Offset(1, 0).Resize(, 4).Value = srcRngs.Value
End With
End Sub

Re: ต้องการดึงข้อมูลล่าสุดของวัน ไปวางอีกไฟล์ โดยใช้ code vba

Posted: Thu Mar 21, 2024 11:03 pm
by March201711
รบกวนสอบถามอีกนิดนึงค่ะ พอดึไฟล์ที่ใช้งานจริง จะมี ไฟล์นึงที่ใช้รัน marco ต่างหากโดยเฉพาะ เพราะไฟล์อื่นๆ ที่ได้จะเอามาจากแหล่งอื่น จึงไม่สามารถ สร้างปุ่มที่รัน marco ได้เฉพาะ ถ้าไฟล์เพิ่มอีกไฟล์นึงเป็นไฟล์งานที่ใช้สำหรับการรัน marco คือ file : Main_RunData.xlsx ซึ่ง ทั้งหมดมี 3 file ของการทำงาน คือ File ที่ 1.Main_RunData, File ที่ 2.Test_2024_adition toal, File ที่ 3.Copy_runLastdata พอกดปุ่มรัน แล้ว มันติด Debug ค่ะ ต้องปรับ code vba อย่างไรคะ ขอบคุณค่ะ

Re: ต้องการดึงข้อมูลล่าสุดของวัน ไปวางอีกไฟล์ โดยใช้ code vba

Posted: Fri Mar 22, 2024 9:10 am
by puriwutpokin
ปรับตามนี้ครับ

Code: Select all

Sub CopyData_to_otherFile()
Dim srb As Workbook, tgb As Workbook, srcRngs As Range, x As Long
Set srb = Workbooks("Test_2024_addition total.xlsx")
Set tgb = Workbooks("Copy_runLastdata.xlsx")
myy = Format(Date, "mmyy")
With srb.Worksheets(myy)
x = Application.Match(9E+99, .Range("b1:b999"))
    Set srcRngs = .Range("b" & x).Resize(, 4)
End With
With tgb.Worksheets(myy)
    .Range("b" & .Rows.Count).End(xlUp).Offset(1, 0).Resize(, 4).Value = srcRngs.Value
End With
End Sub