Xin code để lưu sheet ra My Document

Liên hệ QC

diemvuongvathuongde

Thành viên chính thức
Tham gia
5/11/07
Bài viết
75
Được thích
2
Chào các bác. Em có vấn đề mong các bác trợ giúp.
Có vùng dữ liệu Range("Ô1:Ô2") muốn đưa ra 1 file khác và lưu lại với tên abc.xls vào My Document. Các bác cho em xin đoạn code thực hiện việc này nhé.
 
Sub save()
Range("O1:O2").Select
Selection.Copy
Workbooks.Add
ActiveSheet.Paste
ActiveWorkbook.SaveAs Filename:= _
"E:\Documents and Settings\sony\My Documents\Book2.xls", FileFormat:=xlNormal _
, Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, _
CreateBackup:=False
End Sub
 
Lần chỉnh sửa cuối:
Upvote 0
Sub save()
Range("O1:O2").Select
Selection.Copy
Workbooks.Add
ActiveSheet.Paste
ActiveWorkbook.SaveAs Filename:= _
"E:\Documents and Settings\sony\My Documents\Book2.xls", FileFormat:=xlNormal _
, Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, _
CreateBackup:=False
End Sub

Chào giaosy,

Công việc tưởng chừng đơn giản nhưng không đơn giản tí nào đâu giaosy ơi!
Ví dụ, mình login vào window với UserName là Kietvt thì sao? Và ổ đĩa Primary trên máy mình là C:\ chứ không phải là E:\ thì sao (có thể là F:\, S:\...). Còn nữa, đem file này qua máy khác có xài được hay không lại là chuyện khác nữa!
 
Upvote 0
Chào giaosy,

Công việc tưởng chừng đơn giản nhưng không đơn giản tí nào đâu giaosy ơi!
Ví dụ, mình login vào window với UserName là Kietvt thì sao? Và ổ đĩa Primary trên máy mình là C:\ chứ không phải là E:\ thì sao (có thể là F:\, S:\...). Còn nữa, đem file này qua máy khác có xài được hay không lại là chuyện khác nữa!

Các bạn tham khảo đoạn code sau để lấy thư mục MyDocument và các thư mục khác bằng hàm API:
Mã:
Const CSIDL_DESKTOP = &H0
Const CSIDL_PROGRAMS = &H2
Const CSIDL_CONTROLS = &H3
Const CSIDL_PRINTERS = &H4
Const CSIDL_PERSONAL = &H5
Const CSIDL_FAVORITES = &H6
Const CSIDL_STARTUP = &H7
Const CSIDL_RECENT = &H8
Const CSIDL_SENDTO = &H9
Const CSIDL_BITBUCKET = &HA
Const CSIDL_STARTMENU = &HB
Const CSIDL_DESKTOPDIRECTORY = &H10
Const CSIDL_DRIVES = &H11
Const CSIDL_NETWORK = &H12
Const CSIDL_NETHOOD = &H13
Const CSIDL_FONTS = &H14
Const CSIDL_TEMPLATES = &H15
Const MAX_PATH = 260
 
Private Type SHITEMID
    cb As Long
    abID As Byte
End Type
Private Type ITEMIDLIST
    mkid As SHITEMID
End Type
 
Private Declare Function ShellAbout Lib "shell32.dll" Alias "ShellAboutA" (ByVal hWnd As Long, ByVal szApp As String, ByVal szOtherStuff As String, ByVal hIcon As Long) As Long
Private Declare Function SHGetSpecialFolderLocation Lib "shell32.dll" (ByVal hwndOwner As Long, ByVal nFolder As Long, pidl As ITEMIDLIST) As Long
Private Declare Function SHGetPathFromIDList Lib "shell32.dll" Alias "SHGetPathFromIDListA" (ByVal pidl As Long, ByVal pszPath As String) As Long
 
Private Function GetSpecialfolder(CSIDL As Long) As String
    Dim r As Long
    Dim IDL As ITEMIDLIST
    'Get the special folder
    r = SHGetSpecialFolderLocation(100, CSIDL, IDL)
    If r = NOERROR Then
        'Create a buffer
        Path$ = Space$(512)
        'Get the path from the IDList
        r = SHGetPathFromIDList(ByVal IDL.mkid.cb, ByVal Path$)
        'Remove the unnecessary chr$(0)'s
        GetSpecialfolder = Left$(Path, InStr(Path, Chr$(0)) - 1)
        Exit Function
    End If
    GetSpecialfolder = ""
End Function
'====================
Sub MySave()
Range("O1:O2").Select
Selection.Copy
Workbooks.Add
ActiveSheet.Paste
If Len(GetSpecialfolder(CSIDL_PERSONAL)) > 2 Then
    Path1 = GetSpecialfolder(CSIDL_PERSONAL)
    ActiveWorkbook.SaveAs Filename:=Path1 & "\" & "abc.xls", FileFormat:=xlNormal, Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, CreateBackup:=False
Else
    MsgBox "Error!"
End If
End Sub
(Sưu tầm)
 
Upvote 0
Cảm ơn các bác, em dùng đoạn code này thì copy được rồi
Range("O1:O2").Select
Selection.Copy
Workbooks.Add
ActiveSheet.Paste
Nhưng cho em hỏi thêm chút nữa: Em muốn lưu ra file khác nhưng chỉ lấy giá trị và giữ nguyên định dạng của sheet gốc (Font, border, RowHeight, ColumnWidth).
 
Upvote 0
Cảm ơn các bác, em dùng đoạn code này thì copy được rồi
Nhưng cho em hỏi thêm chút nữa: Em muốn lưu ra file khác nhưng chỉ lấy giá trị và giữ nguyên định dạng của sheet gốc (Font, border, RowHeight, ColumnWidth).
Bạn xem thử đoạn code này!
PHP:
Sub MyCopySheet()
Range("O1:O2").Select
Selection.Copy
Workbooks.Add
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
End Sub
 
Upvote 0
Mã:
Const CSIDL_DESKTOP = &H0
Const CSIDL_PROGRAMS = &H2
Const CSIDL_CONTROLS = &H3
Const CSIDL_PRINTERS = &H4
Const CSIDL_PERSONAL = &H5
Const CSIDL_FAVORITES = &H6
Const CSIDL_STARTUP = &H7
Const CSIDL_RECENT = &H8
Const CSIDL_SENDTO = &H9
Const CSIDL_BITBUCKET = &HA
Const CSIDL_STARTMENU = &HB
Const CSIDL_DESKTOPDIRECTORY = &H10
Const CSIDL_DRIVES = &H11
Const CSIDL_NETWORK = &H12
Const CSIDL_NETHOOD = &H13
Const CSIDL_FONTS = &H14
Const CSIDL_TEMPLATES = &H15
Const MAX_PATH = 260
 
Private Type SHITEMID
cb As Long
abID As Byte
End Type
Private Type ITEMIDLIST
mkid As SHITEMID
End Type
 
Private Declare Function ShellAbout Lib "shell32.dll" Alias "ShellAboutA" (ByVal hWnd As Long, ByVal szApp As String, ByVal szOtherStuff As String, ByVal hIcon As Long) As Long
Private Declare Function SHGetSpecialFolderLocation Lib "shell32.dll" (ByVal hwndOwner As Long, ByVal nFolder As Long, pidl As ITEMIDLIST) As Long
Private Declare Function SHGetPathFromIDList Lib "shell32.dll" Alias "SHGetPathFromIDListA" (ByVal pidl As Long, ByVal pszPath As String) As Long
 
Private Function GetSpecialfolder(CSIDL As Long) As String
Dim r As Long
Dim IDL As ITEMIDLIST
'Get the special folder
r = SHGetSpecialFolderLocation(100, CSIDL, IDL)
If r = NOERROR Then
'Create a buffer
Path$ = Space$(512)
'Get the path from the IDList
r = SHGetPathFromIDList(ByVal IDL.mkid.cb, ByVal Path$)
'Remove the unnecessary chr$(0)'s
GetSpecialfolder = Left$(Path, InStr(Path, Chr$(0)) - 1)
Exit Function
End If
GetSpecialfolder = ""
End Function
'====================
Sub MySave()
Range("O1:O2").Select
Selection.Copy
Workbooks.Add
ActiveSheet.Paste
If Len(GetSpecialfolder(CSIDL_PERSONAL)) > 2 Then
Path1 = GetSpecialfolder(CSIDL_PERSONAL)
ActiveWorkbook.SaveAs Filename:=Path1 & "\" & "abc.xls", FileFormat:=xlNormal, Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, CreateBackup:=False
Else
MsgBox "Error!"
End If
End Sub
Đoạn Code này Save as file gốc. Muốn lưu file mới tạo thì sửa như thế nào ah?
Mong các anh hướng dẫn giúp em.

Thân!
 
Lần chỉnh sửa cuối:
Upvote 0
Dòng lệnh này lưu file với đường dẫn là Path1 còn tên là abc.xls rồi đó! Với Workbook là Workbook hiện hành, vậy không biết bạn muốn lưu file mới tạo là mới tạo ntn và lưu ra sao? ActiveWorkbook.SaveAs Filename:=Path1 & "\" & "abc.xls", FileFormat:=xlNormal, Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, CreateBackup:=False
 
Lần chỉnh sửa cuối:
Upvote 0
Dòng lệnh này lưu file với đường dẫn là Path1 còn tên là abc.xls rồi đó! Với Workbook là Workbook hiện hành, vậy không biết bạn muốn lưu file mới tạo là mới tạo ntn và lưu ra sao?
ActiveWorkbook.SaveAs Filename:=Path1 & "\" & "abc.xls", FileFormat:=xlNormal, Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, CreateBackup:=False
Dạ cám ơn anh!
Em làm được rồi ạ.
Bài này hay quá
Có điều chưa hiểu Code thui ạ.

Thân!
 
Upvote 0
Web KT

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

Back
Top Bottom