Tạo đường dẫn lưu file (1 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

minhhahdvn

Thành viên mới
Tham gia
13/12/12
Bài viết
10
Được thích
1
Tình hình là em có một file execl, em muốn tạo một thư mục trong đường dẫn, sau đó mở file word theo đường dẫn có sẵn, chỉnh sửa xong thì lưu vào thư mục đã tạo ở trên. Vấn đề ở đây là đôi lúc hệ thống không tạo được thư mục ban đầu (em không hiểu vì sao) hoặc tạo thư mục tên quá dài nên không thể lưu được file word. Em muốn các bác giúp là gặp trường hợp lỗi thì file word sẽ được lưu vào đường dẫn sau: ThisWorkbook.Path &_ _"\Hoso\ho_so_TD\0" & ws.[A4] & ws.[W1], còn nếu không thì vẫn lưu vào đường dẫn trên bình thường
Em cảm ơn các bác ạ
Code em gửi ở file đính kèm ạ
 

File đính kèm

Không có cao nhân nào giúp em ạ? Đặc biệt giúp em vụ tạo được thư mục rồi nhưng độ dài thư mục vượt quá 255 ký tự nên không save file được thì file sẽ được lưu vào thư mục có tên là "0" với ạ T_T
 
Upvote 0
Tình hình là em có một file execl, em muốn tạo một thư mục trong đường dẫn, sau đó mở file word theo đường dẫn có sẵn, chỉnh sửa xong thì lưu vào thư mục đã tạo ở trên. Vấn đề ở đây là đôi lúc hệ thống không tạo được thư mục ban đầu (em không hiểu vì sao) hoặc tạo thư mục tên quá dài nên không thể lưu được file word. Em muốn các bác giúp là gặp trường hợp lỗi thì file word sẽ được lưu vào đường dẫn sau: ThisWorkbook.Path &_ _"\Hoso\ho_so_TD\0" & ws.[A4] & ws.[W1], còn nếu không thì vẫn lưu vào đường dẫn trên bình thường
Em cảm ơn các bác ạ
Code em gửi ở file đính kèm ạ
Góp ý cho bạn:
Bạn nêu vấn đề không rõ ràng nên chẳng thành viên nào hiểu bạn muốn cái gì? và không đính kèm File Excel nên chẳng biết đâu mà lần.
 
Upvote 0
Em xin lỗi ạ! Bây h em xin up file lên đây ạ. Các cao nhân xem giùm em
 

File đính kèm

Upvote 0
Em chỉ là "lùn tẹt nhân", xin mạo muội tham gia nhé
Chỉ sữa lại code của cậu sơ sơ, code của "lùn nhân" tui còn nhiều lỗi, chưa check hết các điều kiện A1 và A2.
Nhưng nói chung là chạy tàm tạm "ược" theo yêu cầu của cậu :)
Mã:
Option Explicit

Const MAX_PATH As Integer = 256

Sub ShowError(ByVal strDesc As String)
    Dim strErr As String
   
    If Err.Number > 0 Then
        strErr = strDesc & vbCrLf & "Error Number: " & Str$(Err.Number) & vbCrLf & "Error Line: " & Str$(Erl)
        Debug.Print strErr
        MsgBox strErr, vbCritical Or vbOKOnly, Err.Source
        Err.Clear
    End If
End Sub

Sub taofile()
    Dim ws As Worksheet
    Dim doc As Object
    Dim data As Variant
    Dim WSF As Object
    Dim n As Integer, j As Integer, lCol As Integer
    Dim templatePath As String, strPath As String
    Dim content As Object
    Dim fso As Object, wordApp As Object
   
    Application.ScreenUpdating = False
   
    Set ws = ThisWorkbook.ActiveSheet
    Set WSF = Application.WorksheetFunction
   
    lCol = ws.Cells(3, Columns.Count).End(xlToLeft).Column
    n = WSF.Count(ws.[A:A])
   
    data = ws.[B3].Resize(n + 1, lCol)
   
    strPath = ThisWorkbook.Path & "\Hoso\ho_so_TD\" & ws.[A2]
    If (Len(strPath) + Len(ws.[A1]) + 1 >= MAX_PATH) Then strPath = ThisWorkbook.Path & "\Hoso\ho_so_TD\0"
   
    Set fso = CreateObject("Scripting.FileSystemObject")
   
    On Error Resume Next
1   If Not fso.FolderExists(strPath) Then
2       fso.CreateFolder strPath
        If Err Then
            ShowError "Khong the tao thu muc " & strPath
            GoTo Finally
        End If
    End If

    On Error GoTo Finally

    strPath = strPath & "\" & ws.[A1]
    templatePath = ThisWorkbook.Path & "\Maubieu\" & ws.[A1]
   
3   Set wordApp = CreateObject("Word.Application")
    With wordApp
        .Visible = False
4       Set doc = .Documents.Open(templatePath)
        With doc
            Set content = doc.content
            For j = 1 To lCol
                content.Find.Execute FindText:=ws.Cells(3, j).Value, ReplaceWith:=ws.Cells(4, j).Value, Replace:=2
            Next j
5           .SaveAs strPath
        End With
        .Quit
    End With

    MsgBox "In Xong", vbInformation Or vbOKOnly

Finally:
    If Err Then ShowError Err.Description
   
    Application.ScreenUpdating = True
   
    Set content = Nothing
    Set doc = Nothing
    Set wordApp = Nothing
    Set fso = Nothing
End Sub

Cậu copy vào file module của cậu, chạy test thử nhé
 
Lần chỉnh sửa cuối:
Upvote 0
Web KT

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

Back
Top Bottom