Page 1 of 1
เปิดไฟล์ด้วย VBA แล้วต้องการ Auto Filter ตามเงื่อนไข
Posted: Mon Dec 17, 2018 2:25 pm
by parakorn
เรียนอาจารย์และเพื่อนๆในบอร์ดทุกท่านครับ
จากไฟล์แนบ เมื่อรันโค้ด ต้องการเปิดไฟล์ที่เลือก แล้ว Auto Filter ไฟล์ที่เปิดโดยอ้างอิงจากข้อมูลในไฟล์ที่รันโค้ดครับ
เช่น Runcode เปิดไฟล์ > Check สาขา ในชีท title ที่ D4 > สั่งให้ไฟล์ที่เปิด Filter เลือกตามสาขานั้นๆ > Copy ข้อมูล Item Code,Item Name,Status,Non Sales Day นำกลับมาวางที่ชีท Book1
Re: เปิดไฟล์ด้วย VBA แล้วต้องการ Auto Filter ตามเงื่อนไข
Posted: Mon Dec 17, 2018 6:34 pm
by snasui

ตัวอย่างการปรับ Code ครับ
Code: Select all
Sub nonsale()
Dim lc As Long, Rc As Long
Dim tb As Workbook
Set tb = ThisWorkbook
Workbooks.Open Filename:=Application.GetOpenFilename("Excel files(*.xlsx*),*.xlsx*", _
Title:="Please select Non Sale files.", MultiSelect:=False)
If TypeName(strPath) = "Boolean" Then Exit Sub
Sheets(1).Select
Rows("1:1").Select
Selection.AutoFilter
lc = Range("B" & Rows.Count).End(xlUp).Row
Rc = tb.Sheets("Title").Range("D4").Value
Range("B1").Select
ActiveSheet.Range("A1:AZ" & lc).AutoFilter Field:=2, Criteria1:=Rc
Application.Goto Reference:="OFFSET(R1C18,1,,COUNTA(C18)-1,3)"
Selection.Copy
tb.Activate
Sheets("Book1").Activate
With tb.Sheets("book1")
.Range("A2").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
End With
Sheets(1).Select
Application.CutCopyMode = False
Application.Goto Reference:="OFFSET(R1C29,1,,COUNTA(C29)-1,)"
Selection.Copy
tb.Activate
Worksheets("Book1").Activate
With tb.Sheets("book1")
.Range("D2").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
End With
Worksheets("Title").Activate
Range("a1").Activate
End Sub
Re: เปิดไฟล์ด้วย VBA แล้วต้องการ Auto Filter ตามเงื่อนไข
Posted: Tue Dec 18, 2018 7:59 pm
by parakorn
ขอบคุณอาจารย์มากๆเลยครับ

Re: เปิดไฟล์ด้วย VBA แล้วต้องการ Auto Filter ตามเงื่อนไข
Posted: Wed Dec 19, 2018 11:51 am
by parakorn
เนื่องจากมีข้อมูลของ non sale day ใน column ที่ 29 ที่ต้อง Copy มาด้วย แต่มีปัญหาในการประกาศตัวแปร แต่ตัวแปรไม่ทำงานครับ
Code: Select all
Sub nonsale()
Dim lc As Long, Rc As Long
Dim tb As Workbook, pb As Workbook
Set tb = ThisWorkbook
Workbooks.Open Filename:=Application.GetOpenFilename("Excel files(*.xlsx*),*.xlsx*", _
Title:="Please select Non Sale files.", MultiSelect:=False)
Set pb = ThisWorkbook
Sheets(1).Select
Rows("1:1").Select
Selection.AutoFilter
lc = Range("B" & Rows.Count).End(xlUp).Row
Rc = tb.Sheets("Title").Range("D4").Value
Range("B1").Select
ActiveSheet.Range("A1:AZ" & lc).AutoFilter Field:=2, Criteria1:=Rc
Application.Goto Reference:="OFFSET(R1C18,1,,COUNTA(C18)-1,3)"
Selection.Copy
tb.Activate
Sheets("Book1").Activate
With tb.Sheets("book1")
.Range("A3").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
End With
pb.Activate
Sheets(1).Select
Application.Goto Reference:="OFFSET(R1C29,1,,COUNTA(C18)-1,1)"
Selection.Copy
tb.Activate
Sheets("Book1").Activate
With tb.Sheets("book1")
.Range("D3").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
End With
Worksheets("Title").Activate
Range("a1").Activate
End Sub
Re: เปิดไฟล์ด้วย VBA แล้วต้องการ Auto Filter ตามเงื่อนไข
Posted: Wed Dec 19, 2018 8:37 pm
by puriwutpokin
parakorn wrote: Wed Dec 19, 2018 11:51 am
เนื่องจากมีข้อมูลของ non sale day ใน column ที่ 29 ที่ต้อง Copy มาด้วย แต่มีปัญหาในการประกาศตัวแปร แต่ตัวแปรไม่ทำงานครับ
Code: Select all
Sub nonsale()
Dim lc As Long, Rc As Long
Dim tb As Workbook, pb As Workbook
Set tb = ThisWorkbook
Workbooks.Open Filename:=Application.GetOpenFilename("Excel files(*.xlsx*),*.xlsx*", _
Title:="Please select Non Sale files.", MultiSelect:=False)
Set pb = ThisWorkbook
Sheets(1).Select
Rows("1:1").Select
Selection.AutoFilter
lc = Range("B" & Rows.Count).End(xlUp).Row
Rc = tb.Sheets("Title").Range("D4").Value
Range("B1").Select
ActiveSheet.Range("A1:AZ" & lc).AutoFilter Field:=2, Criteria1:=Rc
Application.Goto Reference:="OFFSET(R1C18,1,,COUNTA(C18)-1,3)"
Selection.Copy
tb.Activate
Sheets("Book1").Activate
With tb.Sheets("book1")
.Range("A3").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
End With
pb.Activate
Sheets(1).Select
Application.Goto Reference:="OFFSET(R1C29,1,,COUNTA(C18)-1,1)"
Selection.Copy
tb.Activate
Sheets("Book1").Activate
With tb.Sheets("book1")
.Range("D3").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
End With
Worksheets("Title").Activate
Range("a1").Activate
End Sub
ประมาณนี้หรือเปล่าครับ
Code: Select all
Sub nonsale()
Dim lc As Long, Rc As Long
Dim tb As Workbook
Set tb = ThisWorkbook
Workbooks.Open Filename:=Application.GetOpenFilename("Excel files(*.xlsx*),*.xlsx*", _
Title:="Please select Non Sale files.", MultiSelect:=False)
If TypeName(strPath) = "Boolean" Then Exit Sub
Sheets(1).Select
Rows("1:1").Select
Selection.AutoFilter
lc = Range("B" & Rows.Count).End(xlUp).Row
Rc = tb.Sheets("Title").Range("D4").Value
Range("B1").Select
ActiveSheet.Range("A1:AZ" & lc).AutoFilter Field:=2, Criteria1:=Rc
Application.Goto Reference:="OFFSET(R1C18,1,,COUNTA(C18)-1,3),OFFSET(R1C28,1,,COUNTA(C28)-1,1)"
Selection.Copy
tb.Activate
Sheets("Book1").Activate
With tb.Sheets("book1")
.Range("A2").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
End With
Sheets(1).Select
Application.CutCopyMode = False
Worksheets("Title").Activate
Range("a1").Activate
End Sub
Re: เปิดไฟล์ด้วย VBA แล้วต้องการ Auto Filter ตามเงื่อนไข
Posted: Thu Dec 20, 2018 6:35 pm
by parakorn