luongtuananh83
Thành viên mới

- Tham gia
- 27/12/07
- Bài viết
- 19
- Được thích
- 0
Tôi muốn từ vb6 gọi một macro excel để tính toán và xuất dữ liệu ra ngay trong excel. Xin hỏi phải làm thế nào? Xin các bạn hướng dẫn chi tiết, Thanks nhiều!
Bạn có thể tham khảo từ đây:Tôi muốn từ vb6 gọi một macro excel để tính toán và xuất dữ liệu ra ngay trong excel. Xin hỏi phải làm thế nào? Xin các bạn hướng dẫn chi tiết, Thanks nhiều!
Private Sub Command1_Click()
' Start Excel
Dim xlapp As Object 'Excel.Application
Set xlapp = CreateObject("Excel.Application")
' Make it visible...
xlapp.Visible = True
' Add a new workbook
Dim xlbook As Object 'Excel.Workbook
Set xlbook = xlapp.Workbooks.Add
' Add a module
Dim xlmodule As Object 'VBComponent
Set xlmodule = xlbook.VBProject.VBComponents.Add(1) 'vbext_ct_StdModule
' Add a macro to the module...
Dim strCode As String
strCode = _
"sub MyMacro()" & vbCr & _
" msgbox ""Inside generated macro!!!"" " & vbCr & _
"end sub"
xlmodule.CodeModule.AddFromString strCode
' Run the new macro!
xlapp.Run "MyMacro"
' ** Create a new toolbar with a button to fire macro...
' Add a new toolbar...
Dim cbs As Object 'CommandBars
Dim cb As Object 'CommandBar
Set cbs = xlapp.CommandBars
Set cb = cbs.Add("MyCommandBar", 1, , True) '1=msoBarTop
cb.Visible = True
' Make it visible & add a button...
Dim cbc As Object 'CommandBarControl
Set cbc = cb.Controls.Add(1) '1=msoControlButton
' Assign our button to our macro
cbc.OnAction = "MyMacro"
' Set text...
cbc.Caption = "Call MyMacro()"
' Set Face image...
' 51 = white hand
' 25 = glasses
' 34 = ink dipper
' etc...
cbc.FaceId = 51
' Pause so you can inspect results...
MsgBox "All done, click me to continue...", vbMsgBoxSetForeground
' Remember to release module
Set xlmodule = Nothing
' Clean up
xlbook.Saved = True
xlapp.Quit
End Sub
Khi tôi chạy đoạn code trên thì ct báo lỗi: programmatic access to "Visual basic project is not trusted" tại dòng:
' Add a module
Dim xlmodule As Object 'VBComponent
=> Set xlmodule = xlbook.VBProject.VBComponents.Add(1) 'vbext_ct_StdModule
Xin anh Duyệt giúp cho sửa thế nào? cảm ơn anh nhiều.
ps: tôi là dân amateur nên nhiều vđề còn ko rõ, anh thông cảm
Mình đã email cho bạn rồi mà không down hay giải nén được à. Thử down từ diễn đàn xem.Tôi muốn từ vb6 gọi một macro excel để tính toán và xuất dữ liệu ra ngay trong excel. Xin hỏi phải làm thế nào? Xin các bạn hướng dẫn chi tiết, Thanks nhiều!
Trong chương trình diết vius có phần "Xóa tất cả macro" Bạn đừng chọn mục này, nếu chọn thì nó sẽ quét sạch luôn đó.Mình có một số thắc mắc mong các A/C/E giải đáp giùm:
- Mình có làm một chương trình quản lý điểm trong Excel và có sử dụng VBA để tạo các Macro. Tuy nhiên các Macro này thường bị chương trình diệt virus xóa mất (VD: Sử dụng BKAV mà vô tình chọn Xóa tất cả Macro). Sau đó lại phải Import các Module một cách thủ công rất mất công. Vậy có cách nào để giấu các Macro này không cho các chương trình diệt virus thấy được không? Có thể sử dụng VB6 để giúp mình việc Import các Module được không?
- Trong bài của anh Duyệt, nếu không phải là thêm một Macro mới mà là Macro (Module, Form) đã tạo (trong file .bas, .frm) thì làm như thế nào?
A/C/E nào biết thì giúp mình nhé. Mình cảm ơn nhiều nhiều...
Đương nhiên là mình không bao giờ sử dụng tùy chọn "Xóa tất cả Macro" rồi. Vấn đề ở đây là chương trình Quản lý điểm này là mình làm cho cả trường sử dụng (chỉ 1 file cho tất cả các môn của 20 lớp, share qua mạng LAN). Chính vì nhiều người sử dụng như vậy mới hay bị xóa nhầm Macro. Lâu lâu lại bị thầy cô trong trường hỏi "Tại sao không...?" cũng hơi phiền. Vậy mới nhờ đến A/C/E giúp đỡ chứ...Trong chương trình diết vius có phần "Xóa tất cả macro" Bạn đừng chọn mục này, nếu chọn thì nó sẽ quét sạch luôn đó.