Page 1 of 1

อยากทราบวิธีการดึงข้อมูลจากต่างไฟล์ด้วย VBA ครับ

Posted: Wed Dec 28, 2011 10:52 pm
by testaman
สวัสดีครับอาจารย์ คือผมต้องการที่จะสร้าง Code เพื่อที่จะดึงข้อมูลจากต่างไฟล์ โดยที่ รับค่า ที่อยู่ไฟล์, ชื่อไฟล์, ชื่อชีต, cellที่อยู่ของข้อมูล

สาเหตุที่ต้องทำอย่างนี้ เพราะว่า ในไฟล์งาน มีข้อมูลของชื่อไฟล์อยู่แล้ว และต้องการจะนำมาใช้ในการดึงข้อมูลจากไฟล์นั้น แต่ให้วิธีการดึงปกติไม่ได้

เลยอยากทราบวิธีการเขียน VBA น่ะครับว่าจะเขียนการดึงข้อมูลจากต่างไฟล์อย่างไร

ขอบพระคุณล่วงหน้าครับ

Re: อยากทราบวิธีการดึงข้อมูลจากต่างไฟล์ด้วย VBA ครับ

Posted: Thu Dec 29, 2011 12:09 am
by snasui
:D กรณีต้องการใช้ VBA จำเป็นต้องเขียนมาก่อนครับ ติดตรงไหนก็ค่อยถามกันต่อได้เรื่อย ๆ โดยแจ้ง Module แจ้ง Procedure ด้วยเสมอเพื่อให้เข้าถึงปัญหาได้โดยไวครับ

Re: อยากทราบวิธีการดึงข้อมูลจากต่างไฟล์ด้วย VBA ครับ

Posted: Thu Dec 29, 2011 12:25 am
by testaman
ผมลองเขียนแบบนี้ พอลองใช้งาน macro แล้วมันเปิดแค่ file Data1 ขึ้นมาเฉยๆ ไม่ยอมดึงข้อมูลมาใส่

Code: Select all

Sub AddData()

Dim i As Long
Dim r As Range
Dim oFile As Variant
Dim oSheet As Variant
Dim oRange As Variant

Dim wbk As Workbook

On Error Resume Next
With Worksheets("Sheet1")
    Set r = .Range(.Range("A1"), Range("A65536").End(xlUp))
End With
    Application.EnableEvants = False
    oFile = "C:\Documents and Settings\Guest\Desktop\test\Data1.xls"
    oSheet = "Sheet1"
    
    If r.Cells(4, 3) <> "" Then
        Set wbk = Workbooks.Open(Filename:=oFile)
        Set oRange = wbk.Worksheets(oSheet).Range("G21:I21")
        
        Range("D4").Value = Application.WorksheetFunction.VLookup("¹¹.ÃÇÁ", oRange, 2, False)
        

    End If
    Application.EnableEvents = True
    
End Sub
ผมแนบไฟล์มาให้ด้วยครับ อยู่ใน Module2 ของ ไฟล์ Data

Re: อยากทราบวิธีการดึงข้อมูลจากต่างไฟล์ด้วย VBA ครับ

Posted: Thu Dec 29, 2011 8:00 am
by snasui
:D ลองดู Code ตามด้านล่างครับ

อย่าลืมเปลี่ยนตำแหน่งการอ้างอิงที่ "D:\test\Data1.xls" ให้เป็นตำแหน่งที่เก็บไฟล์จริง

Code: Select all

Sub AddData()

    Dim i As Long
    Dim r As Range
    Dim oFile As Variant
    Dim oSheet As Variant
    Dim oRange As Variant
    Dim wbk As Workbook
    
    'On Error Resume Next
    Application.EnableEvents = False
    
    With Worksheets("Sheet1")
        Set r = .Range(.Range("A1"), Range("A65536").End(xlUp))
    End With

    oFile = "D:\test\Data1.xls"
    oSheet = "Sheet1"
    
    If r.Cells(4, 3) <> "" Then
        Set wbk = Workbooks.Open(Filename:=oFile)
        Set oRange = wbk.Worksheets(oSheet).Range("G21:I21")
        Workbooks("Data.xls").Sheets("Sheet1") _
            .Range("D4").Value = Application.WorksheetFunction _
                .VLookup("ddd", oRange, 2, False)
    End If
    Application.EnableEvents = True
    
End Sub
สำหรับการทำข้อความที่เป็น Code VBA ให้แสดงเป็น Code ดูได้จากที่นี่ครับ viewtopic.php?f=3&t=1187&p=7403#p7403 เพื่อเพื่อน ๆ จะได้สะดวกในการอ่าน Code ครับ

Re: อยากทราบวิธีการดึงข้อมูลจากต่างไฟล์ด้วย VBA ครับ

Posted: Thu Dec 29, 2011 6:19 pm
by testaman
ขอบคุณมากครับ ใช้งานได้แล้ว :D