1. Msinh sống filelúc mngơi nghỉ tệp tin excel khác ta cần sử dụng hàm Workbooks.OpenĐối với excel, ta rất có thể msống đôi khi những file excel (workbook), khi đó workbook là đối tượng người tiêu dùng nhằm bọn họ thao tác.ví dụ như ta có code nlỗi sau:Chụ ý rằng workbook vừa bắt đầu được mnghỉ ngơi thì đó là workbook đang được Active sầu, Tức là đang rất được ngóng nhập tài liệu.Do đó để không lầm lẫn với workbook khác, ta đề nghị mang thương hiệu workbook ngay trong lúc nó được msinh hoạt.

Bạn đang xem: Lấy dữ liệu từ file excel khác vba

Đang xem: Lấy dữ liệu trường đoản cú file excel không giống vba

Sub Sample1() Dim wb As String Workbooks.xuất hiện “C:Usersjpnfriend.netDesktopVBAap6b.xlsx” wb = ActiveWorkbook.Name MsgBox Workbooks(wb).Sheets(1).Cells(2, 1).Value Workbooks(wb).CloseEnd SubCmùi hương trình bên trên tiến hành đem dữ liệu trường đoản cú workbook được mngơi nghỉ và hiện ra thông tin bằng hàm Msgbox.Tuy nhiên bây chừ họ xét tới một sự việc khác, sẽ là tệp tin hướng dẫn và chỉ định mnghỉ ngơi ko vĩnh cửu.Lúc bấy giờ macro đã báo lỗi.2. Phớt lờ lỗi nhằm chạy lịch sự cái lệnh tiếp theoĐể phớt lờ lưu ý lỗi, chương trình vẫn có thể chạy sang cái lệnh không giống thì sinh sống đầu công tác bọn họ knhì báoOn Error Resume NextSub Sample1() Dyên wb As String On Error Resume Next Workbooks.Open “C:Usersjpnfrikết thúc.netDesktopVBAap6c.xlsx” wb = ActiveWorkbook.Name MsgBox Workbooks(wb).Sheets(1).Cells(2, 1).Value Workbooks(wb).CloseEnd SubĐiều tệ sợ vẫn xảy ra, do tệp tin tap6c.xlsx ko trường tồn, tuy nhiên vì bị phớt lờ lỗi, cho nên vì vậy câu lệnh tiếp theo được triển khai.Lúc bấy giờ vắt vì chưng wb = tap6c.xlsx, bởi vì workbook đang rất được active sầu chính là tệp tin macro do đó wb đã là tên gọi tệp tin của macro đã tiến hành lệnh.Vì lệnh On Error Resume Next đã phớt lờ toàn bộ lỗi nếu có vào công tác, vấn đề đó sẽ gây nên khó khăn vào Việc phân phát hiện nay các lỗi khác nhưng mà bọn họ mong muốn lộ diện trường hợp bị lỗi thì nên báo nhằm bọn họ biết.Trong trường hợp này, họ vẫn áp dụng lệnh On Error Golớn 0Sub Sample1() Dlặng wb As String On Error Resume Next Workbooks.mở cửa “C:Usersjpnfriover.netDesktopVBAap6c.xlsx” On Error GoTo 0 Workbooks.mở cửa “C:Usersjpnfrikết thúc.netDesktopVBAap6c.xlsx” wb = ActiveWorkbook.Name MsgBox Workbooks(wb).Sheets(1).Cells(2, 1).Value Workbooks(wb).CloseEnd SubDòng lệnh vật dụng 4 sẽ không trở nên báo lỗi bởi vì lệnh On Error Resume Next phớt lờ toàn bộ lỗi ví như bao gồm trong chương trình.Tuy nhiên dòng lệnh sản phẩm công nghệ 5 đã remix lại, trường hợp gồm lỗi thì báo nhỏng bình thường.Vì vậy dòng lệnh máy 6 tạo nên lỗi cùng tức thì nhanh chóng lịch trình chú ý lỗi nhưng không phớt lờ nữa.

Xem thêm:

3. Kiểm tra tệp tin tất cả trường thọ hay là không trước khi tiến hành mngơi nghỉ tệp tin.Từ vấn đề nêu sinh sống trên, họ thấy rằng rất cần được kiểm soát tệp tin họ ý định mngơi nghỉ bao gồm thực thụ lâu dài hay là không, nhằm mục tiêu rời bị lỗi.Đoạn code tiếp sau đây vẫn xử lý vấn đề này.Chú ý chiếc lệnh số 4 tiếp sau đây.Sub Sample2() Dyên ổn lk As String lk = “C:Usersjpnfriend.netDesktopVBAap6b.xlsx” If Dir(lk) = “” Then MsgBox “File khong ton tai” Else Workbooks.Open lk End IfEnd Sub4. Mngơi nghỉ tệp tin bởi người tiêu dùng hướng dẫn và chỉ định.

Chúng ta không chỉ có định tệp tin được msinh sống sống trong code, tất cả một phương pháp đó là bọn họ đang nhận ra tệp tin cần mngơi nghỉ từ bỏ sựgạn lọc của người tiêu dùng. Hơn ráng nữa, người dùng còn hoàn toàn có thể đảm bảo file thông qua hộp DialBox.Sub Sample_huynhhuunghia.edu.vn() Dlặng OpenFileName As String OpenFileName = Application.GetOpenFilename(“File excel,*.xls?”) If OpenFileName “False” Then Workbooks.xuất hiện OpenFileName End IfEnd Sub5. Đối sách vào bài toán đã lâu dài tệp tin trùng thương hiệu được msống rồi.Excel có thể chấp nhận được mnghỉ ngơi đôi khi những workbook (những tệp tin excel thuộc lúc), nhưng mà ko được trùng thương hiệu.Vì vậy, giả dụ vẫn có một tệp tin trùng thương hiệu được mngơi nghỉ trước kia thì lỗi vẫn xẩy ra lúc ta vậy mở 1 tệp tin trùng tên.Dưới đó là giải pháp, bọn họ đang chất vấn thứu tự từng workbook đang được msinh sống, coi bao gồm tệp tin như thế nào trùng têncùng với tệp tin ta dự tính mở hay là không.Sub Sample5() Dim wb As Workbook For Each wb In Workbooks If wb.Name = “Book1.xlsx” Then MsgBox “Book1 dang duoc mo” &chr(10) & “Vui long cthất bại file Boo1” Exit Sub End If Next wb Workbooks.Open “C:Book1.xlsx”End SubChúng ta chăm chú chiếc lệnh If wb.Name = “Book1.xlsx”, ghi không thiếu cả phần format file.Chúng ta nhớ là điều này, chớ tất cả ghi là If wb.Name = “Book1” .6. Tổng kết:Cuối thuộc, thuật toán thù nhằm mở một file của họ là://File định mlàm việc bao gồm lâu dài tuyệt không? -> Không tồn tại: Kết thúc cmùi hương trình//File trùng thương hiệu ko đang được msinh hoạt đúng không? -Không-> Kết thúc chương trìnhSub Sample_lingothẻ.vn2() Dyên ổn buf As String, wb As Workbook Const Target As String = “C:Book1.xlsx” “”Kiem tra tệp tin ton tai tuyệt khong? buf = Dir(Target) If buf = “” Then MsgBox Target & vbCrLf & “khong ton tai”, vbExclamation Exit Sub End If “”Kiem tra tệp tin trung ten co dang open xuất xắc khong For Each wb In Workbooks If wb.Name = buf Then MsgBox buf & vbCrLf & “dang duoc open”, vbExclamation Exit Sub End If Next wb “”Mo tệp tin Workbooks.xuất hiện TargetEnd SubLời bình người dịch: Có một đợt, tín đồ ta trải đời Cửa Hàng chúng tôi viết một công tác VBA. Rồi kế tiếp chúng tôi dấn đánh giá là công tác lỗi.Lý vì là, file đầu vào đặt mật khẩu đăng nhập, công tác ko msinh hoạt được tệp tin input đầu vào này đề nghị xuất hiện lỗi. Vì vậy, thuật tân oán ở bên trên để gia công chặt không chỉ có vậy, phải kiểm tratệp tin có bị đặt mật khẩu đăng nhập tuyệt không? Hoặc các bạn nên xác thực cùng với tình nhân cầu, là file của họ có đặt mật khẩu đăng nhập hay không?Reactions:Cxanh, Euler, Ốc Yêu và 1 other person

*

Cách msống tệp tin như vậy này còn có một chiếc khá bất tiện là folder được xuất hiện thêm nhiều khi ko sát cùng với file đề nghị mngơi nghỉ. Khắc phục vấn đề đó, tôi tất cả code nhỏng sau:Sub Sample3() Dim OpenFileName As String ChDrive “D” ChDir “D:VBA” OpenFileName = Application.GetOpenFilename(“Microsoft Excel,*.xls?”) If OpenFileName “False” Then Workbooks.mở cửa OpenFileName Else MsgBox “Ban da an Cancel” End IfEnd SubCmùi hương trình bên trên có điểm đặc trưng đó là, nó sẽ điều hướng Application.GetOpenFilename tới ổ D->D:VBAbởi vậy vẫn tiện lợi hơn cho những người cần sử dụng khi lựa chọn tệp tin.Reactions:Cbluelk = “C:Usersjpnfriend.netDesktopVBAap6b.xlsx” If Dir(lk) = “” Then MsgBox “File khong ton tai”Code này chỉ gồm chức năng là con đường links ngay tức thì mạch. Nếu như tệp tin được chứa vào folder nhưng tên folder có khoảng trống thì hư. lấy ví dụ như tên folder như sau: NewFolder4 (27072019). thì đang ra tác dụng không đúng, dù tệp tin chính xác là có mãi sau.Để khắc phục điều này, thì sử dụng FileSystemObject đang dạn dĩ hơn với triệt nhằm hơn.

Nói về Việc msinh hoạt file, thiệt ra cũng cần được kiểm tra tệp tin định mngơi nghỉ đã đang được mlàm việc hay chưa. Nói về vấn đề này, tôi đã làm kiếm tìm code bên trên mạng cũng có không ít, tuy vậy đấy là code nói cách khác là dễ dàng và đơn giản độc nhất. Ai biết thì thường xuyên phân tách sẻ:Function BookOpen(ByVal linktệp tin As String) As Boolean Dyên oBk As Workbook On Error Resume Next Set oBk = Workbooks(Dir(linkfile)) On Error GoTo 0 If oBk Is Nothing Then BookOpen = False Else Bookmở cửa = True End IfEnd Function:Hầu hết lúc select tệp tin thì mọi bạn những mong select tệp tin ở thuộc thỏng mục với tệp tin Tool. Do đó, ước muốn điều hướng về thư mục chđọng tệp tin Tool khi triển khai select tệp tin. Nếu nằm ở thư mục khác thì người tiêu dùng trường đoản cú ý chỉnh.Vì vậy ta gồm bí quyết giải quyết và xử lý nlỗi sau:Sub Change_Drive(ByVal strPath As String) Dyên strDrive As String With Excel.Application If InStr(1, strPath, “:”, vbTextCompare) = 0 Then Exit Sub strDrive = Left(strPath, InStr(1, strPath, “:”, vbTextCompare) – 1) If Len(strDrive) = 1 Then ChDrive sầu strDrive ChDir strPath End If End With End SubCách sử dụng:Thủ tục sau đang lấy đường links của file cơ mà người tiêu dùng select. khi người tiêu dùng select file thì sẽ tiến hành điều hướng đến thư mục cất file Tool.Sub laylinktext(ByRef strFilepath As String) With Excel.Application hotline Change_Drive(.ThisWorkbook.Path) strFilepath = .GetOpenFilename(“File log type lingothẻ.vn (*.txt), *.txt”, , “Select tệp tin log”) End WithEnd Sub