views:

1126

answers:

3

I am using Borland Builder C++ 2009. I want to add a button to a form that allows the user to open a file in Excel that I specify. I can't think of how to do this. I know how to link with other code and executables -- is there a Microsoft Excel executable that I could use? How could I specify the file then? Any hints on this, or at least a place to look online, would be greatly appreciated.

+3  A: 

Assuming that the file type is registered with Excel, you could call ShellExecute() on the file, using the "open" verb. This will cause the file to be opened as if double clicked by the user in Explorer and will invoke Excel.

If that isn't the case, and you can assume that Excel is installed, you could instead pass "excel" to ShellExecute() as the application, and the path of the file as the parameter. (Note that I didn't test this, but it worked from the Run dialog, so I think that it should work from ShellExecute() as well).

Andy
+1  A: 

Thanks, Andy. I am using ShellExecute() as you suggested, giving Excel as the application and the path of the file as the parameter. It works to open Excel, however, it cannot seem to find the file. I have tried moving the file around, typing in the entire path, part of the path with no change. Here is the code I use:

ShellExecute(NULL, "open" ,"Excel.exe", "C:\\Documents and Settings\\Lab1\\My Documents\\Waypoint Tool.xls", NULL, SW_SHOWNORMAL);

So, I need to figure out why it isn't able to find this file.

Thank you for the suggestion to use ShellExecute though. I think I am on the right track!

Shishiree
Try using just "excel" instead of "Excel.exe". Excel.exe probably isn't in your path, but when installed Office adds "excel" as a special keywoard to launch excel (that's done via the registry somehow, I forget the details atm).
Andy
+2  A: 

Try:

print("ShellExecute(NULL, "open" ,"Waypoint Tool.xls", "C:\\Documents and Settings\\Lab1\\My Documents\\", NULL, SW_SHOWNORMAL);");

Looking at this page: http://msdn.microsoft.com/en-us/library/bb762153(VS.85).aspx

It seems like it wants the file you are wanted to execute the open on as the third parameter and the directory for the fourth.

Mesidin