Share Workbook mà không bị mất macro.

Liên hệ QC

nth09061985

Thành viên mới
Tham gia
19/7/13
Bài viết
49
Được thích
5
Do yêu cầu công việc em cần share 1 File có chứa Macro từ 1 máy cho nhiều máy khác cùng làm và em đã sử dụng "share Workbook". Tuy nhiên có 1 vấn đề xảy ra khi thực hiện bằng share Workbook đó là khi thực thao tác trên File này ở các máy được Share thì macro không hoạt động. Vậy em muốn hỏi các anh chị và các bạn có cách nào để có thể Share File này cho nhiều máy mà vẫn giữ được Macros không ạ? Cảm ơn các anh chị nhiều ạ!
 
Do yêu cầu công việc em cần share 1 File có chứa Macro từ 1 máy cho nhiều máy khác cùng làm và em đã sử dụng "share Workbook". Tuy nhiên có 1 vấn đề xảy ra khi thực hiện bằng share Workbook đó là khi thực thao tác trên File này ở các máy được Share thì macro không hoạt động. Vậy em muốn hỏi các anh chị và các bạn có cách nào để có thể Share File này cho nhiều máy mà vẫn giữ được Macros không ạ? Cảm ơn các anh chị nhiều ạ!
Nếu bạn sử dụng office từ 2007 trở lên thì lưu file dưới dạng *.xlsm hoặc *xlsb là được
 
Do yêu cầu công việc em cần share 1 File có chứa Macro từ 1 máy cho nhiều máy khác cùng làm và em đã sử dụng "share Workbook". Tuy nhiên có 1 vấn đề xảy ra khi thực hiện bằng share Workbook đó là khi thực thao tác trên File này ở các máy được Share thì macro không hoạt động. Vậy em muốn hỏi các anh chị và các bạn có cách nào để có thể Share File này cho nhiều máy mà vẫn giữ được Macros không ạ? Cảm ơn các anh chị nhiều ạ!
Ở chế độ Share, thì ko chạy được Marco đâu bạn.
Chỉ có kịch bản thế này, khi file đang ở chế độ share muốn người dùng chạy được marco thì thêm vào đoạn marco đó:
1. Bỏ chế độ share.
2. Chạy thủ tục.
3. Share lại.
 
Lần chỉnh sửa cuối:
Ở chế độ Share, thì ko chạy được Marco đâu bạn.
Chỉ có kịch bản thế này, khi file đang ở chế độ share muốn người dùng chạy được marco thì thêm vào đoạn marco đó:
1. Bỏ chế độ share.
2. Chạy thủ tục.
3. Share lại.
Liệu có thể viết đoạn Macro như kịch bản của anh không ạ? Nếu được mong anh và các bạn giúp đỡ em với ạ!
 
Liệu có thể viết đoạn Macro như kịch bản của anh không ạ? Nếu được mong anh và các bạn giúp đỡ em với ạ!
Được chứ bạn, tuy nhiên khá rủi ro.
bạn thử nghĩ xem, giả sử 2 người cùng đang mở file, người 1 chạy marco -> thì người 2 sẽ thế nào? Tôi chưa thử nhưng khả năng người 2 bị báo lỗi là rất cao. Còn code thì rất đơn giản.
bạn đã biết share/bỏ share ửokbook bằng tay rồi, bạn thử record thao tác đấy xem sao, học thế sẽ dễ nhớ hơn.
 
Được chứ bạn, tuy nhiên khá rủi ro.
bạn thử nghĩ xem, giả sử 2 người cùng đang mở file, người 1 chạy marco -> thì người 2 sẽ thế nào? Tôi chưa thử nhưng khả năng người 2 bị báo lỗi là rất cao. Còn code thì rất đơn giản.
bạn đã biết share/bỏ share ửokbook bằng tay rồi, bạn thử record thao tác đấy xem sao, học thế sẽ dễ nhớ hơn.
Vấn đề là khi bỏ share rồi thì làm sao còn tác động lên code được nữa bạn?
 
Vấn đề là khi bỏ share rồi thì làm sao còn tác động lên code được nữa bạn?
Tôi làm thế này, ko biết có đúng ý bạn:

Mã:
Sub Share()


Application.DisplayAlerts = False
    
    If ActiveWorkbook.MultiUserEditing Then ActiveWorkbook.ExclusiveAccess


    ' Thu tuc cua ban
    
    ActiveWorkbook.SaveAs Filename:=ActiveWorkbook.FullName, accessMode:=xlShared


Application.DisplayAlerts = True


End Sub

Bạn add thủ tục của bạn vào và chạy xem sao
Ở chế độ share thì marco đâu có mất bạn, chỉ là thủ tục nó ko chạy khi ở chế độ share, do đó để chạy được, phải bỏ share ra trước, sau đó mới chạy thủ tục....
 
Lần chỉnh sửa cuối:
Tôi làm thế này, ko biết có đúng ý bạn:

Mã:
Sub Share()


Application.DisplayAlerts = False
    
    If ActiveWorkbook.MultiUserEditing Then ActiveWorkbook.ExclusiveAccess


    ' Thu tuc cua ban
    
    ActiveWorkbook.SaveAs Filename:=ActiveWorkbook.FullName, accessMode:=xlShared


Application.DisplayAlerts = True


End Sub

Bạn add thủ tục của bạn vào và chạy xem sao
Ở chế độ share thì marco đâu có mất bạn, chỉ là thủ tục nó ko chạy khi ở chế độ share, do đó để chạy được, phải bỏ share ra trước, sau đó mới chạy thủ tục....
Cảm ơn bạn rất nhiệt tình giúp đỡ. Để tôi Test và báo cáo kết quả lại cho bạn ngay nhé! Hy vọng có thể giải quyết được!
 
Tôi làm thế này, ko biết có đúng ý bạn:

Mã:
Sub Share()


Application.DisplayAlerts = False
    
    If ActiveWorkbook.MultiUserEditing Then ActiveWorkbook.ExclusiveAccess


    ' Thu tuc cua ban
    
    ActiveWorkbook.SaveAs Filename:=ActiveWorkbook.FullName, accessMode:=xlShared


Application.DisplayAlerts = True


End Sub

Bạn add thủ tục của bạn vào và chạy xem sao
Ở chế độ share thì marco đâu có mất bạn, chỉ là thủ tục nó ko chạy khi ở chế độ share, do đó để chạy được, phải bỏ share ra trước, sau đó mới chạy thủ tục....
Anh ơi đúng là làm như cách của anh thì code của File đó hoạt động thật. Cho em hỏi thêm vấn đề này ạ!
Công việc em cần là: Trên máy chủ của em sẽ có nhiều File "Con" có cấu trúc giống nhau và 1 File "Tổng hợp" (File này luôn luôn mở). File "Tổng hợp" không có code. Chỉ có các File "con" có code và các code trong các File con đều làm 1 công việc giống nhau là sau mỗi lần nhập liệu xong 1 dòng dữ liệu nếu nhấn nút "Cập nhật" thì code sẽ copy dòng dữ liệu đó sang File "Tổng hợp". Các File con này được "Share Workbook" cho các máy khác. Tức đoạn code trên các File đã được share làm công việc lưu dữ liệu vào 1 File "Tổng hợp" và em lắp code của em vào đoạn code của anh thì nó báo lỗi. Em thấy nó báo lỗi không tìm thấy File "Tổng hợp". Vậy em mong các anh chị giúp em đoạn code để có thể thực hiện việc lưu dữ liệu 1 File đã được "Share Workbook" vào 1 File được mở sẵn trên cùng 1 máy đó.(Máy chủ)
Đoạn code để làm công việc nói ở trên em viết như sau:
Mã:
Option Explicit
Public Sub capnhat()
Dim Lr As Long, Lr1 As Long
Application.ScreenUpdating = False
[COLOR=#ff0000]        Lr = Workbooks("TongHop").Sheets("DuLieu").Range("A65536").End(xlUp).Row[/COLOR]
        Lr1 = Sheets("DuLieu").Range("A10000").End(xlUp).Row
        Workbooks("May1").Sheets("DuLieu").Range("A" & Lr1).Resize(1, 3).Copy
        Workbooks("TongHop").Sheets("DuLieu").Range("A" & Lr + 1).PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = False
Application.ScreenUpdating = True
End Sub
Khi chạy code này từ file được share workbool ử máy khác nó báo lỗi ở dòng màu đỏ. Em nghĩ do nó không tìm thấy File "Tong Hop" mong anh chị giúp em sửa chỗ này với ạ!(Đó là phỏng đoán của em thôi).
P/S: Tất cả các máy được nối mạng LAN
 

File đính kèm

code bài 9 mục đích của bạn là copy File nọ paste qua file kia viết như vậy là lỗi hết chứ đâu phải

một dòng đó....mà Lr = Workbooks("TongHop") thiếu phần mở rộng file thì nó làm sao hiểu được ý bạn

muốn gì

viết vậy nó mới hiểu Lr = Workbooks("TongHop.xlsx")

nói chung code sai tè le...
 
code bài 9 mục đích của bạn là copy File nọ paste qua file kia viết như vậy là lỗi hết chứ đâu phải

một dòng đó....mà Lr = Workbooks("TongHop") thiếu phần mở rộng file thì nó làm sao hiểu được ý bạn

muốn gì

viết vậy nó mới hiểu Lr = Workbooks("TongHop.xlsx")

nói chung code sai tè le...
Em cảm ơn anh nhiều ạ! Tại em thấy nó báo lỗi dòng đó nên em nghĩ lỗi dòng đó ạ! Vậy nhờ anh viết giúp em đoạn code với ạ! Nếu có gì chưa hiểu thì anh cứ hỏi ạ! Cảm ơn anh đã quan tâm!
 
Đây lại là 1 chủ đề khác, bạn nên tạo topic khác để hỏi, hỏi chen luôn vào sẽ ít thành viên để ý và giúp bạn.
 
Web KT

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

Back
Top Bottom