Avatar billede lyders Nybegynder
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
Avatar billede borrisholt Novice
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
Avatar billede lyders Nybegynder
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...)
Avatar billede kamikaze Nybegynder
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.
Avatar billede kamikaze Nybegynder
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 :-)
Avatar billede kamikaze Nybegynder
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.
Avatar billede lyders Nybegynder
10. april 2002 - 17:03 #6
Kamikaze> Takker... Det funker vel også selvom det ikke er en konsol applikation jeg har gang i??
Avatar billede kamikaze Nybegynder
10. april 2002 - 22:55 #7
Jeps, men det er nemmere at "distribuere" her på eksperten som konsol :-)
Avatar billede lyders Nybegynder
12. april 2002 - 18:23 #8
kamikaze> Det funker perfekt.. thanx :)
Avatar billede kamikaze Nybegynder
13. april 2002 - 01:02 #9
Tak for point :-)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester