hung2412
Thành viên tích cực
- Tham gia
- 5/8/08
- Bài viết
- 929
- Được thích
- 240
- Giới tính
- Nam
Lần chỉnh sửa cuối:
Bấm vào link View attachment 274348 thì báo lỗi, không xem được hình.Xin chào các bạn GPE!
Tôi có 1 vấn đề nhờ các bạn giúp cho. Tôi sử dụng VBA để copy Thư mục, nhưng vấn đề ở chỗ là khi copy bằng VBA thì con chỏ chuột nó chỉ xoay xoay chứ không hiện ra hình ảnh copy, tôi muốn hiện hình ảnh Copy như thế này thì làm thế nào?:
View attachment 274348
Mong các bạn chỉ giúp cho tôi. Cảm ơn.
Xin lỗi bạn, mình đã chỉnh lại bài #1, đã cập nhật hình ảnh lại rồi. Cảm ơn bạn.Bấm vào link View attachment 274348 thì báo lỗi, không xem được hình.
Tôi thì cứ Google dịch sang tiếng Anh rồi theo đó mà search. Kết quả tìm được thế này (đã test):chờ đi lão ý vào làm cho ... hoặc tìm trên GPE này lão làm sẳn rùi ... còn ta chỉ có xơi
Option Explicit
Private Type SHFILEOPSTRUCT
hwnd As Long
wFunc As Long
pFrom As String
pTo As String
fFlags As Integer
fAnyOperationsAborted As Long
hNameMappings As Long
lpszProgressTitle As String
End Type
Private Declare Function SHFileOperation Lib "shell32.dll" _
Alias "SHFileOperationA" (lpFileOp As SHFILEOPSTRUCT) As Long
Private Const FOF_ALLOWUNDO = &H40
Private Const FOF_NOCONFIRMATION = &H10
Private Const FO_COPY = &H2
Public Function apiFileCopy(src As String, dest As String, _
Optional NoConfirm As Boolean = False) As Boolean
'PARAMETERS: src: Source File (FullPath)
'dest: Destination File (FullPath or directory)
'NoConfirm (Optional): If set to
'true, no confirmation box
'is displayed when overwriting
'existing files, and no
'copy progress dialog box is
'displayed
'Returns (True if Successful, false otherwise)
Dim WinType_SFO As SHFILEOPSTRUCT
Dim lRet As Long
Dim lflags As Long
lflags = FOF_ALLOWUNDO
If NoConfirm Then lflags = lflags & FOF_NOCONFIRMATION
With WinType_SFO
.wFunc = FO_COPY
.pFrom = src
.pTo = dest
.fFlags = lflags
End With
lRet = SHFileOperation(WinType_SFO)
apiFileCopy = (lRet = 0)
End Function
Sub TestcopyFolder()
apiFileCopy "D:\Video", "D:\Video2", True
End Sub
thực ra Google nó có gần như mọi thứ ... quan trong là có biết Copy và sử dụng + tùy chỉnh code hay ko thôiTôi thì cứ Google dịch sang tiếng Anh rồi theo đó mà search. Kết quả tìm được thế này (đã test):
Rich (BB code):Option Explicit Private Type SHFILEOPSTRUCT hwnd As Long wFunc As Long pFrom As String pTo As String fFlags As Integer fAnyOperationsAborted As Long hNameMappings As Long lpszProgressTitle As String End Type Private Declare Function SHFileOperation Lib "shell32.dll" _ Alias "SHFileOperationA" (lpFileOp As SHFILEOPSTRUCT) As Long Private Const FOF_ALLOWUNDO = &H40 Private Const FOF_NOCONFIRMATION = &H10 Private Const FO_COPY = &H2 Public Function apiFileCopy(src As String, dest As String, _ Optional NoConfirm As Boolean = False) As Boolean 'PARAMETERS: src: Source File (FullPath) 'dest: Destination File (FullPath or directory) 'NoConfirm (Optional): If set to 'true, no confirmation box 'is displayed when overwriting 'existing files, and no 'copy progress dialog box is 'displayed 'Returns (True if Successful, false otherwise) Dim WinType_SFO As SHFILEOPSTRUCT Dim lRet As Long Dim lflags As Long lflags = FOF_ALLOWUNDO If NoConfirm Then lflags = lflags & FOF_NOCONFIRMATION With WinType_SFO .wFunc = FO_COPY .pFrom = src .pTo = dest .fFlags = lflags End With lRet = SHFileOperation(WinType_SFO) apiFileCopy = (lRet = 0) End Function
Thủ tục test:
Rich (BB code):Sub TestcopyFolder() apiFileCopy "D:\Video", "D:\Video2", True End Sub
Tôi viết hơn 8 năm về trước.Xin chào các bạn GPE!
Tôi có 1 vấn đề nhờ các bạn giúp cho. Tôi sử dụng VBA để copy Thư mục, nhưng vấn đề ở chỗ là khi copy bằng VBA thì con chỏ chuột nó chỉ xoay xoay chứ không hiện ra hình ảnh copy, tôi muốn hiện hình ảnh Copy như thế này thì làm thế nào?:
View attachment 274353
Mong các bạn chỉ giúp cho tôi. Cảm ơn.
Cảm ơn bạn, code chạy được.Tôi thì cứ Google dịch sang tiếng Anh rồi theo đó mà search. Kết quả tìm được thế này (đã test):
Rich (BB code):Option Explicit Private Type SHFILEOPSTRUCT hwnd As Long wFunc As Long pFrom As String pTo As String fFlags As Integer fAnyOperationsAborted As Long hNameMappings As Long lpszProgressTitle As String End Type Private Declare Function SHFileOperation Lib "shell32.dll" _ Alias "SHFileOperationA" (lpFileOp As SHFILEOPSTRUCT) As Long Private Const FOF_ALLOWUNDO = &H40 Private Const FOF_NOCONFIRMATION = &H10 Private Const FO_COPY = &H2 Public Function apiFileCopy(src As String, dest As String, _ Optional NoConfirm As Boolean = False) As Boolean 'PARAMETERS: src: Source File (FullPath) 'dest: Destination File (FullPath or directory) 'NoConfirm (Optional): If set to 'true, no confirmation box 'is displayed when overwriting 'existing files, and no 'copy progress dialog box is 'displayed 'Returns (True if Successful, false otherwise) Dim WinType_SFO As SHFILEOPSTRUCT Dim lRet As Long Dim lflags As Long lflags = FOF_ALLOWUNDO If NoConfirm Then lflags = lflags & FOF_NOCONFIRMATION With WinType_SFO .wFunc = FO_COPY .pFrom = src .pTo = dest .fFlags = lflags End With lRet = SHFileOperation(WinType_SFO) apiFileCopy = (lRet = 0) End Function
Thủ tục test:
Rich (BB code):Sub TestcopyFolder() apiFileCopy "D:\Video", "D:\Video2", True End Sub
Cảm ơn bạn, tôi Download tập tin ở #9 về và thử chạy luôn. Tôi chưa chỉnh sửa Code (Chỗ đỏ đỏ như bạn hướng dẫn) mà nó vẫn hiện ra hình ảnh Copy như vầy:Tôi viết hơn 8 năm về trước.
Bạn tải tập tin ở bài #9
Copy nhiều folder vào 1 folder theo list cho trước từ excel
Chả là ông anh em ở quê cho người ta copy phim từ đống phim trên HDD của ống ấy. Thấy ông ấy dò từng phim một theo list cực quá, nhờ các bác viết giúp ông ấy file excel có chức năng sau: Đầu vào: Yêu cầu copy các phim khách hàng chọn đã được list dưới dạng file excel: (Phim A, Phim B, Phim...www.giaiphapexcel.com
Mở tập tin và đọc nội dung ở B15 để biết cách dùng. Sau đó nhấn nút CopyFolderAPI. Code sẽ copy. Còn nếu muốn theo dõi như bạn muốn thì sửa lại như hướng dẫn ở bài #13 (không có những đoạn tôi khoanh đỏ do GPE thêm vào).
View attachment 274364
Nếu không muốn COPY mà muốn MOVE thì đọc thêm bài #17.
Trong những phiên bản cũ có một số cái khác. Cái khác lớn nhất trong Windows XP là:Cảm ơn bạn, tôi Download tập tin ở #9 về và thử chạy luôn. Tôi chưa chỉnh sửa Code (Chỗ đỏ đỏ như bạn hướng dẫn) mà nó vẫn hiện ra hình ảnh Copy như vầy:View attachment 274389
Thế thì chả cần phải sửa đâu nhỉ?
Cái bài #13 đã nói rõ rồi bạn. Bỏ 2 cái FOF_NOCONFIRMATION Or FOF_NOCONFIRMMKDIR thì nó sẽ hiện ra hộp thoại như vầy:chủ thớt thử vọc kiểu Windows xem ... nếu File tồn tại thì thêm cái chữ Copy vào tên File nữa
Thử copy File bất kỳ xong Paste cùng Folder là ra thôi
Xem hình he
View attachment 274434
đọc thật kỹ lại đi....Cái bài #13 đã nói rõ rồi bạn. Bỏ 2 cái FOF_NOCONFIRMATION Or FOF_NOCONFIRMMKDIR thì nó sẽ hiện ra hộp thoại như vầy:
View attachment 274437
Replace, skip hoặc Let me decide
Muốn có từ Copy ở đằng sau khi mà có File tồn tại thì chọn Let me decide
OK bạnđọc thật kỹ lại đi....
1/ Muốn ko có cái thông báo đó thì viết lại code đó ... VD có 100000 File khi copy nó báo 100000 thì sao
2/ Lưu đè file nhiều khi lợi bất cập hại đấy ... VD 2 file tên trùng nhau mà cái ruột nó khác nhau thì sao ???!!!
...
Tôi chỉ nêu vấn đề còn ko tham gia
=> Thực ra tôi không có nhu cầu về trường hợp này nên chưa muốn vọc, chắc là có cách thôi1/ Muốn ko có cái thông báo đó thì viết lại code đó ... VD có 100000 File khi copy nó báo 100000 thì sao
=> Cái này thì tôi đã tính hết phương án rồi2/ Lưu đè file nhiều khi lợi bất cập hại đấy ... VD 2 file tên trùng nhau mà cái ruột nó khác nhau thì sao ???!!!
Bạn muốn làm thì phải phải đọc help. Đọc vài câu vô thưởng vô phạt của người ta bạn không làm được đâu, vì người ta đâu có hướng dẫn bạn.OK bạn
=> Thực ra tôi không có nhu cầu về trường hợp này nên chưa muốn vọc, chắc là có cách thôi
=> Cái này thì tôi đã tính hết phương án rồi
Thanks!
Private Const FOF_RENAMEONCOLLISION = &H8
...........
Sub CopyFiles(files(), ByVal destFolder As String)
' copy cac tap tin co ten (duong dan day du) trong mang files sang thu muc co ten la (duong dan day du) destFolder
Dim k As Long, filenames As String, lpFileOp As SHFILEOPSTRUCT
On Error GoTo end_
filenames = files(1)
For k = 2 To UBound(files)
filenames = filenames & vbNullChar & files(k)
Next k
filenames = filenames & vbNullChar & vbNullChar
On Error GoTo 0
lpFileOp.fFlags = FOF_NOCONFIRMATION ' không hỏi mà âm thầm ghi đè.
lpFileOp.pFrom = filenames
lpFileOp.wFunc = FO_COPY
lpFileOp.pTo = destFolder & vbNullChar & vbNullChar
SHFileOperation lpFileOp
end_:
End Sub
Sub test()
' vd. copy "d:\chi giao.jpg" va "d:\konto.docx" sang thu muc "c:\Thong bao"
Dim files()
ReDim files(1 To 2)
files(1) = "d:\chi giao.jpg"
files(2) = "d:\konto.docx"
CopyFiles files, "c:\Thong bao"
End Sub
chủ thớt thử vọc kiểu Windows xem ... nếu File tồn tại thì thêm cái chữ Copy vào tên File nữa
Thử copy File bất kỳ xong Paste cùng Folder là ra thôi
Xem hình he
View attachment 274434
Có đáp án rồi bạn ơi, ở bài #18 của bạn batman1, nó tự động thêm chữ Copy khi Thư mục đã tồn tạiCóp pi đè thì xơi được luôn anh ơi.
Còn cóp pi không đè là mệt đấy. Ví dụ có file A copy, file A copy(1) tới ba ngàn rồi, giờ thêm phát ba ngàn lẻ một hơi chóng mặt.