AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi [OLE-Fernsteue]Formeln in Exceltabellen eintragen - Problem
Thema durchsuchen
Ansicht
Themen-Optionen

[OLE-Fernsteue]Formeln in Exceltabellen eintragen - Problem

Ein Thema von BingoBongo · begonnen am 28. Nov 2008 · letzter Beitrag vom 30. Nov 2008
Antwort Antwort
Seite 1 von 2  1 2      
BingoBongo

Registriert seit: 30. Sep 2005
19 Beiträge
 
#1

[OLE-Fernsteue]Formeln in Exceltabellen eintragen - Problem

  Alt 28. Nov 2008, 00:29
Hallo allerseits,
ich habe ein Problem, bei dem ich mir Hilfe erhoffe.
Ich habe ein kleines Tool geschrieben, welches mir sehr lästige Routineaufgaben beim Arbeiten mit bestimmten Excel-Tabellen abnimmt. Unter anderem sollen Formeln innerhalb einer solchen Exceltabelle verändert oder überschrieben werden.
Leider klappt genau das nicht so wie es soll.
Hier mal der Code, den ich verwende, damit man sich ein Bild davon machen kann, wie ich die OLE Steuerung verwende.
Delphi-Quellcode:
procedure gesamtmiete;
//paßt die Formel für die Gesamtmiete so an, dass alle 8 Zellen addiert werden
var
  Excel: Variant;
  kopie, kopie2: string;
  pfad: string;
  i: integer;
begin
  Excel := CreateOleObject('Excel.Application');
  pfad:= form1.Edit2.Text;
  Excel.Workbooks.Open (pfad);
  Excel.Visible := true;

  application.ProcessMessages;
  Excel.Sheets[2].select;
  Excel.Sheets[2].Range['e5'].select;
  Excel.ActiveCell.formula:= '=sum(c5:d8)';
  Excel.ActiveCell.NumberFormat:='0,00';

  Excel.ActiveWorkbook.Save; //(pfad);
  Excel.Quit;
  Excel := unassigned;
end;
Mein Problem ist nun, wie schreibe ich eine sogenannte Array-Formel in eine Excel-Zelle. Das sind diese Formeltypen, die durch Ctrl-Shift-Enter abgeschlossen werden müssen und dann durch geschweifte Klammern dargestellt werden.
Ich habe eine solche Formel mal aus einer meiner Tabellen in eine Variable rauskopiert und in einem Edit-Feld anzeigen lassen, aber da fehlen die geschweiften Klammern. Ich habe es sogar schon versucht, diese geschweiften Klammern einfach mit in die Zielzelle reinzukopieren, aber das funktioniert genausowenig.
Hat da jemand eine Idee dazu?

Mein zweites Problem sind Tabellenverknüpfungen, also Zellbezüge, welche auf eine andere Tabelle zeigen, die zum Zeitpunkt der Tabellenbearbeitung nicht existieren. Beim Ausführen des Programmes kommt die Abfrage von Excel nach dem Verzeichnis, in dem sich die Tabelle befindet, die in der Verknüpfung benannt wurde.
Gibt es eine Möglichkeit, diese Art der Abfrage zu deaktivieren und wenn ja, wie?

Für Hilfe wäre ich wirklich sehr dankbar.

Bingo
  Mit Zitat antworten Zitat
Benutzerbild von Chemiker
Chemiker

Registriert seit: 14. Aug 2005
1.859 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: [OLE-Fernsteue]Formeln in Exceltabellen eintragen - Prob

  Alt 28. Nov 2008, 01:11
Hallo BingoBongo,

Excel.ActiveCell.formula:= '=sum(c5:d8)'; Versuche mal das Gleichzeitzeichen innerhalb der Formel wegzulassen:

Excel.ActiveCell.formula:= 'sum(c5:d8)'; Wenn Du die Suche in der DP benutzt, solltest Du unter den Begriffen: VarArrayCreate suchen um ein Array für Excel zu erstellen.

Als weiteres hilft es sich einen Macro in Excel aufzuzeichen und diesen unter Delphi nachzustellen (als erste Näherung).

Alle Deine Anforderungen können mit Delphi umgesetzt werden.

Das sind erst mal Informationen zum Weitermachen, morgen mehr.

Bis bald Chemiker
wer gesund ist hat 1000 wünsche wer krank ist nur einen.
  Mit Zitat antworten Zitat
BingoBongo

Registriert seit: 30. Sep 2005
19 Beiträge
 
#3

Re: [OLE-Fernsteue]Formeln in Exceltabellen eintragen - Prob

  Alt 28. Nov 2008, 03:24
Erstmal danke für den ersten Tip. Ich habe aber an sich kein Problem mit dem Gleichheitszeichen. Das funktioniert schon so wie es soll. Dieses Codebeispiel sollte nur als Anschauung dienen, da es ja mehrere Möglichkeiten gibt, Excel anzusteuern.
Aber dein Rat, nach VarArrayCreate zu suchen, hat mich drauf gebracht.
Die Ergänzung zu  Excel.ActiveCell.formula heißt scheinbar für diese Art von Arrayfunktionen  Excel.ActiveCell.formulaArray Das werde ich aber aus Müdigkeitsgründen jetzt sofort nicht ausprobieren, sondern wohl erst heute Abend.
Hast du vielleicht auch einen Tipp in Hinblick auf mein Zellbezugsproblem?

Bingo
  Mit Zitat antworten Zitat
Benutzerbild von Reinhardtinho
Reinhardtinho

Registriert seit: 26. Feb 2007
411 Beiträge
 
Delphi 5 Enterprise
 
#4

Re: [OLE-Fernsteue]Formeln in Exceltabellen eintragen - Prob

  Alt 28. Nov 2008, 08:24
Zitat von BingoBongo:
Gibt es eine Möglichkeit, diese Art der Abfrage zu deaktivieren und wenn ja, wie?
DisplayAlerts[LCID] := False
Ich habe viel von meinem Geld für Alkohol, Weiber und schnelle Autos ausgegeben ... Den Rest habe ich einfach verpraßt.

George Best - 22.05.1946 - 25.11.2005 - nordirischer Fußballspieler
  Mit Zitat antworten Zitat
BingoBongo

Registriert seit: 30. Sep 2005
19 Beiträge
 
#5

Re: [OLE-Fernsteue]Formeln in Exceltabellen eintragen - Prob

  Alt 29. Nov 2008, 10:50
@Chemiker: die FormulaArray - Variante funktioniert, also vielen Dank für den Tip.

@Reinhardtinho:
Ich bin mir nicht sicher, aber ist die Zuweisung des Inhalts der LCID Variable nicht von dieser Excel-Typbibliothek abhängig? Soweit ich das bisher begriffen habe, wird bei mir diese Variable nicht deklariert, da ich die Ansteuerung ohne Verwendung der Typbibliothek durchführe.
Wenn es nur mit dieser Zuweisung funktioniert, würde es denn dann reichen, diese Variable einfach zu deklarieren und zuzuweisen, oder klappt das dann nicht?

Bingo
  Mit Zitat antworten Zitat
Benutzerbild von Reinhardtinho
Reinhardtinho

Registriert seit: 26. Feb 2007
411 Beiträge
 
Delphi 5 Enterprise
 
#6

Re: [OLE-Fernsteue]Formeln in Exceltabellen eintragen - Prob

  Alt 29. Nov 2008, 11:58
Es müsste auch mit LCID = 0 gehen, kannst du ja mal testen.
Ich habe viel von meinem Geld für Alkohol, Weiber und schnelle Autos ausgegeben ... Den Rest habe ich einfach verpraßt.

George Best - 22.05.1946 - 25.11.2005 - nordirischer Fußballspieler
  Mit Zitat antworten Zitat
BingoBongo

Registriert seit: 30. Sep 2005
19 Beiträge
 
#7

Re: [OLE-Fernsteue]Formeln in Exceltabellen eintragen - Prob

  Alt 29. Nov 2008, 13:07
Scheint leider nicht so zu gehen. Hier mal der dazugehörige Quelltext, mit dem ich das ausprobiert habe.

Delphi-Quellcode:
procedure TForm1.Button13Click(Sender: TObject);
//zum testen diverser Funktionen
var
  Excel: Variant;
  row, column: Integer;
  kopie, kopie2: string;
  pfad: string;
  i: integer;
  LCID: integer;
begin
  LCID:= 0;
  Excel := CreateOleObject('Excel.Application');
  pfad:= form1.Edit4.Text;
  Excel.Workbooks.Open (pfad);
  Excel.DisplayAlerts[LCID] := False;
  Excel.Visible := true;
  Excel.Sheets[2].select;
// Excel.Sheets[2].unprotect; Excel.Sheets[2].Password:= '13983816';
// Excel.Sheets[2].range['b3'].select;
// Excel.ActiveCell.FormulaArray:= '=f1+f2';

end;
Das ist wie gesagt der QT, mit dem ich solche Sachen ausprobiere. Kannst du da erkennen, wie ich es verändern müßte, damit es funktioniert?
Das komische an der Sache ist nun, beim normalen Laufenlassen der Anwendung kommt nach dem Wegklicken der Verknüpfungsaktualisierungsmeldung die Fehlermeldung "Unzulässige Parameteranzahl".

Weißt du da weiter?

Bingo
  Mit Zitat antworten Zitat
Benutzerbild von Chemiker
Chemiker

Registriert seit: 14. Aug 2005
1.859 Beiträge
 
Delphi 11 Alexandria
 
#8

Re: [OLE-Fernsteue]Formeln in Exceltabellen eintragen - Prob

  Alt 29. Nov 2008, 13:47
Hallo BingoBongo,


Delphi-Quellcode:
Excel.DisplayAlerts := False;
  Excel.ActiveWorkBook.SaveAs(PathDateiName);
  FExcel.DisplayAlerts := False;
  Excel.ActiveWorkBook.Close;
  if (not varIsEmpty(Excel)) then
  begin
    Excel.Quit;
  end;
  Excel:= Unassigned;
Damit wir ohne nachfragen die Datei abgespeichert. Und die Excel-Instanz beendet.


Bis bald Chemiker
wer gesund ist hat 1000 wünsche wer krank ist nur einen.
  Mit Zitat antworten Zitat
BingoBongo

Registriert seit: 30. Sep 2005
19 Beiträge
 
#9

Re: [OLE-Fernsteue]Formeln in Exceltabellen eintragen - Prob

  Alt 29. Nov 2008, 14:05
Ohne das [LCID] als Parameter hat es auch nicht geklappt. Die Aktualisierungsfrage kommt noch immer, leider.

Bingo
  Mit Zitat antworten Zitat
Benutzerbild von Chemiker
Chemiker

Registriert seit: 14. Aug 2005
1.859 Beiträge
 
Delphi 11 Alexandria
 
#10

Re: [OLE-Fernsteue]Formeln in Exceltabellen eintragen - Prob

  Alt 29. Nov 2008, 14:33
Hallo BingoBongo,

starte das Programm mal ohne Debugger, ob dann immer noch die Meldung kommt. Eigentlich sollte das abspeichern so Funktionieren.

Bis bald Chemiker
wer gesund ist hat 1000 wünsche wer krank ist nur einen.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:40 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz