Hỏi về hiện thông tin đường dẫn file đã lấy dữ liệu

Liên hệ QC
Tôi tuân thủ nội quy khi đăng bài

Robin257

Thành viên mới
Tham gia
28/2/22
Bài viết
3
Được thích
1
Chào các anh chị trong group.

Em mò được cách lấy một mảng dữ liệu từ một file excel (file 1) để copy vào file em đang thực thi (file2) với code như sau:

Sub copy_dataL()
On Error Resume Next
Dim basebook As String
Dim mybook As Workbook
Dim fname As String
Dim Mypath As String

Application.ScreenUpdating = False
Mypath = Application.ActiveWorkbook.Path
basebook = ActiveWorkbook.Name

ChDrive Mypath
ChDir Mypath

fname = Application.GetOpenFilename(filefilter:="Execel files (*.xlsx), *.xlsx", Title:="Chon file nguon", MultiSelect:=False)

Set mybook = Workbooks.Open(fname)
GetData Mypath, True
mybook.Worksheets(2).Activate
Range("A1:AH79").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
Windows(basebook).Activate
L.Select
Range("A1").Select
L.Paste
Sheet1.Select
Range("A1").Select
Application.CutCopyMode = False
mybook.Close False
Application.ScreenUpdating = True

End Sub



Bây giờ em muốn lấy đường dẫn folder chứa file em vừa copy dữ liệu (file1) hiện trên 1 cell bất kỳ (vd A80 của sheet L) của file em đang thực thi (file2) thì có kết hợp vào code trên được không ạ và code thêm như thế nào ạ?
Em cảm ơn các anh chị nhiều !
 
Chào các anh chị trong group.

Em mò được cách lấy một mảng dữ liệu từ một file excel (file 1) để copy vào file em đang thực thi (file2) với code như sau:

Sub copy_dataL()
On Error Resume Next
Dim basebook As String
Dim mybook As Workbook
Dim fname As String
Dim Mypath As String

Application.ScreenUpdating = False
Mypath = Application.ActiveWorkbook.Path
basebook = ActiveWorkbook.Name

ChDrive Mypath
ChDir Mypath

fname = Application.GetOpenFilename(filefilter:="Execel files (*.xlsx), *.xlsx", Title:="Chon file nguon", MultiSelect:=False)

Set mybook = Workbooks.Open(fname)
GetData Mypath, True
mybook.Worksheets(2).Activate
Range("A1:AH79").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
Windows(basebook).Activate
L.Select
Range("A1").Select
L.Paste
Sheet1.Select
Range("A1").Select
Application.CutCopyMode = False
mybook.Close False
Application.ScreenUpdating = True

End Sub



Bây giờ em muốn lấy đường dẫn folder chứa file em vừa copy dữ liệu (file1) hiện trên 1 cell bất kỳ (vd A80 của sheet L) của file em đang thực thi (file2) thì có kết hợp vào code trên được không ạ và code thêm như thế nào ạ?
Em cảm ơn các anh chị nhiều !
Xem Loạt bài của bạn @befaint
 
Upvote 0
Xem Loạt bài của bạn @befaint
Mục đích của em chỉ là lấy path nhưng mình tìm trong loạt bài này không thấy (hoặc em mò chưa ra).
Em có tìm được một đoạn code lấy được filepath như sau:

Sub browseFilePath()
On Error GoTo err
Dim directory As String
' Cai dat thu muc mac dinh
directory = "C:\"
Dim fileExplorer As FileDialog
Set fileExplorer = Application.FileDialog(msoFileDialogFilePicker)
fileExplorer.AllowMultiSelect = False
fileExplorer.InitialFileName = directory
fileExplorer.Filters.Add "Excel Files", "*.xlsx; *.xlsm; *.xls; *.xlsb; *.XLS; *.XLSX; *.XLSM; *.XLSB", 1
With fileExplorer
If .Show = -1 Then
[filePath] = .SelectedItems.Item(1)
Else
MsgBox "Ban chua chon file nao ca!"
[filePath] = ""
End If
End With
err:
Exit Sub
End Sub


Nhưng em chỉ muốn lấy folder path thôi thì làm như thế nào ạ? thêm nữa là em chưa tìm được cách kết hợp 2 đoạn code ở post#1 và post này ạ.
Nhờ các anh chị giúp đỡ với ạ.
 
Upvote 0
Mục đích của em chỉ là lấy path nhưng mình tìm trong loạt bài này không thấy (hoặc em mò chưa ra).
Em có tìm được một đoạn code lấy được filepath như sau:

Sub browseFilePath()
On Error GoTo err
Dim directory As String
' Cai dat thu muc mac dinh
directory = "C:\"
Dim fileExplorer As FileDialog
Set fileExplorer = Application.FileDialog(msoFileDialogFilePicker)
fileExplorer.AllowMultiSelect = False
fileExplorer.InitialFileName = directory
fileExplorer.Filters.Add "Excel Files", "*.xlsx; *.xlsm; *.xls; *.xlsb; *.XLS; *.XLSX; *.XLSM; *.XLSB", 1
With fileExplorer
If .Show = -1 Then
[filePath] = .SelectedItems.Item(1)
Else
MsgBox "Ban chua chon file nao ca!"
[filePath] = ""
End If
End With
err:
Exit Sub
End Sub


Nhưng em chỉ muốn lấy folder path thôi thì làm như thế nào ạ? thêm nữa là em chưa tìm được cách kết hợp 2 đoạn code ở post#1 và post này ạ.
Nhờ các anh chị giúp đỡ với ạ.
Dùng VT = InstrRev(fname, "\") để lấy vị trí ký tự \ cuối cùng trong đường dẫn fname. Sau đó dùng Left(fname, VT) để tách folder path ra khỏi fname
 
Upvote 0
Dùng VT = InstrRev(fname, "\") để lấy vị trí ký tự \ cuối cùng trong đường dẫn fname. Sau đó dùng Left(fname, VT) để tách folder path ra khỏi fname
Tại thớt đọc không kỹ về FileSystemObject thôi.
Đối tượng này có hàm Getparentfoldername. Thảy cái path vào nó lọc lấy tên folder cho.

fldName = CreateObject("Scripting.FileSystemObject").Getparentfoldername("C:\..\Somefolder*\totite.xlsx") ' kết quả fldName = "C:\..\Somefolder*"
 
Upvote 0
Tại thớt đọc không kỹ về FileSystemObject thôi.
Đối tượng này có hàm Getparentfoldername. Thảy cái path vào nó lọc lấy tên folder cho.

fldName = CreateObject("Scripting.FileSystemObject").Getparentfoldername("C:\..\Somefolder*\totite.xlsx") ' kết quả fldName = "C:\..\Somefolder*"
Tôi thấy GetOpenFilename đã có sẵn full file name rồi thì lấy folder path từ đó cho nhanh chứ dùng fso làm gì nữa!
 
Upvote 0
Tôi thấy GetOpenFilename đã có sẵn full file name rồi thì lấy folder path từ đó cho nhanh chứ dùng fso làm gì nữa!
Tôi đâu có màng tới việc code của thớt làm cái gì. Thực tế thì tôi đâu có hiểu cuối cùng thì thớt muốn cái gì (đọc code thì có thể hiểu code làm gì; nhưng đâu có ai bảo đảm là code ấy làm đúng với mục đích người viết nó).
Ở bài #5, tôi chỉ nói là nếu có cái FullPath là một string (theo bối cảnh bài #4) thì cái string ấy có thể thảy vào cho FileSystemObject nó parse ra cái folder. Chuyện trước đó có cái gì không thành vấn đề.
 
Upvote 0
Mục đích của em chỉ là lấy path nhưng mình tìm trong loạt bài này không thấy (hoặc em mò chưa ra).
Em có tìm được một đoạn code lấy được filepath như sau:

Sub browseFilePath()
On Error GoTo err
Dim directory As String
' Cai dat thu muc mac dinh
directory = "C:\"
Dim fileExplorer As FileDialog
Set fileExplorer = Application.FileDialog(msoFileDialogFilePicker)
fileExplorer.AllowMultiSelect = False
fileExplorer.InitialFileName = directory
fileExplorer.Filters.Add "Excel Files", "*.xlsx; *.xlsm; *.xls; *.xlsb; *.XLS; *.XLSX; *.XLSM; *.XLSB", 1
With fileExplorer
If .Show = -1 Then
[filePath] = .SelectedItems.Item(1)
Else
MsgBox "Ban chua chon file nao ca!"
[filePath] = ""
End If
End With
err:
Exit Sub
End Sub


Nhưng em chỉ muốn lấy folder path thôi thì làm như thế nào ạ? thêm nữa là em chưa tìm được cách kết hợp 2 đoạn code ở post#1 và post này ạ.
Nhờ các anh chị giúp đỡ với ạ.
Code của bạn không có căn bản nên mình mới bảo bạn tìm đọc căn bản VBA và các code mẫu và tự viết theo
Trong code bài 1 đã có lệnh lấy đường dẫn Folder rồi
...
Set mybook = Workbooks.Open(fname)
Mypathfile1 = Application.ActiveWorkbook.Path
...
 
Upvote 0
Code của bạn không có căn bản nên mình mới bảo bạn tìm đọc căn bản VBA và các code mẫu và tự viết theo
Trong code bài 1 đã có lệnh lấy đường dẫn Folder rồi
...
Set mybook = Workbooks.Open(fname)
Mypathfile1 = Application.ActiveWorkbook.Path
...
Cảm ơn bạn nhiều. Đúng là mình không rành về code, chỉ mò thấy đoạn code có thể áp dụng được nên chỉnh sửa 1 chút để công việc nhanh hơn thôi.
Nhờ đọc lại bài bạn gửi mình đã mò ra code từ bài 1 đã có hết thứ mình cần, chỉ chưa gọi ra thôi. Mình đã gọi ra được filepath.

Dùng VT = InstrRev(fname, "\") để lấy vị trí ký tự \ cuối cùng trong đường dẫn fname. Sau đó dùng Left(fname, VT) để tách folder path ra khỏi fname
Cảm ơn bạn Maika nhiều nhiều, nhờ 2 câu lệnh của bạn mà mình đã thu được đường dẫn folder mình cần.
 
Upvote 0
Web KT

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

Back
Top Bottom