Nhờ viết code tạo Foldres từ dữ liệu trên bảng tính

Liên hệ QC

TrungChinhs

Thành viên tích cực
Tham gia
18/2/08
Bài viết
1,475
Được thích
2,468
Nghề nghiệp
Công chức
Chào các bạn: Code này tự tạo được thư mục con trong "D:\QUAN LY DU AN TDC" . Nhờ các bạn sửa giúp tôi code này để tự tạo được các thư mục tiếp theo từ dữ liệu trên bảng tính trong file đính kèm. Thanks !

Mã:
Sub StartHere()
On Error Resume Next
    For Each cls In [g3:g100].SpecialCells(2)
        CreateFolders cls.Value, "D:\QUAN LY DU AN TDC"
    Next cls
End Sub

Sub CreateFolders(FolderSau As String, ByVal FolderTruoc As String)
On Error Resume Next
   If Right(FolderTruoc, 1) <> "\" Then
        FolderTruoc = FolderTruoc & "\"
    End If
   If Len(Dir(FolderTruoc, vbDirectory)) > 0 Then
       tmpF = CleanFolderName(FolderSau)
       If Len(Dir(FolderTruoc & tmpF)) = 0 Then
           MkDir FolderTruoc & tmpF
        End If
    End If
End Sub

Function CleanFolderName(ByVal FolderName As String) As String
    Dim tmpF As String
    For i = 1 To Len(FolderName)
         Select Case Mid$(FolderName, i, 1)
            Case "/", "\", ":", "*", "?", "< ", ">", "|"
                tmpF = tmpF & "_"
            Case Else
                tmpF = tmpF & Mid$(FolderName, i, 1)
        End Select
    Next i
    CleanFolderName = tmpF
End Function
 

File đính kèm

  • Create_Folders.xls
    42 KB · Đọc: 89
Chào các bạn: Code này tự tạo được thư mục con trong "D:\QUAN LY DU AN TDC" . Nhờ các bạn sửa giúp tôi code này để tự tạo được các thư mục tiếp theo từ dữ liệu trên bảng tính trong file đính kèm. Thanks !

Mã:
Sub StartHere()
On Error Resume Next
    For Each cls In [g3:g100].SpecialCells(2)
        CreateFolders cls.Value, "D:\QUAN LY DU AN TDC"
    Next cls
End Sub

Sub CreateFolders(FolderSau As String, ByVal FolderTruoc As String)
On Error Resume Next
   If Right(FolderTruoc, 1) <> "\" Then
        FolderTruoc = FolderTruoc & "\"
    End If
   If Len(Dir(FolderTruoc, vbDirectory)) > 0 Then
       tmpF = CleanFolderName(FolderSau)
       If Len(Dir(FolderTruoc & tmpF)) = 0 Then
           MkDir FolderTruoc & tmpF
        End If
    End If
End Sub

Function CleanFolderName(ByVal FolderName As String) As String
    Dim tmpF As String
    For i = 1 To Len(FolderName)
         Select Case Mid$(FolderName, i, 1)
            Case "/", "\", ":", "*", "?", "< ", ">", "|"
                tmpF = tmpF & "_"
            Case Else
                tmpF = tmpF & Mid$(FolderName, i, 1)
        End Select
    Next i
    CleanFolderName = tmpF
End Function

Anh dùng thử code sau nhé.

Mã:
Option Explicit
Declare Function MakePath Lib "imagehlp.dll" Alias _
"MakeSureDirectoryPathExists" (ByVal lpPath As String) As Long
Sub Test()
Dim cls As Range
Dim Ten, Ten1, Ten2  As Variant
   For Each cls In [g3:g100]
     If Len(cls) = 0 Then
         Ten = cls.End(xlUp).Value
         Ten1 = cls.Offset(0, 1)
           If Len(Ten1) = 0 Then
             Ten1 = cls.Offset(0, 1).End(xlUp).Value
             Ten2 = cls.Offset(0, 2)
                If Len(Ten2) = 0 Then
                  Ten2 = cls.Offset(0, 2).End(xlUp).Value
                  MakeDir "D:\QUAN LY DU AN TDC\" & Ten & "\" & Ten1 & "\" & Ten2 & "\" & cls.Offset(0, 3).Value
                End If
           End If
      End If
   Next cls
End Sub

Sub MakeDir(DirPath As String)
If Right(DirPath, 1) <> "\" Then DirPath = DirPath & "\"
MakePath DirPath
End Sub
 

File đính kèm

  • Create_Folders.xls
    35.5 KB · Đọc: 117
Upvote 0
code tự tạo folder

chào anh chị.
anh chị cho em code tạo folder trong ổ đĩa D, và trong folder đó chứa 2 folder con nữa.
em cảm ơn anh chị nhiều.
 

File đính kèm

  • tao foder.xls
    18.5 KB · Đọc: 45
Upvote 0
anh chị nào biết chủ đề này không chỉ em với. thank anh chị nhiều.
 
Upvote 0
chào anh chị.
anh chị cho em code tạo folder trong ổ đĩa D, và trong folder đó chứa 2 folder con nữa.
em cảm ơn anh chị nhiều.
Đơn giản chỉ là vầy thôi:
PHP:
Sub MakeFolder()
  On Error Resume Next
  With CreateObject("Scripting.FileSystemObject")
    .CreateFolder "D:\MyFolder"
    .CreateFolder "D:\MyFolder\MyFolder1"
    .CreateFolder "D:\MyFolder\MyFolder2"
  End With
End Sub
 
Upvote 0
Tôi dùng
MkDir "c:\a"

để tạo thư mục tên "a" trong c:\

chắc làm thế này cũng đủ đáp ứng yêu cầu.
 
Upvote 0
Tôi dùng
MkDir "c:\a"

để tạo thư mục tên "a" trong c:\

chắc làm thế này cũng đủ đáp ứng yêu cầu.
Nếu dễ ăn thế thì thằng Scripting Runtime nó "thất nghiệp" luôn rồi
Bạn thử dùng MkDir tạo thư mục C:\Anh Tuấn xem thế nào nhé!
Làm được ta sẽ bàn tiếp
 
Upvote 0
Quái nhỉ, lệnh này hoàn toàn có hiệu lực chứ. Ndu xem lại chút nào.
Còn cả các lệnh đổi tên, di chuyển, lấy thông tin file,thư mục không cần đến Scripting.FileSystemObject
 
Lần chỉnh sửa cuối:
Upvote 0
Quái nhỉ, lệnh này hoàn toàn có hiệu lực chứ. Ndu xem lại chút nào.
Còn cả các lệnh đổi tên, di chuyển, lấy thông tin file,thư mục không cần đến Scripting.FileSystemObject
Thì em đâu có nói lệnh MkDir không xài được! Ý em muốn nói nó có nhược điểm khi xử lý đường dẫn là tiếng Việt có dấu ---> Thế nên người ta mới cải tiến dùng đến Scripting Runtime
 
Upvote 0
Thì em đâu có nói lệnh MkDir không xài được! Ý em muốn nói nó có nhược điểm khi xử lý đường dẫn là tiếng Việt có dấu ---> Thế nên người ta mới cải tiến dùng đến Scripting Runtime

Tôi không viết được chữ Việt có dấu trong code. Anh chỉ giúp đọc ở đâu.

Còn tên thư mục có dấu cách thì phải đặt trong nháy kép.
 
Upvote 0
Tôi không viết được chữ Việt có dấu trong code. Anh chỉ giúp đọc ở đâu.

Còn tên thư mục có dấu cách thì phải đặt trong nháy kép.
Ví dụ thế này:
- Bạn gõ chữ: C:\Anh Tuấn vào cell A1 của bảng tính
- Trong cửa sổ VBA, bạn chạy thử dòng lệnh: MkDir Range("A1").Value
Bạn sẽ thấy code trên báo lỗi (vì đường dẫn có dấu)
Giờ nếu sửa cell A1 thành C:\Anh Tuan (không dấu) thì code sẽ chạy được ngay
------------------
Nói tóm lại: Các hàm VB có thể làm việc với file, folder nhưng có nhiều hạn chế, vì thế nên dùng Scripting Runtime là chắc ăn nhất trong mọi tình huống
 
Upvote 0
Đơn giản chỉ là vầy thôi:
PHP:
Sub MakeFolder()
  On Error Resume Next
  With CreateObject("Scripting.FileSystemObject")
    .CreateFolder "D:\MyFolder"
    .CreateFolder "D:\MyFolder\MyFolder1"
    .CreateFolder "D:\MyFolder\MyFolder2"
  End With
End Sub

vấn đề là khi viết code, dòng sau có chữ có dấu không nhập vào được

.CreateFolder "D:\Anh Tuấn"

Nên tôi hỏi nhập chữ có dấu trong viết code có ở địa chỉ nào, anh chỉ dùm để đọc
 
Lần chỉnh sửa cuối:
Upvote 0
vấn đề là khi viết code, dòng sau có chữ có dấu không nhập vào được

.CreateFolder "D:\Anh Tuấn"

Nên tôi hỏi nhập chữ có dấu trong viết code có ở địa chỉ nào, anh chỉ dùm để đọc
Thì vầy .CreateFolder "D:\Anh Tu" & ChrW(7845) & "n"
ChrW(7845) <===> ký tự "ấ"
 
Upvote 0
tạo nhiều folder từ colum trong exce bằng vba

Chào anh chị! mong anh chị giành cho em chút thời gian.
Hiện tại em có xử lý trên excel và folder, vì có yêu cầu công việc mà em phải tự tạo nhiều folder theo 1 column không cố định, và những cell trong column này làm tên cho các folder vừa tạo ra. em có thử làm nhiều rùi mà không được, mong anh chị giúp em với (@$%@, nếu có thể thì liên lạc qua phandanhduc@gmail.com với em nha.
 

File đính kèm

  • gắn tên cho folder.xlsx
    9.8 KB · Đọc: 14
  • gắn tên cho folder.rar
    8.6 KB · Đọc: 12
Upvote 0
Web KT
Back
Top Bottom