1. Mở fileKhi mở file excel không giống ta cần sử dụng hàm Workbooks.OpenĐối với excel, ta có thể mở đồng thời những file excel (workbook), khi đó workbook là đối tượng để họ thao tác.Ví dụ ta tất cả code như sau:Chú ý rằng workbook vừa new được mở thì sẽ là workbook đang rất được Active, tức là đang được đợi nhập dữ liệu.Do đó để không lầm lẫn với workbook khác, ta buộc phải lấy tên 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 tài liệu từ file excel khác 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 tiến hành lấy tài liệu từ workbook được mở và hiện ra thông báo bằng hàm Msgbox.Tuy nhiên bây chừ chúng ta xét tới một vấn đề khác, đó là file chỉ định mở ko tồn tại.Lúc này macro sẽ báo lỗi.2. Phớt lờ lỗi nhằm chạy sang loại 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 cái lệnh khác thì làm việc đầu chương trình bọn họ 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 vẫn xảy ra, bởi file tap6c.xlsx không tồn tại, tuy vậy do bị phớt lờ lỗi, cho nên câu lệnh tiếp sau được thực thi.Lúc này thay vì wb = tap6c.xlsx, do workbook đang rất được active chính là file macro cho nên vì thế wb sẽ là tên gọi file của macro đang thực hiện lệnh.Vì lệnh On Error Resume Next đã phớt lờ toàn bộ lỗi nếu có trong chương trình, điều đó sẽ gây trở ngại trong việc phát hiện những lỗi không giống mà bọn họ mong muốn mở ra nếu bị lỗi thì nên báo để họ biết.Trong trường vừa lòng này, bọn họ sẽ sử 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 trang bị 4 sẽ không bị báo lỗi vì lệnh On Error Resume Next phớt lờ tổng thể lỗi nếu có trong chương trình.Tuy nhiên cái lệnh trang bị 5 sẽ reset lại, nếu tất cả lỗi thì báo như bình thường.Vì vậy dòng lệnh lắp thêm 6 tạo nên lỗi cùng ngay nhanh chóng chương trình chú ý lỗi nhưng không phớt lờ nữa.

Xem thêm: Sau Hút Thai Bao Lâu Thì Có Kinh Trở Lại, Bao Lâu Thì Trứng Rụng?

3. Bình chọn file bao gồm tồn tại hay là không trước khi thực hiện mở file.Từ sự việc nêu ở trên, bọn họ thấy rằng rất cần phải kiểm tra file chúng ta dự định mở tất cả thực sự tồn tại hay không, nhằm mục tiêu tránh bị lỗi.Đoạn code dưới đây sẽ giải quyết vấn đề đó.Chú ý cái lệnh số 4 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 kết thúc IfEnd Sub4. Mở tệp tin do người tiêu dùng chỉ định.

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

*

Cách mở file như vậy này có một cái hơi phiền phức là thư mục được mở ra nhiều lúc không ngay gần với file nên mở. Khắc phục và hạn chế điều này, tôi gồm 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 biệt đó là, nó sẽ điều phối Application.GetOpenFilename tới ổ D->D:VBANhư vậy sẽ tiện lợ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ó công dụng là đường links liền mạch. Giả dụ như tệp tin được chứa trong folder mà tên folder có khoảng không thì hỏng. Lấy một ví dụ tên thư mục như sau: NewFolder4 (27072019). Thì đang ra tác dụng không đúng, mặc dù file chính xác là có tồn tại.Để khắc phục và hạn chế điều này, thì thực hiện FileSystemObject sẽ mạnh bạo hơn cùng triệt nhằm hơn.

Nói về việc mở file, thật ra cũng cần phải kiểm tra file định mở đã đang rất được mở tuyệt chưa. Nói tới vấn đề này, tôi đã từng tìm code trên mạng cũng có thể có khá nhiều, nhưng đấy là code có thể nói là đơn giản dễ dàng nhất. Ai biết thì liên tiếp chia sẻ:Function BookOpen(ByVal linkfile As String) As Boolean Dim oBk As Workbook On Error Resume Next phối 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 file thì mọi bạn đều ước ao select file nằm thuộc thư mục với file Tool. Vày đó, ý muốn muốn điều hướng về folder chứ file Tool khi tiến hành select file. Nếu nằm tại thư mục không giống thì người dùng tự ý chỉnh.Vì vậy ta có cách giải quyết và 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 end If end With kết thúc SubCách sử dụng:Thủ tục sau vẫn lấy đường link của tệp tin mà người tiêu dùng select. Khi người tiêu dùng select tệp tin thì sẽ tiến hành điều hướng đến thư mục chứa file Tool.Sub laylinktext(ByRef strFilepath As String) With Excel.Application điện thoại tư vấn Change_Drive(.ThisWorkbook.Path) strFilepath = .GetOpenFilename(“File log type giatri.edu.vn (*.txt), *.txt”, , “Select file log”) over WithEnd Sub