Page 1 of 2
รบกวนสอบถาม vba ปุ่ม save แล้วส่งข้อมูลข้ามไฟล์ครับ
Posted: Tue Nov 14, 2017 11:24 am
by lnongkungl
จากไฟล์แนบ ไฟล์ สหกรณ์ sheet POS เป็นหน้าขายสินค้าที่ต้องการนำข้อมูลใน range : formcurrentID กับ formCurrentQty ไปเก็บในไฟล์ Stockยอดขาย โดยการกดปุ่ม บันทึกที่ทำไว้ครับ แล้วต้องการให้เวลากดบันทึกแล้ว ให้ Formtime เป็นตัวอ้างอิงกับ sheet แต่ละเดือนในไฟล์ Stockยอดขาย ให้ save ตรงกับเดือนที่ขายครับ
รบกวนขอความรู้ด้วยครับ
Re: รบกวนสอบถาม vba ปุ่ม save แล้วส่งข้อมูลข้ามไฟล์ครับ
Posted: Wed Nov 15, 2017 6:08 am
by snasui
Code ที่เขียนมาเองแล้วนั้นชื่อ Procedure ว่าอะไร ติดขัดบรรทัดใดครับ
Re: รบกวนสอบถาม vba ปุ่ม save แล้วส่งข้อมูลข้ามไฟล์ครับ
Posted: Wed Nov 15, 2017 9:06 am
by lnongkungl
โค๊ดที่ต้องการนี้ คือ โค๊ดของปุ่ม บันทึกครับ คือยังไม่ได้เขียนเลย เริ่มไม่ถูกครับ สิ่งที่ต้องการคือ เมื่อกดปุ่มบันทึกแล้วให้ข้อมูลใน sheet:POS ตามที่กล่าวข้างต้น ไป save ใน ไฟล์ที่แนบมา Stockยอดขาย.xlsx แล้วให้กำหนดให้วันที่ใน sheet : POS เป็นตัวกำหนดให้ save ลงในแต่ละเดือน ครับ
คือเงื่อนไขเยอะ ผมเริ่มไม่ถูกเลย
Re: รบกวนสอบถาม vba ปุ่ม save แล้วส่งข้อมูลข้ามไฟล์ครับ
Posted: Thu Nov 16, 2017 5:18 am
by snasui
จำเป็นต้องศึกษาและเขียน Code มาเองก่อนไม่ว่าจากตำราหรือ Internet หรือแหล่งอื่นใด ติดปัญหาแล้วค่อยสอบถามกันต่อตามกฎการใช้บอร์ดข้อ 5 ด้านบนครับ
Re: รบกวนสอบถาม vba ปุ่ม save แล้วส่งข้อมูลข้ามไฟล์ครับ
Posted: Thu Nov 16, 2017 9:07 am
by lnongkungl
ผมบันทึกด้วย marcro record แล้ว มันไม่ได้อ้างถึงไฟล์ปลายทางเลย ก็เลยหาข้อมูลต่างๆ ทำยังไง code แบบไหน ก็เปิด ไฟล์อีกไฟล์ ไม่ได้ซักที รบกวนอาจารย์ ทีครับ
Code: Select all
Public Sub Save()
Dim source As Range
Dim target As Range
With Workbooks("สหกรณ์.xlsm").Sheets("POS")
Set source = .Range("formcurrentID", .Range("B" & .Rows.Count).End(xlUp))
End With
With Workbooks("Stockยอดขาย.xlsx").Sheets("ม.ค.61") <<<<< error บรรทัดนี้ครับ
Set target = .Range("C2")
End With
source.Copy
target.PasteSpecial xlPasteValues
Application.CutCopyMode = fasle
End Sub
Re: รบกวนสอบถาม vba ปุ่ม save แล้วส่งข้อมูลข้ามไฟล์ครับ
Posted: Thu Nov 16, 2017 9:09 am
by snasui
แนบไฟล์ล่าสุดที่มี Code นี้เรียบน้อยแล้วมาใหม่ด้วยจะได้สะดวกในการทดสอบครับ
Re: รบกวนสอบถาม vba ปุ่ม save แล้วส่งข้อมูลข้ามไฟล์ครับ
Posted: Thu Nov 16, 2017 10:00 am
by lnongkungl
code ที่ติดปัญหา คือ ใน module1 ครับ ปุ่มบันทึก
แต่ผมลองบันทึก macro อยู่ใน module2 แล้วจะเอามาปรับแต่ง ซึ่งก็งงว่า code ไม่ได้พูดถึงอีกไฟล์เลย ลองปรับหลายวิธีแล้วก็ error หมดเลย
รบกวน อาจารย์ชี้แนะด้วยครับ
Re: รบกวนสอบถาม vba ปุ่ม save แล้วส่งข้อมูลข้ามไฟล์ครับ
Posted: Thu Nov 16, 2017 10:55 am
by snasui
จากไฟล์ สหกรณ์.xlsm ชีต POS มีเซลล์ใดที่ระบุว่าให้บันทึกไปยังชีตใด หรือ สังเกตได้จากค่าใดว่าต้องบันทึกไปยังชีตใดของไฟล์ Stock.xlsx ครับ
Re: รบกวนสอบถาม vba ปุ่ม save แล้วส่งข้อมูลข้ามไฟล์ครับ
Posted: Thu Nov 16, 2017 11:18 am
by lnongkungl
1.sheet POS cell B8-B54 = formcurrentID ต้องการ copy ไปใส่ sheet Stock ใน cell C2
2.sheet POS cell D8-D54 = formCurrentQty ต้องการ copy ไปใส่ sheet Stock ใน cell E2
3.sheet POS cell B3 = Formcostomer ต้องการ copy ไปใส่ sheet Stock ใน cell B2
3.sheet POS cell C3 = Formtime ต้องการ copy ไปใส่ sheet Stock ใน cell A2 และ เอาวันที่เป็นตัวกำหนด ว่าจะให้ copy ลงใน sheet ไหน(เดือนอะไร) ของไฟล์ Stock ครับ
นี่คือเงื่อนไขทั้งหมดที่ต้องการ แต่ที่เขียน code ปุ่มบันทึกไป ผมเขียนแค่ เงื่อนไขที่ 1 ครับ พอได้ เงื่อนไขแรก แล้วผมก็จะพยายามเขียน code เงื่อนไข อื่นๆ ตามครับ แต่ตอนนี้ ข้อแรกยังติดอยู่เลย
Re: รบกวนสอบถาม vba ปุ่ม save แล้วส่งข้อมูลข้ามไฟล์ครับ
Posted: Thu Nov 16, 2017 12:20 pm
by snasui
Code ที่เขียนมาไม่ได้กำหนดให้วางในชีต Stock ช่วยปรับ Code มาใหม่ให้ตรงกับที่ต้องการก่อนครับ
Re: รบกวนสอบถาม vba ปุ่ม save แล้วส่งข้อมูลข้ามไฟล์ครับ
Posted: Thu Nov 16, 2017 12:58 pm
by lnongkungl
นี่ครับ code มันติดตรงเปิด ไฟล์ Stock หรือผมใส่ผิดตรงไหน ครับ รบกวนบอกแนวทางก็ได้ครับ เดี๋ยวผมหาศึกษาเอา
Code: Select all
Public Sub Save()
Dim source As Range
Dim target As Range
With Workbooks("สหกรณ์.xlsm").Sheets("POS")
Set source = .Range("formcurrentID", .Range("B" & .Rows.Count).End(xlUp))
End With
Workbooks.Open ("Stock" & ".xlsx") ติดตรงนี้ หรือผม ใส่ code ผิดตรงไหนครับ
With Workbooks("Stock.xlsx").Sheets("2")
Set target = .Range("C2")
End With
source.Copy
target.PasteSpecial xlPasteValues
Application.CutCopyMode = fasle
End Sub
Re: รบกวนสอบถาม vba ปุ่ม save แล้วส่งข้อมูลข้ามไฟล์ครับ
Posted: Thu Nov 16, 2017 2:04 pm
by snasui
Statement With
Workbooks("Stock.xlsx").Sheets("2")
เปลี่ยนเป็น
With Workbooks("Stock.xlsx").Sheets(2)
ครับ
กรุณาแนบไฟล์ที่ปรับปรุงล่าสุดมาด้วย ผมจะได้ทดสอบได้เลยทันทีไม่ต้องคัดลอกสูตรไปวางเองครับ
Re: รบกวนสอบถาม vba ปุ่ม save แล้วส่งข้อมูลข้ามไฟล์ครับ
Posted: Thu Nov 16, 2017 3:45 pm
by lnongkungl
เปลี่ยนแล้วครับ ก็ยังติดอยู่ที่บรรทัดเดิม
Code: Select all
Public Sub Save()
Dim source As Range
Dim target As Range
With Workbooks("Êˡóì.xlsm").Sheets("POS")
Set source = .Range("formcurrentID", .Range("B" & .Rows.Count).End(xlUp))
End With
Workbooks.Open ("Stock" & ".xlsx")
With Workbooks("Stock.xlsx").Sheets(2)
Set target = .Range("C2")
End With
source.Copy
target.PasteSpecial xlPasteValues
Application.CutCopyMode = fasle
End Sub
Slide1.JPG
Re: รบกวนสอบถาม vba ปุ่ม save แล้วส่งข้อมูลข้ามไฟล์ครับ
Posted: Thu Nov 16, 2017 3:56 pm
by puriwutpokin
เบื้องต้น ต้องถามว่าทำไมถึง ใช้เป็น
Code: Select all
Workbooks.Open ("Stock" & ".xlsx")
ควรจะต้องเป็น
ซึ่ง Path คือต้นทางที่จะเปิดไฟล์นั้นๆ ครับเช่น Path =
Code: Select all
Workbooks.Open "C:\Users\Downloads\Stock.xlsx"
ถึงจะผ่านจุดนี้ครับ
Re: รบกวนสอบถาม vba ปุ่ม save แล้วส่งข้อมูลข้ามไฟล์ครับ
Posted: Thu Nov 16, 2017 5:36 pm
by snasui
หากมีการเปิดไฟล์ สหกรณ์.xlsx กับ Stock.xlsm เอาไว้พร้อมกันอยู่แล้วสามารถ Mark
Workbooks.Open ("Stock" & ".xlsx")
ให้เป็น Comment หรือลบทิ้งไปได้ครับ
Re: รบกวนสอบถาม vba ปุ่ม save แล้วส่งข้อมูลข้ามไฟล์ครับ
Posted: Fri Nov 17, 2017 3:39 pm
by lnongkungl
ทำได้แล้วครับ ขอบคุณทุกท่านที่แนะนำครับ กำลังทำเงื่ือนไขต่อไป เดี๋ยวติดตรงไหน ขอมารบกวนสอบถามใหม่นะครับ
Re: รบกวนสอบถาม vba ปุ่ม save แล้วส่งข้อมูลข้ามไฟล์ครับ
Posted: Mon Nov 20, 2017 2:48 pm
by lnongkungl
กลับมาอีกครั้งครับ จากที่พยายามเขียนโค๊ดจนสำเร็จหมดทุกเงื่อนไข แล้วครับมาติดเอาเงื่อนไขสุดท้ายครับ ตันจริงๆ
ผมทำเป็นไฟล์ใหม่นะครับจะได้ไฟล์เล็กๆ แต่เงื่อนไขที่ต้องการคืออย่างเดียวกัน
จากไฟล์แนบนะครับ ผมต้องการให้ข้อมูลที่ส่งจากไฟล์ รับเข้า.xlsm ไปใส่ในไฟล์ สรุปยอดรับ.xlsx โดยเอาเดือนจาก cell formtime จากไฟล์ รับเข้า.xlsm เป็นตัวกำหนดให้ข้อมูลที่ส่งไป บันทึกตาม sheet ของเดือนนั้นๆ ครับ
ผมควรจะปรับ code ยังไงครับ
Code: Select all
Public Sub save()
With Workbooks("ÃѺà¢éÒ.xlsm").Sheets(1)
Set co = .Range("a3:a41", .Range("d" & .Rows.Count).End(xlUp))
End With
co.Copy
Workbooks.Open "C:\Users\it-support.cmk\Desktop\testmarcro\ÊÃØ»ÂÍ´ÃѺ.xlsx"
With Workbooks("ÊÃØ»ÂÍ´ÃѺ.xlsx").Sheets(1).Select
If Range("B" & Rows.Count).End(xlUp).Offset(1, 0) = "" Then
Range("B" & Rows.Count).End(xlUp).Offset(1, -1) = Now()
End If
Range("B" & Rows.Count).End(xlUp).Offset(1, 0).PasteSpecial xlPasteValues
Application.CutCopyMode = fasle
End With
Workbooks("ÊÃØ»ÂÍ´ÃѺ.xlsx").save
Workbooks("ÊÃØ»ÂÍ´ÃѺ.xlsx").Close
With Workbooks("ÃѺà¢éÒ.xlsm").Sheets(1).Select
End With
End Sub
Re: รบกวนสอบถาม vba ปุ่ม save แล้วส่งข้อมูลข้ามไฟล์ครับ
Posted: Mon Nov 20, 2017 3:48 pm
by puriwutpokin
ลองปรับโค้ดจะยาวขึ้นครับ
Code: Select all
Public Sub Save()
Dim source As Range
Dim Lr As Integer
Dim mySheet As String
Application.ScreenUpdating = False
With Workbooks("รับเข้า.xlsm").Sheets("รับเข้า")
LL = Application.CountIf(.Range("a3:a41"), "<>")
Set source = .Range("a3", .Range("a" & .Rows.Count).End(xlUp)).Resize(LL, 4)
Workbooks.Open "C:\Users\it-support.cmk\Desktop\testmarcro\สรุปยอดรับ.xlsx"
source.Copy
With Workbooks("รับเข้า.xlsm").Sheets("รับเข้า")
mySheet = Format(.Range("a1").Value, "mmm")
End With
Windows("สรุปยอดรับ.xlsx").Activate
Worksheets(mySheet).Activate
Lr = Range("b" & Rows.Count).End(xlUp).Row + 1
Range("b" & Lr).PasteSpecial xlPasteValues
With Workbooks("รับเข้า.xlsm").Sheets("รับเข้า")
Range("b" & Lr).Offset(0, -1).Resize(LL, 1).Value = .Range("a1").Value
End With
End With
Application.CutCopyMode = False
Workbooks("รับเข้า.xlsm").Activate
Application.ScreenUpdating = True
End Sub
Re: รบกวนสอบถาม vba ปุ่ม save แล้วส่งข้อมูลข้ามไฟล์ครับ
Posted: Tue Nov 21, 2017 9:54 am
by lnongkungl
ขอบคุณครับ puriwutpokin ได้แล้วครับ
แต่มีข้อสงสัยอีกอย่างครับ
คือผมเขียนโค๊ดไว้แบบนี้ครับ
Code: Select all
Private Sub Worksheet_open()
Range("formtime") = Now()
End Sub
แต่ทำไมเมื่อปิดแล้วเปิดใหม่ formtime ไม่อัพเดทเวลาเป็นปัจจุบันครับ ต้องไปกด run ถึงจะอัพเดท ทั้งๆที่ ผมเขียนไว้ใน sheet เลย
Re: รบกวนสอบถาม vba ปุ่ม save แล้วส่งข้อมูลข้ามไฟล์ครับ
Posted: Tue Nov 21, 2017 11:04 am
by puriwutpokin
lnongkungl wrote:ขอบคุณครับ puriwutpokin ได้แล้วครับ
แต่มีข้อสงสัยอีกอย่างครับ
คือผมเขียนโค๊ดไว้แบบนี้ครับ
Code: Select all
Private Sub Worksheet_open()
Range("formtime") = Now()
End Sub
แต่ทำไมเมื่อปิดแล้วเปิดใหม่ formtime ไม่อัพเดทเวลาเป็นปัจจุบันครับ ต้องไปกด run ถึงจะอัพเดท ทั้งๆที่ ผมเขียนไว้ใน sheet เลย
ปรับเป็น