10. april 2002 - 14:12
Der er
8 kommentarer og 1 løsning
Åbne excel fra Visual C program...
Jeg sidder med følgende problem, og kender desværre intet til Windows programmering (endnu). Jeg kender dog udemærket C/C++ fra linux/unix miljø.... Hvordan får jeg åbnet Excel fra mit visual c++ windows program??? Er det muligt at angive et ark som automatisk tilmed skal åbnes?? På forhånd tak
Annonceindlæg tema
Forsvar & beredskab
Cybersikkerhed, realtidsdata og robuste it-systemer er blevet fundamentet for moderne forsvar.
10. april 2002 - 14:15
#1
her er noget Delphi kode ... Men du kan nemt oversætte det : procedure TForm1.Button1Click(Sender: TObject); var E_Excel: Variant; E_Application: Variant; E_WorkBook: Variant; E_WorkSheet: Variant; i,j : Integer; StdDato : TStdDato; Day : TDateTime; days : Integer; MonthIndex, YearIndex : Integer; const xlWorksheet = -4167; begin StdDato := TStdDato.Create; StdDato.MakeHelligdage(SpinEdit1.Value, True); E_Excel := CreateOleObject('Excel.Application'); E_Application := E_Excel.Application; E_Application.Visible := TRUE; E_Application.WorkBooks.Open('C:\Book1.XlS'); // XLS ƒtƒ@ƒCƒ‹‚ðŽw’è E_WorkBook := E_Application.ActiveWorkbook; E_WorkBook.Sheets.Add; E_WorkSheet := E_Application.ActiveSheet; MonthIndex := ComboBox1.Itemindex + 1; YearIndex := SpinEdit1.Value; Day := StrToDate('01-' + IntToStr(MonthIndex)+'-' + IntToStr(YearIndex)); j := DayOfWeek(Day); days := DaysInMonth[IsLeapYear(YearIndex)][MonthIndex]; for i := 2 to days + 2 do begin E_WorkSheet.Cells[1, i].Value := LongDayNames[j]; inc(j); if j > 7 then j := 1; E_WorkSheet.Cells[2, i].Value := format('%d-%s', [i-1, ShortMonthNames[MonthIndex]]); end; E_WorkSheet.Cells[2, 1].Value := LongMonthNames[MonthIndex] + '-' + copy(IntToStr(YearIndex), 3,2); (* for i := 1 to 10 do for j := 1 to 10 do E_WorkSheet.Cells[j, i].Value := i * j; for i := 1 to 10 do begin Ch := Chr(64 + i); E_WorkSheet.Cells[11, i].Value := Format('=Sum(%s1:%s10)', [Ch, Ch]); end; *) end; Jens B
10. april 2002 - 15:35
#2
Borrisholt> Mange tak for svaret... men det er vist lidt overkill (ked af hvis jeg har fået formuleret mig forkert) Men jeg mente nu bare hvordan jeg starter selve Excel op... (ligesom jeg har set nogle eksempler på hvordan man starter f.eks calc op fra visual basic...)
10. april 2002 - 16:26
#3
Følgende kompilerer i M$VC++, konsol applikation: #include <windows.h> #include <iostream.h> #include <conio.h> void RunProgram(char* pszAppName, char* pszParams) { ShellExecute(NULL, "open", pszAppName, pszParams, NULL, SW_SHOW); } int main() { cout << "Press any key to launch notepad..." << endl; getch(); RunProgram("notepad.exe", NULL); cout << "Press any key to terminate..." << endl; getch(); return 0; } Du kan sende fil-navnet med som parameter.
10. april 2002 - 16:27
#4
Funktionen RunProgram() kan du bruge i dit Windows-program. Ved ikke lige hvad Excel hedder som .exe-navn, men det ved du sikkert :-)
10. april 2002 - 16:31
#5
Der er også en funktion der hedder ShellExecuteEx() i Win32 API'et som du kan læse om i MSDN'en.
10. april 2002 - 17:03
#6
Kamikaze> Takker... Det funker vel også selvom det ikke er en konsol applikation jeg har gang i??
10. april 2002 - 22:55
#7
Jeps, men det er nemmere at "distribuere" her på eksperten som konsol :-)
12. april 2002 - 18:23
#8
kamikaze> Det funker perfekt.. thanx :)
13. april 2002 - 01:02
#9
Tak for point :-)
Kurser inden for grundlæggende programmering