: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

Copy Sheet1 ไป Sheet2 แบบข้าม workbook แบบrealtime

ฟอรัมถาม-ตอบปัญหาการใช้งานสูตรและฟังก์ชัน Excel
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. กรุณาแจ้งผลการใช้งานเมื่อได้รับคำตอบว่าตรงกับความต้องการหรือไม่
sakajohn
Member
Member
Posts: 229
Joined: Tue Aug 06, 2013 10:55 am
Excel Ver: 2010

Re: Copy Sheet1 ไป Sheet2 แบบข้าม workbook แบบrealtime

#21

Post by sakajohn »

snasui wrote::D เนื่องจากกำหนด Book2.xlsm ให้เป็น Shared File การทำงานจึงช้าลงครับ
มีวิธีแก้ไหมครับ
User avatar
snasui
Site Admin
Site Admin
Posts: 31253
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: Copy Sheet1 ไป Sheet2 แบบข้าม workbook แบบrealtime

#22

Post by snasui »

:lol: ถ้าต้องแชร์ ไม่มีวิธีแก้ครับ
sakajohn
Member
Member
Posts: 229
Joined: Tue Aug 06, 2013 10:55 am
Excel Ver: 2010

Re: Copy Sheet1 ไป Sheet2 แบบข้าม workbook แบบrealtime

#23

Post by sakajohn »

อาจารย์ครับ ถ้าเราเขียน code ว่าถ้า sheet M01 มีข้อมูลเพิ่มเข้ามา ให้ทำการ copyแถวที่เพิ่มมาใหม่ และไปวางไว้ที่ Book 2 โดยให้ข้อมูลต่อกันไปเรื่อยๆ แบบนี้จะติดปัญหาอะไรไหมครับ
User avatar
snasui
Site Admin
Site Admin
Posts: 31253
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: Copy Sheet1 ไป Sheet2 แบบข้าม workbook แบบrealtime

#24

Post by snasui »

:D เมื่อมีข้อมูลมากขึ้นเรื่อย ๆ เป็นหลักพัน หลักหมื่นก็จะติดปัญหาเช่นเดิมครับ
sakajohn
Member
Member
Posts: 229
Joined: Tue Aug 06, 2013 10:55 am
Excel Ver: 2010

Re: Copy Sheet1 ไป Sheet2 แบบข้าม workbook แบบrealtime

#25

Post by sakajohn »

ถ้าอย่างนั้นก็คงต้องกลับไปทำแบบสูตรเดิม คือ

Code: Select all

Workbook("Book1").Worksheets("Sheet2").Range("C1:C10").Value = Workbook("Book2").Worksheets("Sheet1").Range("A1:A10").Value
แต่ถ้า Book 2 อยู่อีกเครื่องในวง Lan เราต้องเพิ่มcodeอย่างไรครับ รบกวนชี้แนะด้วยครับ
User avatar
snasui
Site Admin
Site Admin
Posts: 31253
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: Copy Sheet1 ไป Sheet2 แบบข้าม workbook แบบrealtime

#26

Post by snasui »

:D ไม่ว่า Book2 จะอยู่ที่ใดก็ตาม การทำงานแบบข้ามไฟล์จะต้องเปิดไฟล์ขึ้นมาทำงานพร้อมกัน อันนี้เป็นแบบง่าย ยกเว้นมีความสามารถเขียน SQL ได้จึงสามารบันทึกข้อมูลลงในไฟล์ที่ปิดอยู่ได้ หากจะทำเช่นนั้น Code ที่เขียนมานี้ไม่สามารถใช้ได้เพราะเป็นการเขียนคนละแบบ แตกต่างกันอย่างสิ้นเชิง ต้องศึกษาอีกพอควร ต้องเขียนมาเอง ติดแล้วค่อยถามกันครับ

เห็นถามคำถามเดียวกันนี้มาหลายรอบมาก และผมก็ได้ตอบไปหลายรอบแล้วเช่นกัน ขอให้ทราบว่า Code แค่นั้นไม่สามารถใช้กับไฟล์ที่ปิดอยู่ได้ครับ คิดว่าเป็นคำตอบที่ชัดเจนนะครับ
sakajohn
Member
Member
Posts: 229
Joined: Tue Aug 06, 2013 10:55 am
Excel Ver: 2010

Re: Copy Sheet1 ไป Sheet2 แบบข้าม workbook แบบrealtime

#27

Post by sakajohn »

snasui wrote: :D ไม่ว่า Book2 จะอยู่ที่ใดก็ตาม การทำงานแบบข้ามไฟล์จะต้องเปิดไฟล์ขึ้นมาทำงานพร้อมกัน อันนี้เป็นแบบง่าย ยกเว้นมีความสามารถเขียน SQL ได้จึงสามารบันทึกข้อมูลลงในไฟล์ที่ปิดอยู่ได้ หากจะทำเช่นนั้น Code ที่เขียนมานี้ไม่สามารถใช้ได้เพราะเป็นการเขียนคนละแบบ แตกต่างกันอย่างสิ้นเชิง ต้องศึกษาอีกพอควร ต้องเขียนมาเอง ติดแล้วค่อยถามกันครับ

เห็นถามคำถามเดียวกันนี้มาหลายรอบมาก และผมก็ได้ตอบไปหลายรอบแล้วเช่นกัน ขอให้ทราบว่า Code แค่นั้นไม่สามารถใช้กับไฟล์ที่ปิดอยู่ได้ครับ คิดว่าเป็นคำตอบที่ชัดเจนนะครับ
ขอโทษจริงๆครับอาจารย์ ความหมายของผมก็คือเราเปิดไฟล์ทั้ง 2 พร้อมกันครับ ผมไม่ได้ต้องการเขียนไฟล์ที่ปิดครับ เพียงแต่ไฟล์มันจะอยู่อีกเครื่อง หรือกรณีที่อยู่คนละเครื่อง มันจะไม่สามารถทำกับไฟล์ที่เปิดพร้อมกันได้หรือเปล่าครับ
User avatar
snasui
Site Admin
Site Admin
Posts: 31253
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: Copy Sheet1 ไป Sheet2 แบบข้าม workbook แบบrealtime

#28

Post by snasui »

:D ตัวอย่างการเปิดไฟล์ขึ้นมาทำงาน เมื่อเสร็จแล้วค่อยปิดไปตามด้านล่างครับ

Code: Select all

Dim boookpath As String, bookname As String, tBook As Workbook
bookpath = "C:\Downloads\"
bookname = "Book1.xlsx"
Set tBook = Workbooks.Open Filename:=parh & bookname
Workbooks("Book1").Worksheets("Sheet2").Range("C1:C10").Value = _
    Workbooks("Book2").Worksheets("Sheet1").Range("A1:A10").Value
tBook.Close , True
ตัวอย่างนี้ถือว่า Book2 คือตัวโปรแกรม เปิดไฟล์ Book1 มาทำงาน ทำเสร็จแล้วปิดครับ
sakajohn
Member
Member
Posts: 229
Joined: Tue Aug 06, 2013 10:55 am
Excel Ver: 2010

Re: Copy Sheet1 ไป Sheet2 แบบข้าม workbook แบบrealtime

#29

Post by sakajohn »

อาจารย์ครับ จาก code

Code: Select all

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim bookpath As String, bookname As String, tBook As Workbook
bookpath = "D:\Downloads\"
bookname = "Book1.xlsm"
Set tBook = Workbooks.Open Filename:=parh & bookname
Workbooks("Book1").Worksheets("Sheet2").Range("C1:C10").Value = _
    Workbooks("Book2").Worksheets("Sheet1").Range("A1:A10").Value
tBook.Close , True
End Sub
ผม save ไฟล์ Book1 กับ Book2 ไว้ที่ drive D:\Download ตอนที่ทำเครื่องที่บ้านใช้งานได้แต่พอมาทำเครื่องที่ทำงาน ขึ้น error Set tBook = Workbooks.Open Filename:=parh & bookname[C\] แล้วตรงคำว่า [C]parh[C\] ต้องเปลี่ยนเป็น [C]path[C\] ไหมครับ
sakajohn
Member
Member
Posts: 229
Joined: Tue Aug 06, 2013 10:55 am
Excel Ver: 2010

Re: Copy Sheet1 ไป Sheet2 แบบข้าม workbook แบบrealtime

#30

Post by sakajohn »

อาจารย์ครับ จาก code

Code: Select all

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim bookpath As String, bookname As String, tBook As Workbook
bookpath = "D:\Downloads\"
bookname = "Book1.xlsm"
Set tBook = Workbooks.Open Filename:=parh & bookname
Workbooks("Book1").Worksheets("Sheet2").Range("C1:C10").Value = _
    Workbooks("Book2").Worksheets("Sheet1").Range("A1:A10").Value
tBook.Close , True
End Sub
ผม save ไฟล์ Book1 กับ Book2 ไว้ที่ drive D:\Download ตอนที่ทำเครื่องที่บ้านใช้งานได้แต่พอมาทำเครื่องที่ทำงาน ขึ้น error Set tBook = Workbooks.Open Filename:=parh & bookname แล้วตรงคำว่า parh ต้องเปลี่ยนเป็น path ไหมครับ ตัวอย่างคือไฟล์ที่มาทำที่ทำงานครับ คือ ไฟล์ book 1 และ Book 2 จะไว้ที่ ไดรฟ์ D ครับ
You do not have the required permissions to view the files attached to this post.
User avatar
snasui
Site Admin
Site Admin
Posts: 31253
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: Copy Sheet1 ไป Sheet2 แบบข้าม workbook แบบrealtime

#31

Post by snasui »

sakajohn wrote:Set tBook = Workbooks.Open Filename:=parh & bookname แล้วตรงคำว่า parh ต้องเปลี่ยนเป็น path ไหมครับ
:D ประกาศตัวแปรไว้เช่นไรก็ให้นำตัวแปรนั้นมาใช้ครับ

:o ต้องขออภัยสำหรับ Code ด้านบน ผมเขียนตกไปหรือบังเอิญไปลบ ที่ถูกต้องจะเป็นด้านล่างครับ

Set tBook = Workbooks.Open Filename:=bookpath & bookname
sakajohn
Member
Member
Posts: 229
Joined: Tue Aug 06, 2013 10:55 am
Excel Ver: 2010

Re: Copy Sheet1 ไป Sheet2 แบบข้าม workbook แบบrealtime

#32

Post by sakajohn »

Code: Select all

bookpath = "D:\Downloads\"
bookname = "Book1.xlsm"
Set tBook = Workbooks.Open Filename:=parh & bookname
Workbooks("Book1").Worksheets("Sheet2").Range("C1:C10").Value = _
    Workbooks("Book2").Worksheets("Sheet1").Range("A1:A10").Value
tBook.Close , True
bookpath = "D:\Downloads\" คือ ไฟล์ต้องอยู่ที่ ไดรฟ์ D folder Download
bookname = "Book1.xlsm" คือ ชื่อไฟล์ ที่อยู่ใน ไดรฟ์ D โฟลเดอร์ Download
Set tBook = Workbooks.Open Filename:=bookpath & bookname กำหนดค่า tbook คือเปิดไฟล์ชื่อ Book1.xlsm ซึ่งอยู่ที่ โฟลเดอร์ Download ในไดรฟ์ D จากนั้นถ้าค่าที่ cell C1ถึง C10 ที่ Sheet 2 ของBook 2 มีการเปลี่ยนแปลง ก็ให้ค่า ที่Cell A1ถึง A10 ที่ sheet 1 ของ Book 1 มีค่าเหมือนกัน
tBook.Close , Trueจากนั้นก็ปิด Book1 ผมเข้าใจถูกต้องใช่ไหมครับ
ผมวางcodeไว้ที่ Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range) ที่ sheet 2 ของ book 2 ถูกต้องไหมครับ ถ้าใช่ทำไมถึงerror ครับ
User avatar
snasui
Site Admin
Site Admin
Posts: 31253
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: Copy Sheet1 ไป Sheet2 แบบข้าม workbook แบบrealtime

#33

Post by snasui »

:o แก้ไข Code ใหม่ตามด้านล่าง สังเกตการนำตัวแปรไปใช้ครับ

Code: Select all

Dim boookpath As String, bookname As String, tBook As Workbook
bookpath = "C:\Downloads\"
bookname = "Book1.xlsx"
Set tBook = Workbooks.Open Filename:=bookpath & bookname
tBook.Worksheets("Sheet2").Range("C1:C10").Value = _
    Workbooks("Book2").Worksheets("Sheet1").Range("A1:A10").Value
tBook.Close , True
sakajohn
Member
Member
Posts: 229
Joined: Tue Aug 06, 2013 10:55 am
Excel Ver: 2010

Re: Copy Sheet1 ไป Sheet2 แบบข้าม workbook แบบrealtime

#34

Post by sakajohn »

ทำไมแค่เอาcodeไปวาง Set tBook = Workbooks.Open Filename:=bookpath & bookname ก็จะเป็นตัวสีแดงครับ พอคีย์ค่าในเซล C1:C10 ฟ้อง compile error : Syntax error
User avatar
snasui
Site Admin
Site Admin
Posts: 31253
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: Copy Sheet1 ไป Sheet2 แบบข้าม workbook แบบrealtime

#35

Post by snasui »

:D กรณี Copy ไปวางแล้วเป็นตัวอักษรสีแดงให้คีย์ลงไปเองแทนการคัดลอกไปวางครับ
sakajohn
Member
Member
Posts: 229
Joined: Tue Aug 06, 2013 10:55 am
Excel Ver: 2010

Re: Copy Sheet1 ไป Sheet2 แบบข้าม workbook แบบrealtime

#36

Post by sakajohn »

Set tBook = Workbooks.Open Filename:=bookpath & bookname พอพิมพ์ถึงตรงนี้ จะไปไฮไลท์ ตรงคำว่า filename error expected; end of statement ครับ
sakajohn
Member
Member
Posts: 229
Joined: Tue Aug 06, 2013 10:55 am
Excel Ver: 2010

Re: Copy Sheet1 ไป Sheet2 แบบข้าม workbook แบบrealtime

#37

Post by sakajohn »

Code: Select all

Private Sub Worksheet_Change(ByVal Target As Range)
Dim bookpath As String, bookname As String, tBook As Workbook
bookpath = "C\Downloads\"
bookname = "Book1.xlsx"
Set tbook = workbooks.Open filename:=bookpath & bookname
tBook.Worksheets("Sheet2").Range("C1:C10").Value = _
     Workbooks("book2").Worksheets("sheet1").Range("A1:A10").Value
tBook.Close , True
End Sub
ตอนนี้พิมพ์ด้วยตัวเองทั้งหมด ก็ฟ้อง Syntax Error แล้วขึ้นสีแดงเหมือนเดิมครับ
sakajohn
Member
Member
Posts: 229
Joined: Tue Aug 06, 2013 10:55 am
Excel Ver: 2010

Re: Copy Sheet1 ไป Sheet2 แบบข้าม workbook แบบrealtime

#38

Post by sakajohn »

ตอนนี้ผมปรับ codeใหม่ครับ ใช่งานได้แต่ยังไม่สมบูรณ์ครับ คือเรายังต้องมาคลิ๊ก cell ใน sheet M01 ของ workbook plannew codeถึงจะทำงานครับ ถ้าเราจะให้มันทำงานเมื่อเราป้อนค่าเข้าไปเลยจะต้องแก้ไขcodeอย่างไรครับ

Code: Select all

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Workbooks.Open Filename:="G:\Plan\planning.xlsm"
Workbooks("planning.xlsm").Worksheets("M01").Range("A4:Q4000").Value = Workbooks("plannew.xlsm").Worksheets("M01").Range("A4:Q4000").Value
ActiveWindow.Close True
End Sub
You do not have the required permissions to view the files attached to this post.
User avatar
snasui
Site Admin
Site Admin
Posts: 31253
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: Copy Sheet1 ไป Sheet2 แบบข้าม workbook แบบrealtime

#39

Post by snasui »

:D ตัวอย่างการปรับ Code ครับ

Code: Select all

Private Sub Worksheet_Change(ByVal Target As Range)
Dim bookpath As String, bookname As String, tBook As Workbook
bookpath = "C\Downloads\"
bookname = "Book1.xlsx"
Set tbook = workbooks.Open (filename:=bookpath & bookname) ' Add "(" and ")"
tBook.Worksheets("Sheet2").Range("C1:C10").Value = _
     Workbooks("book2").Worksheets("sheet1").Range("A1:A10").Value
tBook.Close , True
End Sub
Code นี้ทำงานเมื่อมีการแก้ไขเซลล์ใด ๆ ในชีตที่วาง Code ข้างต้นนี้ครับ
sakajohn
Member
Member
Posts: 229
Joined: Tue Aug 06, 2013 10:55 am
Excel Ver: 2010

Re: Copy Sheet1 ไป Sheet2 แบบข้าม workbook แบบrealtime

#40

Post by sakajohn »

อาจารย์ครับผมลองใส่ code ของอาจารย์แล้วครับbookpath = "C:\Downloads\" เพิ่ม : จากนั้นพอเราแก้ที่ Book 2 sheet 2 cell c1:c10 มันจะเปิด book 1 แล้วก็ขึ้นกล่องโต้ตอบว่าเราจะ Save wookbook 1 ไหม แต่มันไม่มีค่าอยู่ใน cell A1:A10 เลยครับ เป็น sheet เปล่า
You do not have the required permissions to view the files attached to this post.
Post Reply