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
:D 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
:D จำเป็นต้องศึกษาและเขียน Code มาเองก่อนไม่ว่าจากตำราหรือ Internet หรือแหล่งอื่นใด ติดปัญหาแล้วค่อยสอบถามกันต่อตามกฎการใช้บอร์ดข้อ 5 ด้านบนครับ :roll:

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
:D แนบไฟล์ล่าสุดที่มี 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
:D จากไฟล์ สหกรณ์.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
:D 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
:D 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")
ควรจะต้องเป็น

Code: Select all

Workbooks.Open Path\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
:D หากมีการเปิดไฟล์ สหกรณ์.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 เลย
ปรับเป็น

Code: Select all

Range("a1") = Now()