Otworzenie arkusza kalkulacyjnego

0
try
   oXL := CreateOleObject('Excel.Application');// Start Excel and get Application Object
   ok:=True;
except
   ok:=False;
end;
if not ok then
    MessageBox(Handle,ErrorInfo)
else
begin
     oXL.Visible := True;
end  

Mam taki fragment kodu to wywołania excela.
I to zawsze działało jak miałem Windows7
Teraz mam Windows 10 i ten kod wydaje się, że działa, tworzy proces, problem w tym, że Excel nie pokazuje się na ekranie (tylko wisi w procesach)
Oczywiście mam zainstalowany pakiet Office 365

Wiem że pewnie potrzeba do tego szklanej kuli, ale poradźcie co jeszcze mogę sprawdzić. I czemu u kolegi który też ma Windows10 działa a u mnie nie?

2

Do obsługi plików Excela polecam świetny pakiet http://www.kluug.net/xlsx-ods-delphi.php.
Ma tylko jeden mankament.. Jest płatny, 210 EUR.
Używam go od wielu lat

2

Pamiętam za czasów Delphi 3/5 wpadłem na taki pomysł aby podobną metodą pracować z EXCEL,
metoda koncepcyjnie genialna , tylko zawsze były z tym problemy z tym że na jednym komputerze działa a na innym nie.

Ja bym odradzał iść tą drogą, chyba że nie ma innych.

2

Może i głupie pytanie ale czy przypadkiem nie masz teraz WIN10 x64 z office w wersji x64, a apkę x32 ?

0
woolfik napisał(a):

Może i głupie pytanie ale czy przypadkiem nie masz teraz WIN10 x64 z office w wersji x64, a apkę x32 ?

Win10 X64
Office X32

0

A u kolegi u którego działa ?

0
Marius.Maximus napisał(a):

A u kolegi u którego działa ?

U kolegi tak samo.

0

Mam tu pod ręką apkę w Delphi5 uruchamiam excela na Win10 x64 i działa bez problemu ... sprawdzałeś w zdarzeniach systemu windows czy nie lecą jakieś błedy?

0

@My Razem: spróbuj tak:

var
  fObject: Variant;
  fBlock: Variant;
begin
  fObject := CreateOleObject('Excel.Application');
  fObject.Visible := true;
  fBlock := fObject.Workbooks.Add;
end;
0

I jednych to działa, u innych nie.
Mimo że u nas w firmie wszyscy mają Office 365 chyba w tej samej wersji.

0

A to musi być "zintegrowane" działanie / inprocess , z tego Excella czerpiemy jakiś strumień danych / eventów, czy tylko "otworzyć userowi" i do widzenia ?

Mam na myśli funkcję Win API "Open" (nie mam głowy odnaleźć dokumentacji)

0

Zadam może głupie pytanie ale może akurat o tym zapomniałeś. Wywołałeś wcześniej np. w OnCreate funkcję CoInitialize ewentualnie CoInitializeEx a po wszystkim np. OnClose lub OnDestroy CoUninitialize ?

0

w tym excelu który jest w tle dane się wypełniają, bo przy wylogowaniu albo zamknięciu systemu pyta czy zapisać dane. I później można zobaczyć że dane są zapisane.
Tylko że nie chce się pokazać.
I dodanie CoInitialize i CoUninitialize nic nie pomaga (wcześniej tego nie było i u wszystkich działało).
Może to coś z samym Excelem się zmieniło w nowej wersji?
Albo uprawnienia użytkowników?
Albo jakiś inny proces działający w tle?

0

Stało się coś dziwnego. Jak uruchomiłem raz mój programik jako administrator, to wszystko pięknie zadziałało.
Więc pomyślałem, że to pewnie z braku uprawnień nie działało.
Tylko, że jak teraz uruchamiam kolejny raz z normalnymi uprawnieniami to nadal wszystko działa (także po resecie i ponownej kompilacji, zmianie nazwy pliku, zmianie lokalizacji). Słowem odetkało się!
I jak to wytłumaczyć?

Są rzeczy na tym świecie, które się fizjologom nie śniły! :D

0

Widziałem cuda na komputerze, ale potem sie okazało że to DDR był uszkodzony :D

Może to wiszący proces w tle blokował EXCEL-a i restart po prostu pomógł.
Albo uruchomienie jako Admin dopisało coś w rejestrze do czego nie miał uprawnień zwykły śmiertelnik

1 użytkowników online, w tym zalogowanych: 0, gości: 1