Mở báo cáo và gọi macro chạy

  • Thread starter Thread starter msc0506
  • Ngày gửi Ngày gửi
Liên hệ QC

msc0506

Thành viên chính thức
Tham gia
14/4/08
Bài viết
56
Được thích
12
Bạn nào có ví dụ khi mở tệp và chạy 1 lậnhh chỉ định trong tệp đó

Mình có têp chính khi mở tệp báo cáo (Dso1108) thì không cho Auto open của tệp này chạy mà bắt lậnh thứ 2 chạy

Giúp mình nhé
 
Bạn nào có ví dụ khi mở tệp và chạy 1 lậnhh chỉ định trong tệp đó

Mình có têp chính khi mở tệp báo cáo (Dso1108) thì không cho Auto open của tệp này chạy mà bắt lậnh thứ 2 chạy

Giúp mình nhé

Bạn xem file đính kèm nhé.
 

File đính kèm

Upvote 0
-Mình hiểu ý của bạn như thế này không biết có đúng không? Bạn có 1 tệp, trong tệp đó có 1 lệnh chạy theo thủ tục Auto_open. Làm thế nào để khi mở tệp, ta có thể chỉ định không chạy lệnh này mà chạy một lệnh khác (lệnh thứ 2).
-Nếu thế thì yêu cầu này quả là khó. Muốn không chạy, phải hủy thủ tục . Muốn hủy thủ tục, phải mở tệp. Mở tệp, thì thủ tục lại chạy. Quả là 1 cái vòng lẩn quẩn.
-Theo mình chỉ còn cách là để cho nó chạy lần đầu, dùng lệnh xóa module để xóa nó đi. Lần sau chắc chắn là nó không thể chạy nữa!
 
Upvote 0
Bạn thử với 3 macro sau

PHP:
Option Explicit

Private Sub Workbook_Open()
 Dim OK As String
 
 OK = Chr(10) & "      Nhap Gia Tri <>9:" & Chr(10) & "Else"
 OK = InputBox(OK, "Ban Bo Qua 'AuTo_Open?'", "9")
 
 ThatHay
 If OK = 9 Then SendKeys "~", False
 
End Sub



Mã:
Sub ThatHay()
    MsgBox "CFC chua?"
End Sub

PHP:
Sub Auto_Open()
    MsgBox "GPE.COM"
End Sub

Hai chú sau trong modyle 1
 
Upvote 0
Mình đã viết xong nhung thủ tục cuôi cùng thì chạy được 1 lần rồi bị máy khóa lại và báo đó là vi rut Macro Máy mình dung Bitde ,Và mình thử lại tắt luôn Bit và khởi động lai máy và viết lại với tệp mới vẫn bị như vậy

Code :
ModuleFuc1
Sub RunOpen()
On Error GoTo RaiseErr
Dim fileToOpen

CloseAll

fileToOpen = Application. _
GetOpenFilename("Excel files (*.xls),*.xls,All files (*.*),*.*", "Mo Bao cao - MSC")

If fileToOpen <> False Then
Application.Workbooks.Open fileToOpen
DeleteVBComponent ActiveWorkbook, "Module1"
End If

Exit Sub

RaiseErr:
MsgBox Err.Description, vbCritical, "Error: " & Err.Number
End Sub

Private Sub CloseAll()
Dim wb As Workbook
Dim bSave As Boolean
bSave = (MsgBox("Ban muon luu tat ca workbooks dang mo ?", vbExclamation + vbYesNo, "Dong tat ca de mo Bao cao ") = vbYes)
For Each wb In Application.Workbooks
wb.Close bSave
Next

End Sub

Sub Auto_Close()
'Application.CommandBars("My Addin").Delete
End Sub

Sub DeleteVBComponent(ByVal wb As Workbook, ByVal CompName As String)
' Xoa vbcomponent ten CompName tu wb
Application.DisplayAlerts = False
On Error Resume Next ' Neu co loi thi lam tiep cau lenh ke tiep
wb.VBProject.VBComponents.Remove wb.VBProject.VBComponents(CompName) ' Xoa component
wb.VBProject.VBComponents.Import "C:\Module1.bas"
wb.VBProject.VBComponents.Import "C:\Module4.bas"
wb.VBProject.VBComponents.Import "C:\MenuBaocao.bas"
wb.RunAutoMacros xlAutoOpen ' Nạp khởi tao cho Têp báo cáo

On Error GoTo 0
Application.DisplayAlerts = True
End Sub


Nếu không có DeleteVBComponent Thì bình thường
Các bạn giúp mình nhé


Giải thích :

Dự án này mình viết tạo Add-In chỉ đơn giản là để mở báo cáo của công ty (Trong đó có VBA ) khi mở :

- khi mở thì BC sẽ có 1 thủ tục MSgbox hỏi (Yes,No) làm sao mà tự động chọn No luôn hoặc ko cho thủ tục đó chạy
(Mình chưa biết )
- Xóa Module1 Của báo cáo đó
- Chèn vào 3 Module do mình viết để thiết lập định dạng và load 1 số thông tin mà cty giấu trong Báo cáo
(Mình đã viết code mình đã úp lên các bạn kiểm tra giúp mình )
Các bạn ra tay giúp mình nhé
 
Upvote 0
Web KT

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

Back
Top Bottom