Page 1 of 1

รบกวนปรึกษาครับ วิธีเปลี่ยน link หลายไฟล์

Posted: Sat Oct 28, 2017 10:18 am
by sngul
ขอเรียนปรึกษา พอมีวิธีเปลี่ยน link ทีละไฟล์จนหมด folder ไหมครับ ... คือผมมี file รายงานประจำวัน(ทุกวัน) ตอนนี้ผมสร้างไฟล์ Report เพื่อดึงข้อมูลเฉพาะที่ต้องการมารวมกันไว้ใน sheet1 แล้ว copy ข้อมูลมาเก็บไว้ใน shhet2 แบบเป็นแถวลงมาเลื่อยๆวันต่อวัน เพื่อสรุปเป็นรายงาน ผมทำแบบนี้ทุกวัน ไม่มีปัญหาอะไร ...แต่พอมาวันนี้ต้องการเพิ่มข้อมูลจาก file รายงาน ซึ่งผมต้อง link ข้อมูลเพิ่มใน ไฟล์ report,sheet1 ข้อมูลของวันนี้และหลังจากวันนี้ไม่มีปัญหา แต่ต้องการข้อมูลจากวันแรก .... ผมต้อง Data>>Edit Link>>รายงานวันแรก--ถึงปัจจุบัน >> Copy >> Past เป็นร้อยครั้ง ใช้เวลามากเลยครับ T_T พอมีทางทำได้ไหมครับ vba ก็ได้ ผมทำได้แค่บันทึก vba แต่แก้ code ให้เปลี่ยน link ไปเลื่อยๆจนครบไม่ได้ ... ขอบคุณครับ ..

Re: รบกวนปรึกษาครับ วิธีเปลี่ยน link หลายไฟล์

Posted: Sat Oct 28, 2017 10:31 am
by snasui
:D ผมอ่านแล้วเข้าใจว่าเป็นการนำข้อมูลจากหลายไฟล์มาเรียงต่อกันในไฟล์เดียว สามารถใช้ VBA เข้ามาช่วยได้ครับ

ลองดูจาก Link นี้ครับ wordpress/collect-data-multiple-files/

ลองนำ Code ไปปรับให้เข้ากับงานของตัวเองก่อน ติดตรงไหนแล้วค่อยถามกันครับ

Re: รบกวนปรึกษาครับ วิธีเปลี่ยน link หลายไฟล์

Posted: Sat Oct 28, 2017 10:33 am
by sngul
ได้ครับผม..ขอบคุณครับ..

Re: รบกวนปรึกษาครับ วิธีเปลี่ยน link หลายไฟล์

Posted: Sat Oct 28, 2017 12:36 pm
by sngul
ผมได้เข้าดู vdo แล้วครับ เนื่องจากข้อมูลที่ผมทำ มาจากหลาย cell หลาย sheet กระจายกันใน ไฟล์รายงาน ผมจึงต้องนำมาจัดเรียงก่อนโดยผมใช้การ link เข้ามาเก็บในแถวเดียว แล้วค่อยส่งไปจัดเก็บ ผมลองบันทึก มาโครเก็บข้อมูลให้ต่อท้ายกันได้แล้วเหลือ code เปลี่ยน link เป็นไฟล์อื่นไปเลื่อยๆจนหมดครับ กรุณาชี้แนะด้วยครับเสียเวลากับการ link ทีละ ไฟล์มากเลยตอนนี้..ขอบคุณครับ..

Re: รบกวนปรึกษาครับ วิธีเปลี่ยน link หลายไฟล์

Posted: Sat Oct 28, 2017 1:16 pm
by snasui
:D ตัวอย่าง Code ครับ

Code: Select all

Dim filePath As String
Dim path As String, oldStr As String

path = ThisWorkbook.path
filePath = Dir(path & "\" & "*.xlsx")
Do While filePath <> ""
    Sheets("Sheet1").Select
    Range("b3").Formula = "='" & path & "\[" & filePath & "]Sheet1'!b3"
    Range("b3:e3").FillRight
    Application.Goto Reference:="LinkSource"
    Selection.Copy
    Sheets("Sheet2").Select
    Range("B2").Select
    Selection.End(xlDown).Select
    ActiveCell.Offset(1, 0).Select
    'Range("B3").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    filePath = Dir()
Loop
Sheets("Sheet1").Select
Range("A1").Select
Application.CutCopyMode = False


Re: รบกวนปรึกษาครับ วิธีเปลี่ยน link หลายไฟล์

Posted: Sat Oct 28, 2017 1:35 pm
by sngul
ขอบคุณครับ ^_^

Re: รบกวนปรึกษาครับ วิธีเปลี่ยน link หลายไฟล์

Posted: Sat Oct 28, 2017 9:29 pm
by sngul
ขออนุญาตรบกวนอีกครับ ถ้าจะเขียน code ให้ ChangeLink Name:= _
"C:\ExcelTest\Fa1.xlsx"
"C:\ExcelTest\Fa2.xlsx", Type:=xlExcelLinks ให้ file Fa1 เปลี่ยนเป็น Fa2 ถึง Fa5 พอจะเป็นไปได้ไหมครับ .. :)

Code: Select all

  ActiveWorkbook.ChangeLink Name:= _
        "C:\ExcelTest\Fa1.xlsx", NewName:= _
        "C:\ExcelTest\Fa2.xlsx", Type:=xlExcelLinks
        Application.Goto Reference:="LinkSource"
    Selection.Copy
    Sheets("Sheet2").Select
    Range("B2").Select
    Selection.End(xlDown).Select
    ActiveCell.Offset(1, 0).Select
    'Range("B3").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    filePath = Dir()
Loop
Sheets("Sheet1").Select
Range("A1").Select
Application.CutCopyMode = False

Re: รบกวนปรึกษาครับ วิธีเปลี่ยน link หลายไฟล์

Posted: Sat Oct 28, 2017 10:24 pm
by snasui
:D ตัวอย่าง Code ครับ

Code: Select all

Dim arr1 As Variant, arr2 As Variant
Dim i As Integer

arr1 = Array("Fa1", "Fa2", "Fa3", "Fa4")
arr2 = Array("Fa2", "Fa3", "Fa4", "Fa5")

For i = 0 To UBound(arr1)
    ActiveWorkbook.ChangeLink Name:= _
    "C:\ExcelTest\" & arr1(i) & ".xlsx", NewName:= _
    "C:\ExcelTest\" & arr2(i) & ".xlsx", Type:=xlExcelLinks
    
     Application.Goto Reference:="LinkSource"
    Selection.Copy
    Sheets("Sheet2").Select
    Range("B2").Select
    Selection.End(xlDown).Select
    ActiveCell.Offset(1, 0).Select
    'Range("B3").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
    :=False, Transpose:=False
    Sheets("Sheet1").Select
    Range("A1").Select
    Application.CutCopyMode = False
Next i

Re: รบกวนปรึกษาครับ วิธีเปลี่ยน link หลายไฟล์

Posted: Sun Oct 29, 2017 5:16 am
by sngul
ขอบพระคุณมากครับผม code นี้ช่วยผมได้เยอะเลยครับ..ขอบคุณจริงๆ ครับ อาจารย์... :thup: :D