Hỏi sao không chạy được Macro Exel 2003 trong Excel 2007.

Liên hệ QC

minhnam1803

Thành viên mới
Tham gia
6/2/11
Bài viết
21
Được thích
0
Em có 1 số macro trong file excel version 2003, tuy nhiên khi sử dụng trong excel 2007 thì không chạy được, bị báo lỗi, em đã save as sang dạng file excel 2007 có chứa macro.

Macro cụ thể ở đây là lấy list file trong 1 thư mục nào đó để đưa vào cell trong 1 sheet nào đó. Macro này trong excel 2003 chạy ngon lành.

Bác nào biết chỉ giùm em, xin cám ơn trước.

Em mới reg nick, nếu topic mở ở đây chưa phù hợp, nhờ bác mod chuyển giùm.
 
Em có 1 số macro trong file excel version 2003, tuy nhiên khi sử dụng trong excel 2007 thì không chạy được, bị báo lỗi, em đã save as sang dạng file excel 2007 có chứa macro.

Macro cụ thể ở đây là lấy list file trong 1 thư mục nào đó để đưa vào cell trong 1 sheet nào đó. Macro này trong excel 2003 chạy ngon lành.

Bác nào biết chỉ giùm em, xin cám ơn trước.

Em mới reg nick, nếu topic mở ở đây chưa phù hợp, nhờ bác mod chuyển giùm.
Chắc bạn dùng FileSearch để lấy list file trong thư mục rồi, đúng không? Cái này không áp dụng được trong Excel 2007 nên báo lỗi là chuyện thường
Vậy:
- Hoặc là bạn viết lại code khác (trên diễn đàn có đầy)
- Hoặc là đưa file của bạn lên để mọi người sửa giúp
 
Chắc bạn dùng FileSearch để lấy list file trong thư mục rồi, đúng không? Cái này không áp dụng được trong Excel 2007 nên báo lỗi là chuyện thường
Vậy:
- Hoặc là bạn viết lại code khác (trên diễn đàn có đầy)
- Hoặc là đưa file của bạn lên để mọi người sửa giúp


Cám ơn bác đã chỉ dẫn.

1. Bác có thể chỉ giùm em phần code khác trong diễn đàn đuợc không?


2. Đây là phần code ver cũ chạy bình thuờng trong ễcl 2003 bác ạ.
Function CreateFileList(FileFilter As String, IncludeSubFolder As Boolean) As Variant
' tra ve ten t?p tin day du cho cac files thoa dieu kien trong thu muc hien hanh'

Dim FileList() As String, FileCount As Long

CreateFileList = "": Erase FileList

If FileFilter = "" Then FileFilter = "*.*" ' tat ca cac tap tin

With Application.FileSearch
.NewSearch: .LookIn = CurDir
.Filename = FileFilter
.SearchSubFolders = IncludeSubFolder
.FileType = msoFileTypeAllFiles
If .Execute(SortBy:=msoSortByFileName, SortOrder:=msoSortOrderAscending) = 0 Then Exit Function

ReDim FileList(.FoundFiles.Count)

For FileCount = 1 To .FoundFiles.Count
FileList(FileCount) = .FoundFiles(FileCount)
'size_file(filecount)=.
Next FileCount
.FileType = msoFileTypeExcelWorkbooks
End With

CreateFileList = FileList

Erase FileList

End Function


Sub TestCreateFileList()
Dim k As Long

Dim FileNamesList As Variant, i As Integer
'---------------------
ChDir "D:\Documents\My Documents "
'----------------------
FileNamesList = CreateFileList("*.*", False) 'Thuc hien tim kiem File bao gom cac thu muc con

' Dua ra ket qua
'Range("A:A").ClearContents

ActiveSheet.Cells(2, 1).Value = "Test1.xls"

k = 1
For i = 1 To UBound(FileNamesList)

If InStr(1, FileNamesList(i), "_files\", 0) Then
Else
ActiveSheet.Cells(4 + k, 2).Value = FileNameOnly(FileNamesList(i))
ActiveSheet.Cells(4 + k, 1).Value = Replace(FileNamesList(i), FileNameOnly(FileNamesList(i)), "", 1)
ActiveSheet.Cells(4 + k, 4).Value = Str(Round(Val(FileLen(FileNamesList(i))) / 1024, 0))
k = k + 1
End If
Next i
End Sub
 
Cái dòng có biểu tượng mặt cười nó là thế này (không có dấu cách giữa " và :, do em thêm vào, chắc lẫn với icon của diễn đàn)

CreateFileList = "" : Erase FileList
 
Cái dòng có biểu tượng mặt cười nó là thế này (không có dấu cách giữa " và :, do em thêm vào, chắc lẫn với icon của diễn đàn)

CreateFileList = "" : Erase FileList
Bạn cứ đưa file lên diển đàn đi cho dễ. Còn không thì tham khảo bài viết này:
http://www.giaiphapexcel.com/forum/showthread.php?25782-Duy%E1%BB%87t-file-Excel-trong-sub-folder&
Hoặc độc đáo hơn:
http://www.giaiphapexcel.com/forum/showthread.php?7146-Đố-vui-về-VBA!&p=291700#post291700
 
File đây các bác. (20 ký tự )
Đường link ở trên tôi đã cho rồi, bạn cứ thế code vào thôi
Nó đây:
PHP:
Public Arr, iR As Long
Private Sub ListFilesInFolder(FolderName As String, InSub As Boolean)
  Dim FileItem, SubFolder, FileName As String
  On Error GoTo ExitSub
  With CreateObject("Scripting.FileSystemObject")
    With .GetFolder(FolderName)
      For Each FileItem In .Files
        iR = iR + 1
        Arr(iR, 1) = FileItem.ParentFolder
        Arr(iR, 2) = FileItem.Name
        Arr(iR, 3) = FileItem.Size
      Next FileItem
      If InSub Then
        For Each SubFolder In .subFolders
          ListFilesInFolder SubFolder.Path, True
        Next SubFolder
      End If
    End With
  End With
ExitSub:
End Sub
PHP:
Sub GetFileList()
  Dim i As Long
  ReDim Arr(1 To 60000, 1 To 3)
  iR = 0
  Range("A5:C60000").ClearContents
  With Application.FileDialog(4)
    .Show: .AllowMultiSelect = False
    ListFilesInFolder .SelectedItems(1), True
  End With
  Range("A5").Resize(iR, 3).Value = Arr
End Sub
Cách dùng:
- Mở file
- Bấm nút Run code và chọn thư mục mà bạn muốn lấy tên file
 

File đính kèm

Lần chỉnh sửa cuối:
Web KT

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

Back
Top Bottom