Re: Copy Sheet1 ไป Sheet2 แบบข้าม workbook แบบrealtime
Posted: Tue Nov 22, 2016 10:47 pm
มีวิธีแก้ไหมครับsnasui wrote:เนื่องจากกำหนด Book2.xlsm ให้เป็น Shared File การทำงานจึงช้าลงครับ
คลังคำตอบแห่งความรู้จากคนไทย เพื่อโลกที่ต้องการเข้าใจในสิ่งเล็ก ๆ อย่างลึกซึ้ง
http://snasui.com/
มีวิธีแก้ไหมครับsnasui wrote:เนื่องจากกำหนด Book2.xlsm ให้เป็น Shared File การทำงานจึงช้าลงครับ
Code: Select all
Workbook("Book1").Worksheets("Sheet2").Range("C1:C10").Value = Workbook("Book2").Worksheets("Sheet1").Range("A1:A10").Valueขอโทษจริงๆครับอาจารย์ ความหมายของผมก็คือเราเปิดไฟล์ทั้ง 2 พร้อมกันครับ ผมไม่ได้ต้องการเขียนไฟล์ที่ปิดครับ เพียงแต่ไฟล์มันจะอยู่อีกเครื่อง หรือกรณีที่อยู่คนละเครื่อง มันจะไม่สามารถทำกับไฟล์ที่เปิดพร้อมกันได้หรือเปล่าครับsnasui wrote:ไม่ว่า Book2 จะอยู่ที่ใดก็ตาม การทำงานแบบข้ามไฟล์จะต้องเปิดไฟล์ขึ้นมาทำงานพร้อมกัน อันนี้เป็นแบบง่าย ยกเว้นมีความสามารถเขียน SQL ได้จึงสามารบันทึกข้อมูลลงในไฟล์ที่ปิดอยู่ได้ หากจะทำเช่นนั้น Code ที่เขียนมานี้ไม่สามารถใช้ได้เพราะเป็นการเขียนคนละแบบ แตกต่างกันอย่างสิ้นเชิง ต้องศึกษาอีกพอควร ต้องเขียนมาเอง ติดแล้วค่อยถามกันครับ
เห็นถามคำถามเดียวกันนี้มาหลายรอบมาก และผมก็ได้ตอบไปหลายรอบแล้วเช่นกัน ขอให้ทราบว่า 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:=parh & bookname
Workbooks("Book1").Worksheets("Sheet2").Range("C1:C10").Value = _
Workbooks("Book2").Worksheets("Sheet1").Range("A1:A10").Value
tBook.Close , TrueCode: 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 SubSet tBook = Workbooks.Open Filename:=parh & bookname[C\] แล้วตรงคำว่า [C]parh[C\] ต้องเปลี่ยนเป็น [C]path[C\] ไหมครับ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 SubSet tBook = Workbooks.Open Filename:=parh & bookname แล้วตรงคำว่า parh ต้องเปลี่ยนเป็น path ไหมครับ ตัวอย่างคือไฟล์ที่มาทำที่ทำงานครับ คือ ไฟล์ book 1 และ Book 2 จะไว้ที่ ไดรฟ์ D ครับsakajohn wrote:Set tBook = Workbooks.Open Filename:=parh & bookname แล้วตรงคำว่า parh ต้องเปลี่ยนเป็น path ไหมครับ
Set tBook = Workbooks.Open Filename:=bookpath & booknameCode: 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 , Truebookpath = "D:\Downloads\" คือ ไฟล์ต้องอยู่ที่ ไดรฟ์ D folder Downloadbookname = "Book1.xlsm" คือ ชื่อไฟล์ ที่อยู่ใน ไดรฟ์ D โฟลเดอร์ DownloadSet 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 ผมเข้าใจถูกต้องใช่ไหมครับ Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range) ที่ sheet 2 ของ book 2 ถูกต้องไหมครับ ถ้าใช่ทำไมถึงerror ครับ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
Set tBook = Workbooks.Open Filename:=bookpath & bookname ก็จะเป็นตัวสีแดงครับ พอคีย์ค่าในเซล C1:C10 ฟ้อง compile error : Syntax errorSet tBook = Workbooks.Open Filename:=bookpath & bookname พอพิมพ์ถึงตรงนี้ จะไปไฮไลท์ ตรงคำว่า filename error expected; end of statement ครับ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 SubCode: 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 SubCode: 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 Subbookpath = "C:\Downloads\" เพิ่ม : จากนั้นพอเราแก้ที่ Book 2 sheet 2 cell c1:c10 มันจะเปิด book 1 แล้วก็ขึ้นกล่องโต้ตอบว่าเราจะ Save wookbook 1 ไหม แต่มันไม่มีค่าอยู่ใน cell A1:A10 เลยครับ เป็น sheet เปล่า