Code copy File từ thư mục này sang thư mục khác, sau đó mở file có pass ... (2 người xem)

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

LienDong

Thành viên thường trực
Tham gia
22/11/12
Bài viết
241
Được thích
46
Nghề nghiệp
Ai nói đúng thì làm!
Em nhờ anh/chị viết code như sau”
Bài này em không biết Record Macro sao, nên nhờ các chị giúp
1/Mở thư mục C:\ThuVien1\Van\Bai1
2/Chọn file : Bai1, copy
3/ Mở thư mục C:\TongHop
4/ Paste Bai1 vào thư mục này
5/trong thư mục C:\TongHop nếu đã có file Bai1, thì đồng ý paste đè lên
6/Sau đó mở file Bai1, trong Thư mục C:\TongHop\Bai1
7/ file Bai1 có pass open là “123
Em cảm ơn!
 
Em nhờ anh/chị viết code như sau”
Bài này em không biết Record Macro sao, nên nhờ các chị giúp
1/Mở thư mục C:\ThuVien1\Van\Bai1
2/Chọn file : Bai1, copy
3/ Mở thư mục C:\TongHop
4/ Paste Bai1 vào thư mục này
5/trong thư mục C:\TongHop nếu đã có file Bai1, thì đồng ý paste đè lên
6/Sau đó mở file Bai1, trong Thư mục C:\TongHop\Bai1
7/ file Bai1 có pass open là “123
Em cảm ơn!
Xin giúp em bài này
 
Upvote 0
Chắc nó còn mục đích gì khác nữa chứ nếu như mô tả thì thà copy cả folder đi rồi đổi tên là được mà. Như thế nhanh hơn à
 
Upvote 0
Trong khi chờ đợi các giải pháp khác, hãy thử code trong file đính kèm sau.
Code trong file đính kèm có sự giúp đỡ của ChatGPT- tôi có chỉnh sửa để theo đúng ý định
Nhấn vào nút "Copy file từ folder này sang folder khác và mở file" ở ngay trên sheet1 và chọn folder có file cần copy=> nhấn OK là được kết quả.
Lưu ý:
1/Nếu Folder "TongHop" chưa có trên ổ C thì Folder này sẽ được tạo mới, nếu có rồi thì file cần copy sẽ được copy và folder TongHop này.
2/Tên folder và tên file cần copy phải là các ký tự không dấu (ví dụ: không nên đặt tên Là Đại Huệ mà hãy đặt là DaiHue)
Mã:
Option Explicit

Sub CopyFile_ToTongHop()

    Dim fd As FileDialog
    Dim SourceFile As String
    Dim DestFolder As String
    Dim DestFile As String
    Dim FileName As String
    Dim wb As Workbook
    Dim FSO As Object

    Set FSO = CreateObject("Scripting.FileSystemObject")

    On Error GoTo ErrHandle

    Application.ScreenUpdating = False
    Application.DisplayAlerts = False

    DestFolder = "C:\TongHop\"

    If Not FSO.FolderExists(DestFolder) Then
        FSO.CreateFolder DestFolder
    End If
    
    Set fd = Application.FileDialog(msoFileDialogFilePicker)
    With fd
        .Title = "Ch?n File"
        .InitialFileName = "C:\"
        .AllowMultiSelect = False
        If .Show <> -1 Then GoTo ExitHere
        SourceFile = .SelectedItems(1)
    End With
    FileName = FSO.GetFileName(SourceFile)
    DestFile = DestFolder & FileName
    If Dir(DestFile) <> "" Then
        If MsgBox("File '" & FileName & "' dã t?n t?i." & vbCrLf & _
                  "B?n có mu?n ghi dè không?", _
                  vbYesNo + vbQuestion) = vbNo Then
            GoTo ExitHere
       End If
       For Each wb In Workbooks
            If StrComp(wb.FullName, DestFile, vbTextCompare) = 0 Then
                If MsgBox("File dang du?c m?." & vbCrLf & _
                          "Ðóng file d? ghi dè?", _
                          vbYesNo + vbQuestion) = vbNo Then
                    GoTo ExitHere
                End If
                wb.Close SaveChanges:=False
                Exit For
            End If
        Next wb
        Kill DestFile
    End If

    FSO.CopyFile SourceFile, DestFile, True
            
    Workbooks.Open FileName:=DestFile   ', Password:="123"
    MsgBox "Hoàn thành.", vbInformation

ExitHere:
    Application.DisplayAlerts = True
    Application.ScreenUpdating = True
    Set FSO = Nothing
    Exit Sub
ErrHandle:
    Application.DisplayAlerts = True
    Application.ScreenUpdating = True
    MsgBox Err.Number & vbCrLf & Err.Description, vbCritical
End Sub
Hy vọng giúp được bạn.
 

File đính kèm

Upvote 0
Ủa, người ta có cho biết file Bai1 là file PDF, hay file Docx hay file Zip gì đâu. Tài thật.
Cảm ơn anh @befaint đã xem bài và chỉ ra chỗ còn thiếu sót. Thực tình mà nói, tôi chả có hiểu biết gì về API và cũng chả có nhiều kinh nghiệm gì. Lên diễn đàn để học và thể dục não là chính , chính vì vậy tôi thấy chỗ nào mình có thể giúp được thì giúp thôi (cũng nhờ ChatGPT hỗ trợ-như đã trình bày), tuy có thể chưa đạt được kết quả mong muốn. Và tôi cũng đã nói "Trong khi chờ các giải pháp khác hãy thử xem" và "Hy vọng giúp được bạn" là vì thế.
Không phải bài này mà rất nhiều bài khác làm tôi cứ băn khoăn: Tại sao anh biết mà không ra tay giúp đỡ nhỉ? Với kiến thức của anh, tôi và rất nhiều người tin rằng anh giải quyết bài này ngon ơ, trong vòng 1 nốt nhạc, cũng như cái tool gì (hình như là phần mềm tải hóa đơn gốc từ TCT) mà anh là tác giả và đang quảng cáo . Xin trích dẫn câu anh viết "Khi mà tất cả các loại tun, áp, phần mềm các kiểu không tải được, lỗi các kiểu thì phần mềm ExTools vẫn tải mượt mà, siêu tốc nhé."
Gửi bạn chủ thớt:
Nên rút kinh nghiệm lần sau: Khi gửi yêu cầu nên nó rõ cho biết file Bai1 là file PDF, hay file Docx hay file Zip để tránh hỏi đi hỏi lại.
Còn đây là đoạn code VBA (do ChatGPT viết) Bạn hãy cho nó vào 1 module chuẩn nhé.
Mã:
#If VBA7 Then
    Private Declare PtrSafe Function ShellExecute Lib "shell32.dll" _
        Alias "ShellExecuteA" ( _
        ByVal hwnd As LongPtr, _
        ByVal lpOperation As String, _
        ByVal lpFile As String, _
        ByVal lpParameters As String, _
        ByVal lpDirectory As String, _
        ByVal nShowCmd As Long) As LongPtr
#Else
    Private Declare Function ShellExecute Lib "shell32.dll" _
        Alias "ShellExecuteA" ( _
        ByVal hwnd As Long, _
        ByVal lpOperation As String, _
        ByVal lpFile As String, _
        ByVal lpParameters As String, _
        ByVal lpDirectory As String, _
        ByVal nShowCmd As Long) As Long
#End If
Public Sub OpenAnyFile(ByVal FilePath As String)

    ShellExecute 0, "open", FilePath, vbNullString, vbNullString, 1

End Sub
Trong Module1 (sub CopyFile_ToTongHop) bạn thay dòng
Mã:
         Workbooks.Open FileName:=DestFile, Password:="123"
Thành
Mã:
    If MsgBox("B?n có mu?n m? file v?a copy không?", _
          vbYesNo + vbQuestion) = vbYes Then
         OpenAnyFile DestFile
    End If
và chạy thử.
Hy vọng giúp được bạn.
 
Lần chỉnh sửa cuối:
Upvote 0
Vấn đề rất quan trọng, đó là biểu đạt vấn đề. Cái này là do học ngữ văn từ tiểu học đó.

Xa xưa và kéo dài mãi mãi.... cái vướng mắc đặt câu hỏi ở diễn đàn này và ở mọi lúc trong cuộc sống hàng ngày. Cái ở trong não không chuyển đổi nổi thành văn bản/ lời nói được.

Tới nay có AI hỗ trợ thì càng rõ ràng, đưa đầu vào ('prompt') không rõ ràng thì tới giời AI cũng bó tay.
 
Upvote 0
Cảm ơn anh @befaint đã xem bài và chỉ ra chỗ còn thiếu sót. Thực tình mà nói, tôi chả có hiểu biết gì về API và cũng chả có nhiều kinh nghiệm gì. Lên diễn đàn để học và thể dục não là chính , chính vì vậy tôi thấy chỗ nào mình có thể giúp được thì giúp thôi (cũng nhờ ChatGPT hỗ trợ-như đã trình bày), tuy có thể chưa đạt được kết quả mong muốn. Và tôi cũng đã nói "Trong khi chờ các giải pháp khác hãy thử xem" và "Hy vọng giúp được bạn" là vì thế.
Không phải bài này mà rất nhiều bài khác làm tôi cứ băn khoăn: Tại sao anh biết mà không ra tay giúp đỡ nhỉ? Với kiến thức của anh, tôi và rất nhiều người tin rằng anh giải quyết bài này ngon ơ, trong vòng 1 nốt nhạc, cũng như cái tool gì (hình như là phần mềm tải hóa đơn gốc từ TCT) mà anh là tác giả và đang quảng cáo . Xin trích dẫn câu anh viết "Khi mà tất cả các loại tun, áp, phần mềm các kiểu không tải được, lỗi các kiểu thì phần mềm ExTools vẫn tải mượt mà, siêu tốc nhé."

Gửi bạn chủ thớt:
Nên rút kinh nghiệm lần sau: Khi gửi yêu cầu nên nó rõ cho biết file Bai1 là file PDF, hay file Docx hay file Zip để tránh hỏi đi hỏi lại.
Còn đây là đoạn code VBA (do ChatGPT viết) Bạn hãy cho nó vào 1 module chuẩn nhé.
Mã:
#If VBA7 Then
    Private Declare PtrSafe Function ShellExecute Lib "shell32.dll" _
        Alias "ShellExecuteA" ( _
        ByVal hwnd As LongPtr, _
        ByVal lpOperation As String, _
        ByVal lpFile As String, _
        ByVal lpParameters As String, _
        ByVal lpDirectory As String, _
        ByVal nShowCmd As Long) As LongPtr
#Else
    Private Declare Function ShellExecute Lib "shell32.dll" _
        Alias "ShellExecuteA" ( _
        ByVal hwnd As Long, _
        ByVal lpOperation As String, _
        ByVal lpFile As String, _
        ByVal lpParameters As String, _
        ByVal lpDirectory As String, _
        ByVal nShowCmd As Long) As Long
#End If
Public Sub OpenAnyFile(ByVal FilePath As String)

    ShellExecute 0, "open", FilePath, vbNullString, vbNullString, 1

End Sub
Trong Module1 (sub CopyFile_ToTongHop) bạn thay dòng
Mã:
         Workbooks.Open FileName:=DestFile, Password:="123"
Thành
Mã:
    If MsgBox("B?n có mu?n m? file v?a copy không?", _
          vbYesNo + vbQuestion) = vbYes Then
         OpenAnyFile DestFile
    End If
và chạy thử.
Hy vọng giúp được bạn.
CẢM ƠN BẠN NHIỀU
XIN LỖI LÚC ĐẦU KHÔNG NÓI RỎ
FILE LÀ EXCELL
DO ĐANG ĐI CÔNG TÁC NÊN CHƯA THỬ CODE
 
Upvote 0

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

Back
Top Bottom