:D snasui.com ยินดีต้อนรับ :D
ยินดีต้อนรับสู่กระดานถามตอบ Excel and VBA และอื่น ๆ ที่เป็นมิตรกับทุกท่าน มีไฟล์แนบมหาศาล ช่วยให้ท่านค้นหาและติดตามศึกษาได้โดยง่าย :thup: สมาชิกท่านใดที่ยังไม่ได้ระบุ Version ของ Excel ที่ใช้งานจริง สามารถทำตาม Link นี้เพื่อจะได้รับคำตอบที่ตรงกับ Version ของท่านครับ :arrow: ระบุ Version ของ Excel
:!: โปรดทราบ :!:
  1. กรุณาอ่านกฎการใช้บอร์ด (Forum rules) ในตำแหน่งด้านบนของแต่ละบอร์ด
  2. การสมัครสมาชิก การ Login การกู้คืนรหัสผ่าน
    1. สมัครสมาชิกดูขั้นตอนได้ที่ :arrow: สมัครสมาชิก
    2. Login เข้าระบบโดยคลิกปุ่ม Login ตรงมุมขวาบนของหน้านี้ :roll:
    3. การ Login ผ่าน Facebook ดูวิธีที่ :arrow: Login ผ่าน Facebook
    4. ลืมรหัสผ่านสามารถรับรหัสใหม่ได้ที่ :arrow: Reset รหัสผ่าน
  3. มีปัญหาการใช้งาน แจ้งผู้ดูแลระบบได้ที่ :arrow: ติดต่อผู้ดูแลระบบ
  4. กำหนดการตั้งค่าส่วนตัว เช่นตั้งค่าภาษาเป็นไทยหรืออังกฤษดูได้ที่ :arrow: ตั้งค่าส่วนตัว
  5. การตั้งและตอบกระทู้ดูได้ที่ :arrow: วิธีการตั้งและตอบกระทู้
  6. การจัดรูปแบบตัวอักษรด้วย bbcode ในช่องแสดงความคิดเห็นดูได้ที่ :arrow: จัดรูปแบบตัวอักษร
  7. กำหนดขนาดตัวอักษรใน Browser ดูได้ที่ :arrow: กำหนดขนาดตัวอักษรใน Browser

รบกวนสอบถาม vba ปุ่ม save แล้วส่งข้อมูลข้ามไฟล์ครับ

ฟอรัมถาม-ตอบปัญหาการใช้งาน MS Excel and VBA
Forum rules
  1. ไม่อนุญาตให้ใช้ภาษาแชทในการถามและตอบปัญหา ไม่ใช้คำว่า "คับ" หรือ "อ่ะครับ" แทนคำว่า "ครับ" ไม่ใช้คำว่า "เด๋ว" แทนคำว่า "เดี๋ยว" เป็นต้น เนื่องจากเมื่อแปลเป็นภาษาต่างประเทศแล้วจะให้ความหมายผิดไปจากที่ควรจะเป็น
  2. ห้ามถามโดยระบุชื่อผู้ตอบและต้องตั้งชื่อกระทู้ให้สื่อถึงปัญหาที่จะถาม ไม่ตั้งชื่อว่า ช่วยด้วยครับ, มีปัญหามาปรึกษาครับ เป็นต้น
  3. กรุณาอธิบายปัญหาและระบุคำตอบที่ต้องการมาในกระทู้ด้วยเสมอถึงแม้จะอธิบายไว้ในไฟล์แนบแล้วก็ตาม ทั้งนี้เพื่ออำนวยความสะดวกแก่เพื่อนสมาชิกในการค้นหาข้อมูล
  4. กรุณาแนบไฟล์ตัวอย่างพร้อมแสดงคำตอบที่ถูกต้องมาในไฟล์ด้วยเพื่อให้ง่ายต่อการทำความเข้าใจและสะดวกต่อการตอบคำถาม (ขนาดไฟล์ไม่เกิน 500Kb ขนาดภาพไม่เกิน 800*600 Pixel) ไม่แนบเป็น Link มาจากแหล่งอื่นที่อาจจะถูกลบทิ้งไปโดยต้นทางในภายหลัง นอกจากนี้ไม่ควรแนบไฟล์ที่มีข้อมูลสำคัญอันก่อให้เกิดความเสียหายกับตนเองและผู้อื่น
  5. กรณีเป็นคำถามเกี่ยวกับ Programming เช่น VBA, VB.Net, C#, SQL ฯลฯ ต้องลองเขียนมาเองก่อนเสมอ ถามเฉพาะที่ติดปัญหา ระบุ Module, Procedure ที่ติดปัญหาให้ชัดเจน กรุณาโพสต์ Code ให้แสดงเป็น Code คือเปิดด้วย [code] และปิดด้วย [/code] ตัวอย่างเช่น [code]dim r as range[/code] เพื่อให้แตกต่างจากข้อความทั่วไป สะดวกในการอ่านและทดสอบ (คลิกเพื่อดูตัวอย่าง)
  6. กรุณาแจ้งผลการใช้งานเมื่อได้รับคำตอบว่าตรงกับความต้องการหรือไม่
lnongkungl
Member
Member
Posts: 92
Joined: Tue Nov 14, 2017 11:04 am
Excel Ver: 2013

รบกวนสอบถาม vba ปุ่ม save แล้วส่งข้อมูลข้ามไฟล์ครับ

#1

Post by lnongkungl »

จากไฟล์แนบ ไฟล์ สหกรณ์ sheet POS เป็นหน้าขายสินค้าที่ต้องการนำข้อมูลใน range : formcurrentID กับ formCurrentQty ไปเก็บในไฟล์ Stockยอดขาย โดยการกดปุ่ม บันทึกที่ทำไว้ครับ แล้วต้องการให้เวลากดบันทึกแล้ว ให้ Formtime เป็นตัวอ้างอิงกับ sheet แต่ละเดือนในไฟล์ Stockยอดขาย ให้ save ตรงกับเดือนที่ขายครับ

รบกวนขอความรู้ด้วยครับ
You do not have the required permissions to view the files attached to this post.
User avatar
snasui
Site Admin
Site Admin
Posts: 30736
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: รบกวนสอบถาม vba ปุ่ม save แล้วส่งข้อมูลข้ามไฟล์ครับ

#2

Post by snasui »

:D Code ที่เขียนมาเองแล้วนั้นชื่อ Procedure ว่าอะไร ติดขัดบรรทัดใดครับ
lnongkungl
Member
Member
Posts: 92
Joined: Tue Nov 14, 2017 11:04 am
Excel Ver: 2013

Re: รบกวนสอบถาม vba ปุ่ม save แล้วส่งข้อมูลข้ามไฟล์ครับ

#3

Post by lnongkungl »

โค๊ดที่ต้องการนี้ คือ โค๊ดของปุ่ม บันทึกครับ คือยังไม่ได้เขียนเลย เริ่มไม่ถูกครับ สิ่งที่ต้องการคือ เมื่อกดปุ่มบันทึกแล้วให้ข้อมูลใน sheet:POS ตามที่กล่าวข้างต้น ไป save ใน ไฟล์ที่แนบมา Stockยอดขาย.xlsx แล้วให้กำหนดให้วันที่ใน sheet : POS เป็นตัวกำหนดให้ save ลงในแต่ละเดือน ครับ


คือเงื่อนไขเยอะ ผมเริ่มไม่ถูกเลย
User avatar
snasui
Site Admin
Site Admin
Posts: 30736
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: รบกวนสอบถาม vba ปุ่ม save แล้วส่งข้อมูลข้ามไฟล์ครับ

#4

Post by snasui »

:D จำเป็นต้องศึกษาและเขียน Code มาเองก่อนไม่ว่าจากตำราหรือ Internet หรือแหล่งอื่นใด ติดปัญหาแล้วค่อยสอบถามกันต่อตามกฎการใช้บอร์ดข้อ 5 ด้านบนครับ :roll:
lnongkungl
Member
Member
Posts: 92
Joined: Tue Nov 14, 2017 11:04 am
Excel Ver: 2013

Re: รบกวนสอบถาม vba ปุ่ม save แล้วส่งข้อมูลข้ามไฟล์ครับ

#5

Post 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
User avatar
snasui
Site Admin
Site Admin
Posts: 30736
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: รบกวนสอบถาม vba ปุ่ม save แล้วส่งข้อมูลข้ามไฟล์ครับ

#6

Post by snasui »

:D แนบไฟล์ล่าสุดที่มี Code นี้เรียบน้อยแล้วมาใหม่ด้วยจะได้สะดวกในการทดสอบครับ
lnongkungl
Member
Member
Posts: 92
Joined: Tue Nov 14, 2017 11:04 am
Excel Ver: 2013

Re: รบกวนสอบถาม vba ปุ่ม save แล้วส่งข้อมูลข้ามไฟล์ครับ

#7

Post by lnongkungl »

code ที่ติดปัญหา คือ ใน module1 ครับ ปุ่มบันทึก
แต่ผมลองบันทึก macro อยู่ใน module2 แล้วจะเอามาปรับแต่ง ซึ่งก็งงว่า code ไม่ได้พูดถึงอีกไฟล์เลย ลองปรับหลายวิธีแล้วก็ error หมดเลย

รบกวน อาจารย์ชี้แนะด้วยครับ
You do not have the required permissions to view the files attached to this post.
User avatar
snasui
Site Admin
Site Admin
Posts: 30736
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: รบกวนสอบถาม vba ปุ่ม save แล้วส่งข้อมูลข้ามไฟล์ครับ

#8

Post by snasui »

:D จากไฟล์ สหกรณ์.xlsm ชีต POS มีเซลล์ใดที่ระบุว่าให้บันทึกไปยังชีตใด หรือ สังเกตได้จากค่าใดว่าต้องบันทึกไปยังชีตใดของไฟล์ Stock.xlsx ครับ
lnongkungl
Member
Member
Posts: 92
Joined: Tue Nov 14, 2017 11:04 am
Excel Ver: 2013

Re: รบกวนสอบถาม vba ปุ่ม save แล้วส่งข้อมูลข้ามไฟล์ครับ

#9

Post 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 เงื่อนไข อื่นๆ ตามครับ แต่ตอนนี้ ข้อแรกยังติดอยู่เลย
User avatar
snasui
Site Admin
Site Admin
Posts: 30736
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: รบกวนสอบถาม vba ปุ่ม save แล้วส่งข้อมูลข้ามไฟล์ครับ

#10

Post by snasui »

:D Code ที่เขียนมาไม่ได้กำหนดให้วางในชีต Stock ช่วยปรับ Code มาใหม่ให้ตรงกับที่ต้องการก่อนครับ
lnongkungl
Member
Member
Posts: 92
Joined: Tue Nov 14, 2017 11:04 am
Excel Ver: 2013

Re: รบกวนสอบถาม vba ปุ่ม save แล้วส่งข้อมูลข้ามไฟล์ครับ

#11

Post 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
User avatar
snasui
Site Admin
Site Admin
Posts: 30736
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: รบกวนสอบถาม vba ปุ่ม save แล้วส่งข้อมูลข้ามไฟล์ครับ

#12

Post by snasui »

:D Statement With Workbooks("Stock.xlsx").Sheets("2") เปลี่ยนเป็น With Workbooks("Stock.xlsx").Sheets(2) ครับ

กรุณาแนบไฟล์ที่ปรับปรุงล่าสุดมาด้วย ผมจะได้ทดสอบได้เลยทันทีไม่ต้องคัดลอกสูตรไปวางเองครับ
lnongkungl
Member
Member
Posts: 92
Joined: Tue Nov 14, 2017 11:04 am
Excel Ver: 2013

Re: รบกวนสอบถาม vba ปุ่ม save แล้วส่งข้อมูลข้ามไฟล์ครับ

#13

Post 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
You do not have the required permissions to view the files attached to this post.
User avatar
puriwutpokin
Guru
Guru
Posts: 3693
Joined: Fri Jan 04, 2013 9:49 pm
Location: Bangkok
Excel Ver: MS.365

Re: รบกวนสอบถาม vba ปุ่ม save แล้วส่งข้อมูลข้ามไฟล์ครับ

#14

Post 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"
ถึงจะผ่านจุดนี้ครับ
:shock: :roll: :D
User avatar
snasui
Site Admin
Site Admin
Posts: 30736
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: รบกวนสอบถาม vba ปุ่ม save แล้วส่งข้อมูลข้ามไฟล์ครับ

#15

Post by snasui »

:D หากมีการเปิดไฟล์ สหกรณ์.xlsx กับ Stock.xlsm เอาไว้พร้อมกันอยู่แล้วสามารถ Mark Workbooks.Open ("Stock" & ".xlsx") ให้เป็น Comment หรือลบทิ้งไปได้ครับ
lnongkungl
Member
Member
Posts: 92
Joined: Tue Nov 14, 2017 11:04 am
Excel Ver: 2013

Re: รบกวนสอบถาม vba ปุ่ม save แล้วส่งข้อมูลข้ามไฟล์ครับ

#16

Post by lnongkungl »

ทำได้แล้วครับ ขอบคุณทุกท่านที่แนะนำครับ กำลังทำเงื่ือนไขต่อไป เดี๋ยวติดตรงไหน ขอมารบกวนสอบถามใหม่นะครับ
lnongkungl
Member
Member
Posts: 92
Joined: Tue Nov 14, 2017 11:04 am
Excel Ver: 2013

Re: รบกวนสอบถาม vba ปุ่ม save แล้วส่งข้อมูลข้ามไฟล์ครับ

#17

Post 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
You do not have the required permissions to view the files attached to this post.
User avatar
puriwutpokin
Guru
Guru
Posts: 3693
Joined: Fri Jan 04, 2013 9:49 pm
Location: Bangkok
Excel Ver: MS.365

Re: รบกวนสอบถาม vba ปุ่ม save แล้วส่งข้อมูลข้ามไฟล์ครับ

#18

Post 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
:shock: :roll: :D
lnongkungl
Member
Member
Posts: 92
Joined: Tue Nov 14, 2017 11:04 am
Excel Ver: 2013

Re: รบกวนสอบถาม vba ปุ่ม save แล้วส่งข้อมูลข้ามไฟล์ครับ

#19

Post by lnongkungl »

ขอบคุณครับ puriwutpokin ได้แล้วครับ
แต่มีข้อสงสัยอีกอย่างครับ

คือผมเขียนโค๊ดไว้แบบนี้ครับ

Code: Select all

Private Sub Worksheet_open()
Range("formtime") = Now()
End Sub
แต่ทำไมเมื่อปิดแล้วเปิดใหม่ formtime ไม่อัพเดทเวลาเป็นปัจจุบันครับ ต้องไปกด run ถึงจะอัพเดท ทั้งๆที่ ผมเขียนไว้ใน sheet เลย
You do not have the required permissions to view the files attached to this post.
User avatar
puriwutpokin
Guru
Guru
Posts: 3693
Joined: Fri Jan 04, 2013 9:49 pm
Location: Bangkok
Excel Ver: MS.365

Re: รบกวนสอบถาม vba ปุ่ม save แล้วส่งข้อมูลข้ามไฟล์ครับ

#20

Post 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()
:shock: :roll: :D
Post Reply