Page 1 of 1

จะ Copy ข้อมูลใน range a1 จากไฟล์แรก ไปไว้ที่ไฟล์สอง range a2 ต้องปรับโค้ดอย่างไรครับ

Posted: Sat Jul 02, 2022 12:13 pm
by 10idlnw
ผมใช้ macro บันทึก แต่ไม่ค่อยตรงความต้องการ คือ
ผมต้องการคัดลอกข้อมูลใน Range "A1" จากไฟล์หลัก แล้วให้ไปวาง(เพิ่ม)ใน "Sheet2" ที่ Range "A2"
โดยไม่ต้องเปิดไฟล์ปลายทาง หรือไม่ต้อง select ก่อน แบบว่า ให้ Copy แล้วก็วางอัตโนมัติเลย ต้องปรับสูตรอย่างไรครับ

Code: Select all

Private Sub CommandButton1_Click()
        Range("A1").Select
        Selection.Copy ' Copy ข้อมูลจาก Sheet 1
        Windows("test2.xlsm").Activate
        Range("A2").Select
        ActiveSheet.Paste  ' แล้วนำไปวางใน Sheet 2
End Sub

Re: จะ Copy ข้อมูลใน range a1 จากไฟล์แรก ไปไว้ที่ไฟล์สอง range a2 ต้องปรับโค้ดอย่างไรครับ

Posted: Sat Jul 02, 2022 12:59 pm
by snasui
:D สามารถใช้ Statement นี้ได้เลยครับ Workbooks("test2.xlsm").Worksheets("Sheet2").Range("a2").Value = Range("a1").Value

คำว่าไม่ต้องเปิดไฟล์ปลายทาง แสดงว่าไฟล์ปลายทางต้องเปิดอยู่ก่อนแล้ว ถ้าไม่เช่นนั้นต้องเปิดขึ้นมาก่อน

ส่วนไม่ต้อง Select ก่อนวางนั้นสามารถทำได้ โดยปกติการเขียน VBA เราไม่จำเป็นต้อง Select ก่อนที่จะวางข้อมูลครับ

Re: จะ Copy ข้อมูลใน range a1 จากไฟล์แรก ไปไว้ที่ไฟล์สอง range a2 ต้องปรับโค้ดอย่างไรครับ

Posted: Sat Jul 02, 2022 3:03 pm
by 10idlnw
ขอบคุณมากครับอาจารย์ วิธีข้างบนใช้ได้ผลครับ แต่อยากสอบถามเพิ่มเติมครับว่า มีวิธีใช้ vba สั่งเพิ่มข้อมูลโดยที่ไฟล์ไม่ถูกเปิดเลยไหมครับ แบบว่าให้ทำงานแบบ backend อยู่ข้างหลัง หรือต้องใช้วิธีใดครับ

Re: จะ Copy ข้อมูลใน range a1 จากไฟล์แรก ไปไว้ที่ไฟล์สอง range a2 ต้องปรับโค้ดอย่างไรครับ

Posted: Sat Jul 02, 2022 3:13 pm
by snasui
:D การทำงานโดยที่ไม่เปิดไฟล์ที่จะวางข้อมูลปกติแล้วไฟล์นั้นจะใช้เป็น Database และเขียน Query เข้าไปเพื่อ Create, Read, Update และ Delete (CRUD) ซึ่งจะต้องศึกษา SQL เพิ่มถึงจะเขียนเช่นนั้นได้ การ Connect กับไฟล์ Database จะใช้ Connection String ซึ่งก็ต้องศึกษาเพิ่มด้วยเช่นกันครับ

ศึกษาจากโพสต์นี้ประกอบด้วยครับ การติดต่อ Database

Re: จะ Copy ข้อมูลใน range a1 จากไฟล์แรก ไปไว้ที่ไฟล์สอง range a2 ต้องปรับโค้ดอย่างไรครับ

Posted: Sat Jul 16, 2022 9:59 pm
by 10idlnw
ขอบคุณมากครับอาจารย์ สรุปคือ ผมใช้วิธีแบบที่อาจารย์แนะนำคือ ใช้ไฟล์1 เปิดไฟล์2 ขึ้นมาเพื่ออัปเดทข้อมูลก่อนแล้วค่อยปิด ก็ได้ผลลัพธ์ตามที่วางไว้ครับ