VBA trong word để đưa dữ liệu vào file Excel đang đóng

Liên hệ QC

phanminhphuong

Thành viên hoạt động
Tham gia
26/7/13
Bài viết
127
Được thích
68
Hỏi cách sử dụng FileSystemObject để lấy tên file*.doc chỉnh sửa cuối cùng

Mọi người giúp giải quyết vấn đề:
- Mình có file Nguon.doc & Dich.xls trong cùng thư mục.
- Code VBA đặt trong file Nguon.doc
- Khi đóng (hoặc mở) file Nguon.doc (tức là có động chạm đến file này) thì VBA sẽ ghi vào ô D5 tại Sheet1 của file Dich.xls (đang đóng)
Có thể dùng Code đơn giản cho Nguon.doc như bên dưới:
Mã:
Private Sub Document_Close() 'Open
Dim oExcel As Object, oWBook As Object
    Set oExcel = CreateObject("EXCEL.APPLICATION")
    Set oWBook = oExcel.Workbooks.Open(ThisDocument.Path & "\" & "Dich.xls")
        oWBook.Worksheets("Sheet1").Cells(5, 4) = "Ho so " & ThisDocument.Name
    oWBook.Save: oWBook.Close: Set oWBook = Nothing
    oExcel.Quit: Set oExcel = Nothing
End Sub

Tuy nhiên: Khi file Dich.xls có liên kết/ link với Workbook khác thì khi chạy code trên nó sẽ hiện lên 1 đống bảng câu hỏi: Update link & 1 số thứ khác...?
với Update link có thể sử dụng:
Mã:
Workbooks.Open FileNmae:="C:\My Documents\LinkedBook.xls", UpdateLinks:=xlUpdateLinksAlways

Vấn đề là: Mình muốn hỏi xem có code VBA nào trên WORD có thể ghi dữ liệu vào file EXCEL đang đóng mà không hiện lên thông báo nào không ??? (mở và thoát Excel âm thầm như dùng ADO chẳng hạn).
Many tks.
 

File đính kèm

  • Word VBA - put data to Close Workbook.zip
    17.1 KB · Đọc: 43
Lần chỉnh sửa cuối:
Loay hoay cả ngày không giải quyết được vấn đề đành viết code theo chiều ngược lại. Code trong Excel file Dich.xls để tìm file chỉnh sửa cuối cùng đưa vào ô D5
Mã:
Private Sub Workbook_Open()
    Dim FSO, oFile1, oFile2, sPath As String
    sPath = ThisWorkbook.Path & "\"
    Set FSO = CreateObject("Scripting.FileSystemObject")
    Set oFile1 = FSO.GetFile(sPath & "Nguon1.doc")
    Set oFile2 = FSO.GetFile(sPath & "Nguon2.doc")
        If oFile1.DateLastModified > oFile2.DateLastModified Then
            Sheet1.Cells(5, 4) = "Ho so Nguon1.doc"
        Else
            Sheet1.Cells(5, 4) = "Ho so Nguon2.doc"
        End If
End Sub

Vấn đề đặt ra là: trong 1 folder có rất nhiều file *.doc chẳng hạn, mình muốn chạy code Sub Workbook_Open để tìm ra file word nào có 2 kí tự đầu tiên la "2." (tức là 2.*.doc)được chỉnh sửa cuối cùng để lấy tên file đó đưa vào 1 cell của file excel.
(chắc chắn trong folder của mình có ít nhất là 5 file dạng "2.*.doc")
Xin cám ơn
 

File đính kèm

  • Last doc MODIFIED.zip
    24.1 KB · Đọc: 25
Lần chỉnh sửa cuối:
Bạn cho duyệt 1 vòng qua các File, lấy những file có tên dạng 2*.doc để kiểm tra xem này chỉnh sửa là bao nhiêu, nếu cái nào chỉnh sửa sau thì lấy.
Bạn tham khảo
Mã:
Sub GetLastModify()
    Dim Fso As Object, fd As Object, oFile As Object
    Dim sPath As String, DateMdf As Date, TargetFile As String
    sPath = ThisWorkbook.Path & "\"
    Set Fso = CreateObject("Scripting.FileSystemObject")
    Set fd = Fso.GetFolder(sPath)
    For Each oFile In fd.Files
        If oFile.Name Like "2.*.doc" Then
            If oFile.DateLastModified > DateMdf Then
                DateMdf = oFile.DateLastModified
                TargetFile = oFile.Name
            End If
        End If
    Next
    Sheet1.Cells(5, 4) = TargetFile
End Sub
 
Bạn cho duyệt 1 vòng qua các File, lấy những file có tên dạng 2*.doc để kiểm tra xem này chỉnh sửa là bao nhiêu, nếu cái nào chỉnh sửa sau thì lấy.
Bạn tham khảo
Mã:
Sub GetLastModify()
    Dim Fso As Object, fd As Object, oFile As Object
    Dim sPath As String, DateMdf As Date, TargetFile As String
    sPath = ThisWorkbook.Path & "\"
    Set Fso = CreateObject("Scripting.FileSystemObject")
    Set fd = Fso.GetFolder(sPath)
    For Each oFile In fd.Files
        If oFile.Name Like "2.*.doc" Then
            If oFile.DateLastModified > DateMdf Then
                DateMdf = oFile.DateLastModified
                TargetFile = oFile.Name
            End If
        End If
    Next
    Sheet1.Cells(5, 4) = TargetFile
End Sub
Cảm ơn bạn dhn46.
Code chạy tốt. Đúng là đoạn này mình chưa nghĩ ra "If oFile.Name Like "2.*.doc" Then"
Tks.
 
Web KT
Back
Top Bottom