Mở workbook với VBA (1 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

thaibinh_excel

Thành viên hoạt động
Tham gia
18/10/07
Bài viết
127
Được thích
29
Nghề nghiệp
Bán Hàng
Chào các bác,

Thay vì dùng Hyperlink, mình dùng lệnh Open để mở 1 workbook B này từ 01 workbook A, nhưng sau khi mở xong rồi, nếu mình quay lại worksheet A để bấm chọn lại worksheet B 1 lần nữa thì Excel báo lỗi Reopening, vậy muốn mở được workbook theo kiểu như hyperlink ( workbook đã mở rồi vẫn cho phép active lên) thì mình phải sửa lệnh như thế nào ạ ?

Cám ơn các bác,
TB
 
Thì bạn thêm 1 dòng lệnh sữ lý lỗi cho nó trả về lệnh Workbooks("B").Activate là được rồi!
PHP:
'------------- On Error GoTo Baoloi '------------- Baoloi: Workbooks("B").Activate End Sub
 
Lần chỉnh sửa cuối:
Upvote 0
Thì bạn thêm 1 dòng lệnh sữ lý lỗi cho nó trả về lệnh Workbooks("B").Activate là được rồi!
PHP:
'-------------
On Error GoTo Baoloi
'-------------
Baoloi:
Workbooks("B").Activate
End Sub

Mình đã thử, vẫn báo lỗi bạn ơi??

Sub TransProfile()
Workbooks.Open ("D:\Membership project\Membership Profile.xls")
On Error GoTo baoloi
baoloi:
Workbooks("Membership Profile.xls").Activate
End Sub

Nhờ bạn xem giúp mình
Cám ơn bạn
TB
 
Upvote 0
PHP:
Sub TransProfile() On Error GoTo baoloi Workbooks.Open ("D:\Membership project\Membership Profile.xls") baoloi: Workbooks("Membership Profile.xls").Activate End Sub
Bạn phải cho thằng On Error GoTo baoloi nằm phía trên để nó biết được dòng lệnh bên dưới có sai hay không chứ?!! Thân.
 
Lần chỉnh sửa cuối:
Upvote 0
PHP:
Sub TransProfile()
On Error GoTo baoloi
Workbooks.Open ("D:\Membership project\Membership Profile.xls")
baoloi:
Workbooks("Membership Profile.xls").Activate
End Sub
Bạn phải cho thằng On Error GoTo baoloi nằm phía trên để nó biết được dòng lệnh bên dưới có sai hay không chứ?!!
Thân.

Aha, cái này được chỉ 1 lần rồi mà quên. Dốt thật. Cám ơn Po_pikachu nhé.

Chúc vui
TB
 
Upvote 0
Ah, Po-pikachu oi,

Còn 1 chút xíu nữa là nó vẫn hiện ra câu báo lỗi của Excel,
mình vô hiệu hóa câu báo lỗi này bằng lệnh gì vậy bạn?
:-)

Cám ơn bạn
TB
 
Upvote 0
Cái này các Bác dùng chi bẫy rỗi mệt rứa, bạn ấy chỉ muốn dùng như hyperlink thôi. Xem file đính kèm
 

File đính kèm

Upvote 0
@yeudoi: Bác yeudoi ơi, bác cho phép mở file Data lên khi mở file Book1 thì hình như không hợp lý lắm đó! Vì đâu biết người dùng có cần mở ngay hai không?
Còn nếu sau khi mở file Data lên rồi! Rồi nếu thoát ra, rồi mở lại thì gặp lỗi ngay. Bác xem lệnh Thu của em có tốt hơn không nhé! (Chẳng qua là lấy mã nguồn của bác thôi! He..he..he)%#^#$%#^#$%#^#$

@thaibinh_excel: Mình thử rồi đâu thấy lỗi đâu. Bạn gửi file lên xem nào.
Thân.
 

File đính kèm

Upvote 0
@yeudoi: Bác yeudoi ơi, bác cho phép mở file Data lên khi mở file Book1 thì hình như không hợp lý lắm đó! Vì đâu biết người dùng có cần mở ngay hai không?
Còn nếu sau khi mở file Data lên rồi! Rồi nếu thoát ra, rồi mở lại thì gặp lỗi ngay. Bác xem lệnh Thu của em có tốt hơn không nhé! (Chẳng qua là lấy mã nguồn của bác thôi! He..he..he)%#^#$%#^#$%#^#$

@thaibinh_excel: Mình thử rồi đâu thấy lỗi đâu. Bạn gửi file lên xem nào.
Thân.

Um, Po_Pikachu thu chep book1 va book2 vao My Documents và chạy thử nhé, mình chạy thữ thì nó báo lỗi luôn. Còn File của mình thi chạy okie, nhưng khi chọn lần thứ 02 để chạy thì Excel vẫn báo lỗi " Workbook này đã mở rồi.... bạn có muốn mở lại k?" Mình chọn No thì nó vẫn hiện ra, ý mình là k muốn câu này hiện ra lun đó.

Cám ơn bạn
TB
 

File đính kèm

Upvote 0
Bạn mở Explorer ra tìm xem chính xác đường dẫn của file b.xls đó ở đâu (Tức là khi thấy file b.xls rồi thì bấm phải chuột vào vùng trống chọn Properties, xem mục Target thì mới thấy chính xác đường dẫn được. Thân.
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Bạn mở Explorer ra tìm xem chính xác đường dẫn của file b.xls đó ở đâu (Tức là khi thấy file b.xls rồi thì bấm phải chuột vào vùng trống chọn Properties, xem mục Target thì mới thấy chính xác đường dẫn được.
Thân.

Mình đã check roi Po_Pi ơi, mình chạy lệnh thì nó vẫn hiện ra Workbook B, sau đó mình vào lại workbook A, click lần nữa thì nó hiện ra câu "B.xls is already open. Reopenning will cause any changes you made to be discarded. Do you want to reopen B.xls ?" . Mình chọn No thì nó vẫn mở ra được. Theo mình hiểu là khi On error thì nó vẫn hiện error cho mình biết sau đó mới thực hiện lệnh, có đúng k nhỉ?

By the way, mình có câu hỏi này nữa nhờ bạn giúp, mình muốn copy toàn bộ dữ liệu của sheet 1 workbook A sang sheet 1 workbook B, bạn có thể giúp dùm mình không ?

Cám ơn bạn rất nhiều,
Thân
TB
 
Upvote 0
Thật tình mình cũng không thể nào biết được máy bạn bị làm sao cả! Trên máy mình mọi việc bạn nói điều chạy tốt cả. Tức là sao khi mở Workbook B rồi (Workbook B đang hiện trên thanh Taskbar), thì qua workbook A mở lại lần nữa thì vẫn hiện Workbook B ra chứ có thông báo gì đâu. Bạn thử thêm code sau vào sub xem!
Mã:
Sub Transbook2() [COLOR=red]Application.DisplayAlerts = False [/COLOR]a = Sheet1.Range("F9").Value & "\b.xls" On Error GoTo baoloi [COLOR=teal][COLOR=green]'Workbooks.Open ("C:\Documents and Settings\Tung\My Documents\b.xls")[/COLOR] [/COLOR]Workbooks.Open (a) baoloi: Workbooks("b.xls").Activate [COLOR=red]Application.DisplayAlerts = True[/COLOR] End Sub
Vậy nha, lệnh On Error giống như việc bạn giả sử rằng nếu bạn ăn trộm thì sẽ "baoloi" tức là sẽ bị đánh đòn (baoloi:). Để cho máy tính nhớ xem có lỗi trong hành động lấy tiền của bạn không. Nếu có thì trả về baoloi. Việc sao chép dữ liệu từ Sheet 1 Workbook A sang Sheet 1 Workbook B thì bạn cứ Record Macro lại thôi! Rồi sao đó sữa lại một chút là được chứ gì. Nhớ, hai Workbook phải đồng thời mở lên mới làm được đó. Thân.
 
Lần chỉnh sửa cuối:
Upvote 0
Thật tình mình cũng không thể nào biết được máy bạn bị làm sao cả! Trên máy mình mọi việc bạn nói điều chạy tốt cả.
Tức là sao khi mở Workbook B rồi (Workbook B đang hiện trên thanh Taskbar), thì qua workbook A mở lại lần nữa thì vẫn hiện Workbook B ra chứ có thông báo gì đâu.
Bạn thử thêm code sau vào sub xem!
Mã:
Sub Transbook2()
[COLOR=red]Application.DisplayAlerts = False
[/COLOR]a = Sheet1.Range("F9").Value & "\b.xls"
On Error GoTo baoloi
[COLOR=teal][COLOR=green]'Workbooks.Open ("C:\Documents and Settings\Tung\My Documents\b.xls")[/COLOR]
[/COLOR]Workbooks.Open (a)
baoloi:
Workbooks("b.xls").Activate
[COLOR=red]Application.DisplayAlerts = True[/COLOR]
End Sub
Vậy nha, lệnh On Error giống như việc bạn giả sử rằng nếu bạn ăn trộm thì sẽ "baoloi" tức là sẽ bị đánh đòn (baoloi:). Để cho máy tính nhớ xem có lỗi trong hành động lấy tiền của bạn không. Nếu có thì trả về baoloi.

Việc sao chép dữ liệu từ Sheet 1 Workbook A sang Sheet 1 Workbook B thì bạn cứ Record Macro lại thôi! Rồi sao đó sữa lại một chút là được chứ gì.
Nhớ, hai Workbook phải đồng thời mở lên mới làm được đó.
Thân.

Thanks Po_Pi nhiều. Mình đã dùng Macro ghi lại được rồi. Còn phần mở WorkBook thì để mình thử lại xem sao. Hìhi, thật ra làm bằng Hyperlink cũng được nhưng đang mày mò macro nên muốn thử xem sao.

Chúc bạn vui,
Thân.
 
Upvote 0
Không biết có phải là đoạn code mà các bạn đang kiếm khg?
Mã:
Dim DestWB As Workbook
'Change the file name and the path/file name to your file
    If bIsBookOpen_RB("Backup.xls") Then
        Set DestWB = Workbooks("Backup.xls")
        DestWB.Activate
    Else
        Set DestWB = Workbooks.Open("C:\Users\Ron\test\Backup.xls")
    End If
-----------------------------
Function bIsBookOpen_RB(ByRef szBookName As String) As Boolean
' Rob Bovey
    On Error Resume Next
    bIsBookOpen_RB = Not (Application.Workbooks(szBookName) Is Nothing)
End Function
 
Upvote 0
Chào mọi người
có code nào khi kích hoạt Workbook sẽ kích hoạt luôn thông báo security alert macro của Excel đồng thời show userform lên, ẩn Workbook đi (chỉ ẩn đi thôi cho người khác không thấy nhưng vẫn lấy dữ liệu trên Workbook này được) và khi đóng userform (nút x màu đỏ) sẽ tự động save lại các thay đổi trong Workbook và thoát Workbook
Cám ơn tất cả mọi người
 
Lần chỉnh sửa cuối:
Upvote 0

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

Back
Top Bottom