quyenpv
Thu nhặt kiến thức
- Tham gia
- 5/1/13
- Bài viết
- 719
- Được thích
- 97
- Giới tính
- Nam
- Nghề nghiệp
- Decode cuộc đời!
Em chào các anh chị trên diễn đàn!
Lâu ngày em lại nhờ anh chị sửa giúp code em đang dùng lấy giá trị của file đang đóng từ Folder, nay phát sinh thêm em muốn lấy cả SubFolder mà code em không lấy được mong anh chị xem và điều chỉnh giúp em với ạ
Khi chạy Code
Hình ảnh 1: Là code em đang chạy chỉ lấy được giá trị trong Folder
Hình ảnh 2: Là mong muốn lấy được cả SubFolder
Lâu ngày em lại nhờ anh chị sửa giúp code em đang dùng lấy giá trị của file đang đóng từ Folder, nay phát sinh thêm em muốn lấy cả SubFolder mà code em không lấy được mong anh chị xem và điều chỉnh giúp em với ạ
Khi chạy Code
Hình ảnh 1: Là code em đang chạy chỉ lấy được giá trị trong Folder
Hình ảnh 2: Là mong muốn lấy được cả SubFolder
Mã:
Option Explicit
Sub ImportWorksheets()
Dim sFile As String
Dim wsTarget As Worksheet
Dim wbSource As Workbook
Dim wsSource As Worksheet
Dim sht As Worksheet
Dim shtName As String
Dim LRow As Integer
Dim FOLDER_PATH As String
Dim rowTarget As Long
'Lay thu muc can thuc hien
FOLDER_PATH = GetFolder("") & "\"
Debug.Print FOLDER_PATH
'Thu muc can Check
shtName = InputBox(Prompt:="Enter the sheet name", Title:="Search Sheet")
rowTarget = 2
'Kiem tra duong dan thu muc chon co hop le khong
If Not FileFolderExists(FOLDER_PATH) Then
MsgBox "Specified folder does not exist, exiting!"
Exit Sub
End If
On Error GoTo errHandler
Application.ScreenUpdating = False
'Doi ten Worksheet neu thay doi
Set wsTarget = Sheets("Sheet1")
'loop through the Excel files in the folder
sFile = Dir(FOLDER_PATH & "*.xls*")
Do Until sFile = ""
'Mo file va chon Worksheet nguon
Set wbSource = Workbooks.Open(FOLDER_PATH & sFile)
For Each sht In wbSource.Worksheets
If sht.Name = shtName Then
Set wsSource = wbSource.Sheets(shtName)
'Lay du lieu dong cuoi cung
LRow = wsSource.Range("E" & wsSource.Rows.Count).End(xlUp).Row
'Lay thong tin data
With wsTarget
.Range("A" & rowTarget).Value = wsSource.Range("E" & LRow).Value
.Range("B" & rowTarget).Formula = "=HYPERLINK(""" & FOLDER_PATH & sFile & """,""Click Open File"")"
.Range("B" & rowTarget).Font.Underline = False
End With
rowTarget = rowTarget + 1
' Else
' MsgBox "No! " & shtName & " Khong co trong File " & sFile, vbCritical, "Not Found"
End If
Next sht
wbSource.Close SaveChanges:=False
sFile = Dir()
Loop
errHandler:
On Error Resume Next
Application.ScreenUpdating = True
Set wsSource = Nothing
Set wbSource = Nothing
Set wsTarget = Nothing
End Sub
Private Function FileFolderExists(strPath As String) As Boolean
If Not Dir(strPath, vbDirectory) = vbNullString Then FileFolderExists = True
End Function
Function GetFolder(strPath As String) As String
Dim fldr As FileDialog
Dim sItem As String
Set fldr = Application.FileDialog(msoFileDialogFolderPicker)
With fldr
.Title = "Select a Folder"
.AllowMultiSelect = False
.InitialFileName = strPath
If .Show <> -1 Then GoTo NextCode
sItem = .SelectedItems(1)
End With
NextCode:
GetFolder = sItem
Set fldr = Nothing
End Function