LẤY DỮ LIỆU TỪ FILE EXCEL KHÁC VBA

1. Mở fileKhi mở file excel không giống ta sử dụng hàm Workbooks.OpenĐối cùng với excel, ta có thể mở đồng thời các file excel (workbook), khi ấy workbook là đối tượng để họ thao tác.Ví dụ ta bao gồm code như sau:Chú ý rằng workbook vừa bắt đầu được mở thì đó là workbook đang rất được Active, tức là đang được ngóng nhập dữ liệu.Do đó để không nhầm lẫn với workbook khác, ta đề nghị lấy thương hiệu workbook ngay trong khi nó được mở.

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

Đang xem: Lấy dữ liệu từ file excel không giống vba

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

Xem thêm: Cách Vẽ Đồ Thị Hàm Số Bậc Nhất Y=Ax+B Qua Các Ví Dụ Minh Họa

3. Bình chọn file bao gồm tồn tại hay không trước khi triển khai mở file.Từ vụ việc nêu sinh hoạt trên, bọn họ thấy rằng rất cần được kiểm tra file chúng ta dự định mở tất cả thực sự tồn tại tuyệt không, nhằm mục tiêu tránh bị lỗi.Đoạn code tiếp sau đây sẽ giải quyết và xử lý vấn đề đó.Chú ý loại lệnh số 4 bên dưới đây.Sub Sample2() Dim lk As String lk = “C:Usersjpnfriend.netDesktopVBAap6b.xlsx” If Dir(lk) = “” Then MsgBox “File khong ton tai” Else Workbooks.Open lk over IfEnd Sub4. Mở tệp tin do người tiêu dùng chỉ định.

Chúng ta không những định tệp tin được mở sống trong code, tất cả một phương pháp đó là họ sẽ nhận ra file phải mở từ sựlựa chọn của tín đồ dùng. Hơn thế nữa nữa, người tiêu dùng còn rất có thể xác thực file thông qua hộp DialBox.Sub Sample_ucozfree.com() Dim OpenFileName As String OpenFileName = Application.GetOpenFilename(“File excel,*.xls?”) If OpenFileName “False” Then Workbooks.Open OpenFileName end IfEnd Sub5. Đối sách trong vấn đề đang tồn tại file trùng tên được mở rồi.Excel cho phép mở đồng thời những workbook (nhiều file excel thuộc lúc), tuy nhiên không được trùng tên.Vì vậy, nếu như đã tất cả một tệp tin trùng thương hiệu được mở trước đó thì lỗi sẽ xảy ra khi ta gắng mở một tệp tin trùng tên.Dưới đó là giải pháp, bọn họ sẽ khám nghiệm lần lượt từng workbook đang được mở, xem có file làm sao trùng tênvới file ta dự định mở hay 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 close tệp tin Boo1” Exit Sub over If Next wb Workbooks.Open “C:Book1.xlsx”End SubChúng ta chú ý dòng lệnh If wb.Name = “Book1.xlsx”, ghi rất đầy đủ cả phần định hình file.Chúng ta nhớ là điều này, chớ bao gồm ghi là If wb.Name = “Book1” .6. Tổng kết:Cuối cùng, thuật toán nhằm mở một file của họ là://File định mở có tồn tại hay không? -> không tồn tại: xong xuôi chương trình//File trùng tên không đang rất được mở đúng không? -Không-> hoàn thành chương trìnhSub Sample_ucozfree.com2() Dim buf As String, wb As Workbook Const Target As String = “C:Book1.xlsx” “”Kiem tra file ton tai xuất xắc khong? buf = Dir(Target) If buf = “” Then MsgBox Target & vbCrLf & “khong ton tai”, vbExclamation Exit Sub kết thúc If “”Kiem tra tệp tin trung ten co dang xuất hiện hay khong For Each wb In Workbooks If wb.Name = buf Then MsgBox buf & vbCrLf & “dang duoc open”, vbExclamation Exit Sub over If Next wb “”Mo tệp tin Workbooks.Open TargetEnd SubLời bình fan dịch: tất cả một lần, người ta yêu thương cầu công ty chúng tôi viết một công tác VBA. Rồi sau đó công ty chúng tôi nhận bình luận là công tác lỗi.Lý bởi vì là, file input đặt mật khẩu, công tác không mở được file đầu vào này phải sinh ra lỗi. Vì vậy, thuật toán sống trên để gia công chặt hơn nữa, bắt buộc kiểm trafile có bị đặt mật khẩu xuất xắc không? Hoặc các bạn phải xác thực với tình nhân cầu, là file của họ có để mật khẩu tuyệt không?Reactions:Cblue, Euler, Ốc Yêu & 1 other person

*

Cách mở file như thế này có một cái hơi bất tiện là thư mục được mở ra đôi lúc không ngay sát với file phải mở. Khắc chế điều này, tôi tất cả code như sau:Sub Sample3() Dim OpenFileName As String ChDrive “D” ChDir “D:VBA” OpenFileName = Application.GetOpenFilename(“Microsoft Excel,*.xls?”) If OpenFileName “False” Then Workbooks.Open OpenFileName Else MsgBox “Ban da an Cancel” end IfEnd SubChương trình trên tất cả điểm đặc trưng đó là, nó sẽ điều hướng Application.GetOpenFilename tới ổ D->D:VBANhư vậy sẽ dễ dãi hơn cho những người dùng khi chọn file.Reactions:Cbluelk = “C:Usersjpnfriend.netDesktopVBAap6b.xlsx” If Dir(lk) = “” Then MsgBox “File khong ton tai”Code này chỉ có tác dụng là đường liên kết liền mạch. Ví như như file được đựng trong folder mà tên thư mục có khoảng trống thì hỏng. Ví dụ như tên folder như sau: NewFolder4 (27072019). Thì vẫn ra hiệu quả không đúng, dù file chính xác là có tồn tại.Để hạn chế điều này, thì sử dụng FileSystemObject sẽ to gan hơn cùng triệt để hơn.

Nói về câu hỏi mở file, thật ra cũng cần được kiểm tra file định mở đã đang được mở xuất xắc chưa. Nói đến vấn đề này, tôi đã làm tìm code bên trên mạng cũng có thể có khá nhiều, nhưng đây là code có thể nói rằng là đơn giản dễ dàng nhất. Ai biết thì liên tục chia sẻ:Function BookOpen(ByVal linkfile As String) As Boolean Dim oBk As Workbook On Error Resume Next mix oBk = Workbooks(Dir(linkfile)) On Error GoTo 0 If oBk Is Nothing Then BookOpen = False Else BookOpen = True kết thúc IfEnd Function:Hầu hết khi select tệp tin thì mọi bạn đều ước ao select tệp tin nằm cùng thư mục với tệp tin Tool. Do đó, ao ước muốn điều hướng về thư mục chứ tệp tin Tool khi thực hiện select file. Nếu nằm tại vị trí thư mục khác thì người dùng tự ý chỉnh.Vì vậy ta bao gồm cách xử lý như sau:Sub Change_Drive(ByVal strPath As String) Dim 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 strDrive ChDir strPath kết thúc If kết thúc With kết thúc SubCách sử dụng:Thủ tục sau sẽ lấy đường links của file 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 về thư mục đựng file Tool.Sub laylinktext(ByRef strFilepath As String) With Excel.Application hotline Change_Drive(.ThisWorkbook.Path) strFilepath = .GetOpenFilename(“File log type ucozfree.com (*.txt), *.txt”, , “Select tệp tin log”) over WithEnd Sub