Sửa code: Chạy code cho tất cả các File trong folder nhưng nó báo lỗi vì tên file có dấu tiếng Việt

Liên hệ QC

LienDong

Thành viên thường trực
Tham gia
22/11/12
Bài viết
218
Được thích
46
Nghề nghiệp
Ai nói đúng thì làm!
Em có nhờ anh, chị sưu tầm được code: chạy code cho tất cả các file trong folder nhưng code báo lỗi nếu như tên file có dấu tiếng Việt.
Dù em cũng đã sưu tầm được

Nhưng em không muốn đổi tên file của người khác gởi, vậy em nhờ anh, chị giúp em sửa code ở dưới

Sub LoopThroughFiles()
Dim xFd As FileDialog
Dim xFdItem As Variant
Dim xFileName As String
Set xFd = Application.FileDialog(msoFileDialogFolderPicker)
If xFd.Show = -1 Then
xFdItem = xFd.SelectedItems(1) & Application.PathSeparator
xFileName = Dir(xFdItem & "*.xls*")
Do While xFileName <> ""
With Workbooks.Open(xFdItem & xFileName)
'your code here
End With
xFileName = Dir
Loop
End If
End Sub


( nguồn code: https://www.extendoffice.com/documents/excel/5332-excel-run-macro-multiple-workbooks.html)
Em cảm ơn các anh, chị!
 
Em có nhờ anh, chị sưu tầm được code: chạy code cho tất cả các file trong folder nhưng code báo lỗi nếu như tên file có dấu tiếng Việt.
Dù em cũng đã sưu tầm được

Nhưng em không muốn đổi tên file của người khác gởi, vậy em nhờ anh, chị giúp em sửa code ở dưới

Sub LoopThroughFiles()
Dim xFd As FileDialog
Dim xFdItem As Variant
Dim xFileName As String
Set xFd = Application.FileDialog(msoFileDialogFolderPicker)
If xFd.Show = -1 Then
xFdItem = xFd.SelectedItems(1) & Application.PathSeparator
xFileName = Dir(xFdItem & "*.xls*")
Do While xFileName <> ""
With Workbooks.Open(xFdItem & xFileName)
'your code here
End With
xFileName = Dir
Loop
End If
End Sub


( nguồn code: https://www.extendoffice.com/documents/excel/5332-excel-run-macro-multiple-workbooks.html)
Em cảm ơn các anh, chị!
Dùng hàm Dir nên nó bị lỗi với tên file Unicode là phải rồi. Bạn phải dùng Scripting.FileSystemObject nha
 
Upvote 0
Upvote 0
Cụ thể thì thay thế như thế nào ạ, anh hướng dẫn cho em nha (vì những code này là em sưu tầm nên chẳng hiểu nó)
Đại khái vầy
Mã:
Sub LoopThroughFiles()
  Dim fso As Object
  Dim xFd As FileDialog
  Dim xFile As Variant
  Dim sType As String
  Set fso = CreateObject("Scripting.FileSystemObject")
  Set xFd = Application.FileDialog(msoFileDialogFolderPicker)
  If xFd.Show = -1 Then
    For Each xFile In fso.GetFolder(xFd.SelectedItems(1)).Files
      sType = fso.GetFile(xFile).Type
      If sType Like "Microsoft Excel*Worksheet" Then
        With Workbooks.Open(xFile.Path)
          'Code here
        End With
      End If
    Next
  End If
End Sub
 
Upvote 0
Bạn tham khảo code

 
Upvote 0
Đại khái vầy
Mã:
Sub LoopThroughFiles()
  Dim fso As Object
  Dim xFd As FileDialog
  Dim xFile As Variant
  Dim sType As String
  Set fso = CreateObject("Scripting.FileSystemObject")
  Set xFd = Application.FileDialog(msoFileDialogFolderPicker)
  If xFd.Show = -1 Then
    For Each xFile In fso.GetFolder(xFd.SelectedItems(1)).Files
      sType = fso.GetFile(xFile).Type
      If sType Like "Microsoft Excel*Worksheet" Then
        With Workbooks.Open(xFile.Path)
          'Code here
        End With
      End If
    Next
  End If
End Sub
Nếu trong Folder mà có 1 ngàn file Excel to đùng là nhọc he Anh
 
Upvote 0
Chưa chắc đâu nha!
Nếu file chứa code đặt trong thư mục cần duyệt file thì... coi chừng nó sẽ duyệt luôn file "~....."
Dạ file của em có code LoopThroughFiles thì em để khác thư mục mà em muốn chạy code

Cảm ơn anh!
Nếu trong Folder mà có 1 ngàn file Excel to đùng là nhọc he Anh
Trong 1 Folder của em không quá 50 file đâu anh
 
Upvote 0
Web KT

Bài viết mới nhất

Back
Top Bottom