i have Vc++ code . i need to create Dll file by using following code
can u help me....here with this i had sent my vc++ code
Expand|Select|Wrap|Line Numbers
- VARIANT root[64] = {0}; // Generic IDispatchs
- VARIANT parm[64] = {0}; // Generic Parameters
- VARIANT rVal = {0}; // Temporary result holder
- int level=0; // Current index into root[]
- // Initialize the OLE Library...
- OleInitialize(NULL);
- // Line 1: dim app as object
- VARIANT app = {0};
- // Line 2: set app = createobject Excel.Application
- {
- CLSID clsid;
- CLSIDFromProgID(L"Excel.Application", &clsid);
- HRESULT hr = CoCreateInstance(clsid, NULL, CLSCTX_LOCAL_SERVER|CLSCTX_INPROC_SERVER, IID_IDispatch, (void **)&rVal.pdispVal);
- if(FAILED(hr)) {
- char buf[256];
- sprintf(buf, "CoCreateInstance() for \"Excel.Application\" failed. Err=%08lx", hr);
- ::MessageBox(NULL, buf, "Error", 0x10010);
- _exit(0);
- }
- rVal.vt = VT_DISPATCH;
- }
- VariantCopy(&app, &rVal);
- VariantClear(&rVal);
- // Line 3: app . visible = 1
- rVal.vt = VT_I4;
- rVal.lVal = 1;
- VariantCopy(&root[++level], &app);
- AutoWrap(DISPATCH_PROPERTYPUT, NULL, root[level].pdispVal, L"visible", 1, rVal);
- VariantClear(&root[level--]);
- VariantClear(&rVal);
- // Line 4: app . workbooks . add
- VariantCopy(&root[++level], &app);
- AutoWrap(DISPATCH_PROPERTYGET|DISPATCH_METHOD, &root[level+1], root[level++].pdispVal, L"workbooks", 0);
- AutoWrap(DISPATCH_METHOD, NULL, root[level].pdispVal, L"add", 0);
- VariantClear(&root[level--]);
- VariantClear(&root[level--]);
- // Line 5: MsgBox Slow fill example...
- ::MessageBox(NULL, "Slow fill example...", "MsgBox", MB_SETFOREGROUND);
- // Line 6: dim i as long
- VARIANT i = {0};
- // Line 7: dim j as long
- VARIANT j = {0};
- // Line 8: with app . activesheet
- VariantCopy(&root[++level], &app);
- AutoWrap(DISPATCH_PROPERTYGET|DISPATCH_METHOD, &rVal, root[level].pdispVal, L"activesheet", 0);
- VariantClear(&root[level--]);
- VariantCopy(&root[++level], &rVal);
- VariantClear(&rVal);
- // Line 9: for i = 1 to 15
- {
- long endVali = 15;
- i.vt = VT_I4;
- for(i.lVal=1; i.lVal<=endVali; i.lVal++) {
- // Line 10: for j = 1 to 15
- {
- long endValj = 15;
- j.vt = VT_I4;
- for(j.lVal=1; j.lVal<=endValj; j.lVal++) {
- // Line 11: . cells i , j . value = i
- VariantCopy(&rVal, &i);
- VariantCopy(&parm[0], &i);
- VariantCopy(&parm[1], &j);
- AutoWrap(DISPATCH_PROPERTYGET|DISPATCH_METHOD, &root[level+1], root[level++].pdispVal, L"cells", 2, parm[1], parm[0]);
- VariantClear(&parm[0]);
- VariantClear(&parm[1]);
- AutoWrap(DISPATCH_PROPERTYPUT, NULL, root[level].pdispVal, L"value", 1, rVal);
- VariantClear(&root[level--]);
- VariantClear(&rVal);
- // Line 12: DoEvents
- {
- MSG msg;
- while(PeekMessage(&msg, NULL, NULL, NULL, PM_REMOVE)) {
- TranslateMessage(&msg);
- DispatchMessage(&msg);
- }
- }
- // Line 13: next j
- }
- }
- // Line 14: next i
- }
- }
- // Line 15: msgbox Click me to clear range
- ::MessageBox(NULL, "Click me to clear range", "MsgBox", MB_SETFOREGROUND);
- // Line 16: . range A1:O15 . Clear
- parm[0].vt = VT_BSTR; parm[0].bstrVal = ::SysAllocString(L"A1:O15");
- AutoWrap(DISPATCH_PROPERTYGET|DISPATCH_METHOD, &root[level+1], root[level++].pdispVal, L"range", 1, parm[0]);
- VariantClear(&parm[0]);
- AutoWrap(DISPATCH_METHOD, NULL, root[level].pdispVal, L"Clear", 0);
- VariantClear(&root[level--]);
- // Line 17: end with
- VariantClear(&root[level--]);
- // Line 18: msgbox Now the fast way!
- ::MessageBox(NULL, "Now the fast way!", "MsgBox", MB_SETFOREGROUND);
- // Line 19: dim arr 1 to 15 , 1 to 15 as long
- VARIANT arr;
- arr.vt = VT_ARRAY | VT_VARIANT;
- {
- SAFEARRAYBOUND sab[2];
- sab[0].lLbound = 1; sab[0].cElements = 15-1+1;
- sab[1].lLbound = 1; sab[1].cElements = 15-1+1;
- arr.parray = SafeArrayCreate(VT_VARIANT, 2, sab);
- }
- // Line 20: for i = 1 to 15
- {
- long endVali = 15;
- i.vt = VT_I4;
- for(i.lVal=1; i.lVal<=endVali; i.lVal++) {
- // Line 21: for j = 1 to 15
- {
- long endValj = 15;
- j.vt = VT_I4;
- for(j.lVal=1; j.lVal<=endValj; j.lVal++) {
- // Line 22: arr i , j = i
- VariantCopy(&rVal, &i);
- {
- VARIANT tmp = {0};
- long indices[] = {i.lVal,j.lVal};
- VariantCopy(&tmp, &rVal);
- SafeArrayPutElement(arr.parray, indices, (void*)&tmp);
- }
- VariantClear(&rVal);
- // Line 23: next j
- }
- }
- // Line 24: next i
- }
- }
- // Line 25: app . activesheet . range A1:O15 . value = arr
- VariantCopy(&rVal, &arr);
- VariantCopy(&root[++level], &app);
- AutoWrap(DISPATCH_PROPERTYGET|DISPATCH_METHOD, &root[level+1], root[level++].pdispVal, L"activesheet", 0);
- parm[0].vt = VT_BSTR; parm[0].bstrVal = ::SysAllocString(L"A1:O15");
- AutoWrap(DISPATCH_PROPERTYGET|DISPATCH_METHOD, &root[level+1], root[level++].pdispVal, L"range", 1, parm[0]);
- VariantClear(&parm[0]);
- AutoWrap(DISPATCH_PROPERTYPUT, NULL, root[level].pdispVal, L"value", 1, rVal);
- VariantClear(&root[level--]);
- VariantClear(&root[level--]);
- VariantClear(&root[level--]);
- VariantClear(&rVal);
- // Line 26: msgbox All done.
- ::MessageBox(NULL, "All done.", "MsgBox", MB_SETFOREGROUND);
- // Line 27: app . activeworkbook . saved = 1
- rVal.vt = VT_I4;
- rVal.lVal = 1;
- VariantCopy(&root[++level], &app);
- AutoWrap(DISPATCH_PROPERTYGET|DISPATCH_METHOD, &root[level+1], root[level++].pdispVal, L"activeworkbook", 0);
- AutoWrap(DISPATCH_PROPERTYPUT, NULL, root[level].pdispVal, L"saved", 1, rVal);
- VariantClear(&root[level--]);
- VariantClear(&root[level--]);
- VariantClear(&rVal);
- // Line 28: app . quit
- VariantCopy(&root[++level], &app);
- AutoWrap(DISPATCH_METHOD, NULL, root[level].pdispVal, L"quit", 0);
- VariantClear(&root[level--]);
- // Line 29: set app = nothing
- VariantClear(&app);
- // Clearing variables
- VariantClear(&app);
- VariantClear(&i);
- VariantClear(&j);
- VariantClear(&arr);
- // Close the OLE Library...
- OleUninitialize();