vb.net - GetActiveObject from The Excel Worbook -
i have datepicker written in vb.net looks this.
i had way because of security settings have. because of that, build in datepicker excel generate error.
the date picker works fine if there only 1 excel application open. problem when there multiple excel applications open.
the code takes first excel application, want excel workbook that's called "test".
i think problem statement:
objexcel = system.runtime.interopservices.marshal.getactiveobject("excel.application") for better understanding code excel , datepicker application below:
that's how open vb.net application in excel:
set wsh = vba.createobject("wscript.shell") arg = activeworkbook.path & ";" & activeworkbook.name & ";" & activesheet.name & ";" & target.address ' wait shelled application finish: errorcode = wsh.run(strpathdatepicker & " " & arg, windowstyle, waitonreturn) the code datepciker is:
public sub frmdatepicker_load(sender object, e eventargs) handles mybase.load dim par() string dim strtemp string try dim arg = environment.getcommandlineargs strtemp = arg(1) par = split(strtemp, ";") 'split arg, information excel workbook strwbpath = par(0) strwbname = par(1) strwsname = par(2) stradresse = par(3) catch ex exception me.close() end try end sub if click on date vb.net application run code inserting selected date excel:
private sub monthcalendar1_dateselected(sender object, e daterangeeventargs) handles monthcalendar1.dateselected dim objexcel excel.application dim wb excel.workbook dim ws excel.worksheet try 'get excel object objexcel = system.runtime.interopservices.marshal.getactiveobject("excel.application") each wb in objexcel.workbooks if wb.name = strwbname ws = wb.sheets(strwsname) ws.range(stradresse.tostring).value = e.start() me.close() end if next catch ex exception messagebox.show(ex.message) me.close() end try end sub
the usual ways pass process id, or application.hwnd, or risky activewindow.caption, think full external address enough find excel instance. example in vb.net (not tested):
dim o object = getobject("book 1.xls") dim wb excel.workbook = trycast(o, excel.workbook) note ; valid character in file, workbook, worksheet, , named range names recommend looking different separator. example non-printable characters chr(0) might work, or use full external address target.address(,,,1).
environment.getcommandlineargs(1) cause problems if argument contains spaces , not surrounded ": https://msdn.microsoft.com/en-us/library/system.environment.getcommandlineargs


Comments
Post a Comment