我有一个用vb.net编写的看起来像这样的Datepicker。GetActiveObject从Excel的工作簿
我不得不这样做这种方式,因为我们有一些安全设置的。因此,Excel中的Build in Datepicker有时会生成一个错误。
日期选取器工作正常,如果有只有一个Excel应用程序打开。 问题是有多个Excel应用程序打开。
的代码只需要第一个Excel应用程序,但我想要得到的Excel工作簿这就是所谓的“测试”。
我认为这个问题是这样的说法:
objExcel = System.Runtime.InteropServices.Marshal.GetActiveObject("Excel.Application")
为了更好地理解代码从Excel和DatePicker的应用低于:
这就是我如何打开vb.net应用在Excel中:
Set wsh = VBA.CreateObject("WScript.Shell")
arg = ActiveWorkbook.Path & ";" & ActiveWorkbook.Name & ";" & ActiveSheet.Name & ";" & Target.Address
' Wait for the shelled application to finish:
errorCode = wsh.Run(strPathDatePicker & " " & arg, windowStyle, waitOnReturn)
DatePciker的代码是:
Public Sub frmDatePicker_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Dim Par() As String
Dim strTemp As String
Try
Dim arg = Environment.GetCommandLineArgs
strTemp = arg(1)
Par = Split(strTemp, ";")
'Split arg, to get the Information from the Excel Workbook
strWbPath = Par(0)
strWbName = Par(1)
strWsName = Par(2)
strAdresse = Par(3)
Catch ex As Exception
Me.Close()
End Try
End Sub
如果你现在点击一个日期vb.net应用程序将运行这段代码插入选定的日期到Excel:
Private Sub MonthCalendar1_DateSelected(sender As Object, e As DateRangeEventArgs) Handles MonthCalendar1.DateSelected
Dim objExcel As Excel.Application
Dim wb As Excel.Workbook
Dim ws As Excel.Worksheet
Try
'Get the Excel Object
objExcel = System.Runtime.InteropServices.Marshal.GetActiveObject("Excel.Application")
For Each wb In objExcel.Workbooks
If wb.Name = strWbName Then
ws = wb.Sheets(strWsName)
ws.Range(strAdresse.ToString).Value = e.Start()
Me.Close()
End If
Next
Catch ex As Exception
MessageBox.Show(ex.Message)
Me.Close()
End Try
End Sub
谢谢。这正是我需要的!并感谢您与Chr(0)的提示。而且我已经对命令行中的空格产生了问题。我只是做了一个搜索和替换的解决方法。 – Moosli