View Single Post
  #2   Report Post  
Posted to microsoft.public.excel.programming
AG[_8_] AG[_8_] is offline
external usenet poster
 
Posts: 2
Default What Name for GetIDsOfName() ?

On 8 nov, 14:14, AG wrote:[i]
Hi all,

I am trying to automate an Excel sheet from a Windows Froms
application. In a first step, I would like to be able to read/write in
cells. I know it has been done millions of times, I have read a lot of
things in newsgroups, and in msdn, but I am stuck here. GetIDsOfName
always return -1. I don't know what name I should give it ? Would help
me to go further ?

Thank you in advance,

AG.

IRunningObjectTable * prot;
IEnumMoniker * penumMoniker=NULL;
IUnknown * punkObject;
IMoniker * mon;
ULONG Fetched=0;
HRESULT hr;
if(GetRunningObjectTable(0,&prot)!=S_OK)
{
toolStripStatusLabel1-Text = "Error, could not get a pointer
on ROT";
return;

}

toolStripStatusLabel1-Text = "ROT OK";

if(prot-EnumRunning(&penumMoniker)!=S_OK)
{
toolStripStatusLabel1-Text = "Error, could not Enumerate
through the ROT";
return;

}

penumMoniker-Reset();

while(penumMoniker-Next(1,&mon,&Fetched)==S_OK)
{
IBindCtx * pCtx;
if(CreateBindCtx(0,&pCtx)!=S_OK)
{
toolStripStatusLabel1-Text = "Error, Could not Bind
Ctx";
return;
}
LPOLESTR Name;
for(int i=0;i<Fetched;i++)
{
// here the Name variable shows the path to my excel
sheet : "file://C:\test\testExcel.xls"
if(mon.GetDisplayName(pCtx,NULL,&Name)!=S_OK)
{
toolStripStatusLabel1-Text = "Error in
GetDisplayName";
}
}
pCtx-Release();

hr = prot-GetObject(&mon[0],&punkObject);
if(!FAILED(hr))
{
hr = prot-IsRunning(&mon[0]);
if(!FAILED(hr))
{
break;
}
}

}

IDispatch * pDisp;
hr = punkObject-QueryInterface(IID_IDispatch,(void**)&pDisp);
if(FAILED(hr))
{
toolStripStatusLabel1-Text = "Error querying the Interface";

}

DISPID id;
LPOLESTR Name=L"Excel";
hr = pDisp-GetIDsOfNames(IID_NULL,&Name,1,LOCALE_USER_DEFAUL T,&id);
if(FAILED(hr))
{
// I always get here. I am not sure the Name "Excel" is
correct or what to put here ? "Excel.Application" ,...?
toolStripStatusLabel1-Text = "GetIDsOfNames failed";

}

pDisp-Invoke(...)


I have found my answers : L"ActiveSheet" was a correct answer. and I
took it from here :
http://support.microsoft.com/kb/216686/EN-US/

AG.