Page 1 of 4
Copy Sheet1 ไป Sheet2 แบบข้าม workbook แบบrealtime
Posted: Thu Nov 17, 2016 4:30 pm
by sakajohn
รบกวนสอบถามครับ ผมลองทำ copy ข้าม sheet แบบ real-time โดยอยู่ใน workbook เดียวกัน โดยใช้โค๊ด
Code: Select all
Private Sub Worksheet_Change(ByVal Target As Range)
Worksheets("Sheet2").Range("C1:C10").Value = Worksheets("Sheet1").Range("A1:A10").Value
Worksheets("Sheet2").Range("D1:D10").Value = Worksheets("Sheet1").Range("B1:B10").Value
End Sub
แต่ถ้าต้องการ Copy Sheet 1 ไป Sheet 2 แบบข้าม workbook แบบ real-time จะต้องเพิ่ม code ตรงไหนครับ เช่น copy Sheet 1 ของ workbook 1 ไป sheet 2 ของ workbook 2 แบบ real-time
Re: Copy Sheet1 ไป Sheet2 แบบข้าม workbook แบบrealtime
Posted: Thu Nov 17, 2016 8:14 pm
by snasui

ตัวอย่าง Code ครับ
Workbook("Book1").Worksheets("Sheet2").Range("C1:C10").Value = Workbook("Book2").Worksheets("Sheet1").Range("A1:A10").Value
Re: Copy Sheet1 ไป Sheet2 แบบข้าม workbook แบบrealtime
Posted: Sat Nov 19, 2016 9:33 pm
by sakajohn
snasui wrote:
ตัวอย่าง Code ครับ
Workbook("Book1").Worksheets("Sheet2").Range("C1:C10").Value = Workbook("Book2").Worksheets("Sheet1").Range("A1:A10").Value
อาจารย์ครับ ผมทดลองเอา code ไปใส่ที่ workbook1 sheet1
Code: Select all
Private Sub Worksheet_Change(ByVal Target As Range)
Workbook("Book1").Worksheets("Sheet2").Range("C1:C10").Value = Workbook("Book2").Worksheets("Sheet1").Range("A1:A10").Value
End Sub
ฟ้อง error ที่ Workbook("Book2")
Re: Copy Sheet1 ไป Sheet2 แบบข้าม workbook แบบrealtime
Posted: Sat Nov 19, 2016 11:25 pm
by snasui

ฺชื่อไฟล์ทั้งสองไฟล์ที่ใช้จริงชื่ออะไรให้แทน Book1, Book2 ด้วยชื่อไฟล์ที่ใช้จริงครับ
Re: Copy Sheet1 ไป Sheet2 แบบข้าม workbook แบบrealtime
Posted: Sat Nov 19, 2016 11:29 pm
by sakajohn
ผมสร้าง bookขึ้นมาใหม่เลยครับอาจารย์ คือสร้าง Book1 และ BooK2 เลยครับ แล้วก็เขียน code ที่ Book1 sheet1 ครับ เวลาใส่ค่าใน cell มันจะฟ้อง error ที่คำว่า workbook ที่อยู่ข้างหน้า Sheet2 ครับ
Re: Copy Sheet1 ไป Sheet2 แบบข้าม workbook แบบrealtime
Posted: Sat Nov 19, 2016 11:32 pm
by snasui

แนบไฟล์ทั้งสองพร้อม Code มาด้วยครับ
Re: Copy Sheet1 ไป Sheet2 แบบข้าม workbook แบบrealtime
Posted: Sat Nov 19, 2016 11:36 pm
by sakajohn
snasui wrote:
แนบไฟล์ทั้งสองพร้อม Code มาด้วยครับ
Re: Copy Sheet1 ไป Sheet2 แบบข้าม workbook แบบrealtime
Posted: Sat Nov 19, 2016 11:52 pm
by snasui

ตัวอย่าง Code ครับ
Code: Select all
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Workbooks("Book1.xlsm").Worksheets("Sheet2").Range("C1:C10").Value = _
Workbooks("Book2.xlsm").Worksheets("Sheet1").Range("A1:A10").Value
End Sub
Re: Copy Sheet1 ไป Sheet2 แบบข้าม workbook แบบrealtime
Posted: Sun Nov 20, 2016 12:51 am
by sakajohn
snasui wrote:
ตัวอย่าง Code ครับ
Code: Select all
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Workbooks("Book1.xlsm").Worksheets("Sheet2").Range("C1:C10").Value = _
Workbooks("Book2.xlsm").Worksheets("Sheet1").Range("A1:A10").Value
End Sub
ลองแล้วก็ไม่ได้ครับ
Re: Copy Sheet1 ไป Sheet2 แบบข้าม workbook แบบrealtime
Posted: Sun Nov 20, 2016 6:35 am
by snasui

ในเครื่องผม Code นั้นทำงานได้ปกติครับ
ไฟล์ที่แนบมาข้อมูลต้นทางเป็นค่าว่าง จึงเป็นปกติที่จะไม่แสดงข้อมูลที่ปลายทาง ให้สังเกตว่ากำลังดักจับ Event Selection Change ที่ชีตใด ต้องการให้เกิดการกระทำใด ต้นทางคือที่ใด ปลายทางคือที่ใดครับ
Re: Copy Sheet1 ไป Sheet2 แบบข้าม workbook แบบrealtime
Posted: Sun Nov 20, 2016 9:37 pm
by sakajohn
snasui wrote:
ในเครื่องผม Code นั้นทำงานได้ปกติครับ
ไฟล์ที่แนบมาข้อมูลต้นทางเป็นค่าว่าง จึงเป็นปกติที่จะไม่แสดงข้อมูลที่ปลายทาง ให้สังเกตว่ากำลังดักจับ Event Selection Change ที่ชีตใด ต้องการให้เกิดการกระทำใด ต้นทางคือที่ใด ปลายทางคือที่ใดครับ
ต้นทางคือ book 1 sheet 1 ครับ
Re: Copy Sheet1 ไป Sheet2 แบบข้าม workbook แบบrealtime
Posted: Sun Nov 20, 2016 10:01 pm
by snasui

ต้นทางต้องอยู่
ด้านขวาของเครื่องหมาย = (เท่ากับ) ส่วนปลายทางต้องอยู่
ด้านซ้ายของเครื่องหมาย = (เท่ากับ) ครับ
Re: Copy Sheet1 ไป Sheet2 แบบข้าม workbook แบบrealtime
Posted: Sun Nov 20, 2016 10:18 pm
by sakajohn
ทำได้แล้วครับ ขอบคุณครับ อาจารย์ครับ _ (ขีดล่าง) ที่อยู่หลังเครื่องหมาย =(เท่ากับ) คืออะไรครับ ตอนนี้ผมให้ Book 1เป็นต้นทาง Book 2เป็นปลายทาง ใช้ Code
Workbooks("Book2.xlsm").Worksheets("Sheet1").Range("C1:C10").Value = _
Workbooks("Book1.xlsm").Worksheets("Sheet1").Range("A1:A10").Value
แต่ถ้าผมไม่ได้เปิดbook 2 ไว้มันจะฟ้อง error ครับ แก้ได้ไหมครับ
Re: Copy Sheet1 ไป Sheet2 แบบข้าม workbook แบบrealtime
Posted: Sun Nov 20, 2016 11:19 pm
by snasui

แก้ได้ด้วยการเปิดไว้ทุกไฟล์ที่เกี่ยวข้องครับ สามารถเปิดด้ว Code เมื่อจัดการแล้วเรียบร้อยแล้วค่อยปิดเช่นนี้ครับ
Re: Copy Sheet1 ไป Sheet2 แบบข้าม workbook แบบrealtime
Posted: Mon Nov 21, 2016 5:37 pm
by sakajohn
อาจารย์ครับ ผมลองทำให้เปลี่ยนในวงแลนเดียวกัน โดย Book 1 อยู่ที่เครื่องของผม ต้องการให้ key ที่ cell A1-A10 ที่ sheet 1 และข้อมูลที่ book 2 cell C1-C10 ใน Sheet 1 ซึ่งจะอยู่ที่เครื่องชื่อ ACCOUNT อยู่ไดร์ฟ Data(D) เปลี่ยนตาม ผมใช้ code
Code: Select all
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Workbooks("\\Account\Data\Book2.xlsm").Worksheets("Sheet1").Range("C1:C10").Value = _
Workbooks("Book1.xlsm").Worksheets("Sheet1").Range("A1:A10").Value
End Sub
มัน error ผมทำตรงไหนผิดหรือเปล่าครับ
Re: Copy Sheet1 ไป Sheet2 แบบข้าม workbook แบบrealtime
Posted: Mon Nov 21, 2016 7:21 pm
by snasui
sakajohn wrote:อาจารย์ครับ _ (ขีดล่าง) ที่อยู่หลังเครื่องหมาย =(เท่ากับ) คืออะไรครับ

เป็นเครื่องหมายที่ใช้แสดงว่าบรรทัดล่างกับบรรทัดบรรจุบันเป็น Statement เดียวกัน ใช้เพื่อขึ้นบรรทัดใหม่ให้สะดวกต่อการอ่านครับ
ส่วน Code ล่าสุด ไม่สามารถทำงานได้เนื่องจากเป็นการกำหนดค่าให้กับไฟล์ที่ปิดอยู่ อ่านที่ผมโพสตืไปด้านล่างซ้ำอีกรอบครับ
snasui wrote: 
แก้ได้ด้วยการเปิดไว้ทุกไฟล์ที่เกี่ยวข้องครับ สามารถเปิดด้วย Code เมื่อจัดการแล้วเรียบร้อยแล้วค่อยปิด เช่นนี้ครับ
Re: Copy Sheet1 ไป Sheet2 แบบข้าม workbook แบบrealtime
Posted: Mon Nov 21, 2016 11:17 pm
by sakajohn
อาจารย์ครับ แล้วcode ที่เขียนให้ บันทึกแบบreal time กับเครื่องในวงแลน มันจะต้องแก้ไขตรงส่วนไหนครับ รบกวนด้วยครับ
Re: Copy Sheet1 ไป Sheet2 แบบข้าม workbook แบบrealtime
Posted: Mon Nov 21, 2016 11:39 pm
by snasui

อ่านที่ผมตอบไว้ ไม่เข้าใจตรงไหนให้ถามตรงนั้น ที่ผมเขียนไปมันมีความหมายทุกโพสต์ครับ

Re: Copy Sheet1 ไป Sheet2 แบบข้าม workbook แบบrealtime
Posted: Tue Nov 22, 2016 9:21 pm
by sakajohn
อาจารย์ครับ ตอนนี้ผมใช้วิธีคือ เขียน code เมื่อเปิดไฟล์งานหลักขึ้นมาให้เปิด workbook 2 ขึ้นมาด้วย โดยใช้ Code
Code: Select all
Private Sub Workbook_Open()
ChDir "D:\"
Workbooks.Open Filename:="D:\Plan\Book2.xlsm"
Windows("plannew.xlsm").Activate
End Sub
จากนั้นผมก็เขียน code เมื่อเกิดการเปลี่ยนแปลงที่ sheet M01 ของworkbook Plannew ให้ sheet 1 ที่ workbook Book2 เปลี่ยนแปลงค่าเหมือนกัน
Code: Select all
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Workbooks("Book2.xlsm").Worksheets("Sheet1").Range("A3:O4000").Value = _
Workbooks("plannew.xlsm").Worksheets("M01").Range("B3:P4000").Value
End Sub
แต่พอเรา Click ที่ cell ของ M01 มันจะขึ้นแถบด้านล่างว่า filling cell แล้วต้องรอนานมากครับกว่ามันจะเสร็จ เป็นเพราะอะไรครับ แล้วมีวิธีแก้ไขไหมครับ
Re: Copy Sheet1 ไป Sheet2 แบบข้าม workbook แบบrealtime
Posted: Tue Nov 22, 2016 10:11 pm
by snasui

เนื่องจากกำหนด Book2.xlsm ให้เป็น Shared File การทำงานจึงช้าลงครับ