'Предполагается, что есть книга "C:\temp\Книга1.xlsm" с листом "Sheet1"
'в книге есть такой вот макрос:
'Sub ertert(s As String)
' Cells(Rows.Count, 1).End(xlUp)(2, 1).Resize(, 3).Value = s
'End Sub
'Допустим, у нас уже есть проект с формой Form1 и кнопками Button2 и Button3
'Предварительно нужно добавить в проект com-ссылку Microsoft Excel 14.0 Object Library
Imports Excel = Microsoft.Office.Interop.Excel
Public Class Form1
Dim xlApp As New Excel.Application
Dim xlWb As Excel.Workbook
Dim xlWsh As Excel.Worksheet
'Открыть файл
Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
xlWb = xlApp.Workbooks.Open("C:\temp\Книга1.xlsm")
xlApp.Visible = True
End Sub
'Запустить макрос
Private Sub Button2_Click(sender As System.Object, e As System.EventArgs) Handles Button2.Click
Dim tempString As String = "трали-вали"
xlWsh = xlWb.Sheets("Sheet1")
xlWsh.Activate()
Try
xlApp.Run("ertert", tempString)
'xlApp.Run("ertЦЦert", tempString) 'специально, чтобы вызвать ошибку
Catch ex As Exception
ErrMsgBox(ex)
End Try
End Sub
'Закрыть файл
Private Sub Button3_Click(sender As System.Object, e As System.EventArgs) Handles Button3.Click
xlWb.Close(False) 'закрыть файл без сохранения
xlApp.Quit() 'выйти из Excel
releaseObject(xlApp)
releaseObject(xlWb)
releaseObject(xlWsh)
Me.Close()
End Sub
'Уничтожить объекты и мусор
Private Sub releaseObject(ByVal obj As Object)
Try
System.Runtime.InteropServices.Marshal.ReleaseComObject(obj)
obj = Nothing
Catch ex As Exception
obj = Nothing
ErrMsgBox(ex)
Finally
GC.Collect()
End Try
End Sub
Private Sub ErrMsgBox(ByRef ex As Exception)
If ex Is Nothing Then Exit Sub
MsgBox(ex.Source & vbCrLf & ex.Message, 16)
End Sub
End Class
|