Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi Delphi 2010 Professional & Excel 2007 TypeLibrary Probleme (https://www.delphipraxis.net/164368-delphi-2010-professional-excel-2007-typelibrary-probleme.html)

Cyberaxx 13. Nov 2011 18:27

AW: Delphi 2010 Professional & Excel 2007 TypeLibrary Probleme
 
Hm... Habe es nun geändert auf

Code:
EXCEL.ActiveWorkbook.Worksheets['Tabelle1'];
Excel.Cells[2, 1].Value := 'test2';
Excel.range['A2','A2'].value := 'test';
Excel.range['A2','A2'].Select; // Die Zelle A2
Excel.Selection.Borders[xlEdgeLeft].LineStyle := xlDashDot;
Excel.Selection.Borders[xlEdgeLeft].ColorIndex := 5; // blau
Excel.Selection.Borders[xlEdgeLeft].TintAndShade := 0;
Excel.Selection.Borders[xlEdgeLeft].Weight := xlMedium;
Der Text steht in der betreffenden Zelle und sie ist auch markiert genau wie vorher. Jedoch der Rahmen ist immernoch nicht vorhanden.

TExcelApplication hab ich auf meiner Form. Ka aber ohne die gehts ja nicht.

Excel Starten:
Delphi-Quellcode:
    try
      Excel := GetActiveOleObject('Excel.Application');
    except
      Excel := CreateOleObject('Excel.Application');
    end;
    Excel.Visible := True;
da kein Arbeitsblatt existiert:
Delphi-Quellcode:
Excel.Workbooks.Add(xlWBatWorkSheet);
ist ja auch gleich mien aktives.

und zu guter letzt eben die Zelle umranden.

Chemiker 13. Nov 2011 18:38

AW: Delphi 2010 Professional & Excel 2007 TypeLibrary Probleme
 
Hallo Cyberaxx,
versuch mal das hier:

Delphi-Quellcode:
procedure TForm1.btnRahmenZeichnenClick(Sender: TObject);
var
  OLEvExcel: OleVariant;
begin
  OLEvExcel := CreateOleObject('Excel.Application');
  OLEvExcel.Visible:= TRUE;
  OLEvExcel.Workbooks.add;
  OLEvExcel.ActiveWorkbook.Worksheets['Tabelle1'];

  OLEvExcel.Range['A1:L3'].Select;
  OLEvExcel.Selection.Borders[xlDiagonalDown].LineStyle := xlNone;
  OLEvExcel.Selection.Borders[xlDiagonalUp].LineStyle := xlNone;
  OLEvExcel.Selection.Borders[xlEdgeLeft].LineStyle := xlNone;

  OLEvExcel.Selection.Borders[xlEdgeTop].LineStyle := xlContinuous;
  OLEvExcel.Selection.Borders[xlEdgeTop].Color := -16777024;
  OLEvExcel.Selection.Borders[xlEdgeTop].TintAndShade := 0;
  OLEvExcel.Selection.Borders[xlEdgeTop].Weight := xlThin;

  ShowMessage('Rahmen in Excel ansehen');

  OLEvExcel.ActiveWorkBook.Saved:= TRUE;
  OLEvExcel.Workbooks.Close;

  OLEvExcel.Quit;
  OLEvExcel:= Unassigned;
end;


Bis bald Chemiker

Cyberaxx 13. Nov 2011 18:50

AW: Delphi 2010 Professional & Excel 2007 TypeLibrary Probleme
 
Dies klappt leider auch nicht.

Wenn ich das Excel Fenster anklicke sehe ich das Range Select also das die Felder A1-L3 markiert sind aber klicke ich dann eine Zelle ab, sehe ich dort keinen Rahmen.
Ich verstehs nicht, warum klappts bei anderen aber bei mir nicht. Office 2007 liegt in der standard Installation vor.
In Delphi habe ich nur die Jedies installiert.

Habe nun eben auch ein neues Projekt erstellt und nur diesen Source genutzt.
Zusätzlich mal die Komponenten von XP auf 2000 in Delphi umgestellt aber es klappt nicht.

Chemiker 13. Nov 2011 18:55

AW: Delphi 2010 Professional & Excel 2007 TypeLibrary Probleme
 
Hallo Cyberaxx,

schaust Du mal im Taskmanger unter Prozesse nach, ob vieleicht noch andere Excel Instanzen laufen die nicht ordentlich geschlossen worden sind.

Bis bald Chemiker

Chemiker 13. Nov 2011 19:00

AW: Delphi 2010 Professional & Excel 2007 TypeLibrary Probleme
 
Hallo Cyberaxx,
noch ein Versuch:
Delphi-Quellcode:
procedure TForm1.btnRahmenZeichnenClick(Sender: TObject);
var
  OLEvExcel: OleVariant;
begin
  OLEvExcel := CreateOleObject('Excel.Application');
  OLEvExcel.Visible:= TRUE;
  OLEvExcel.Workbooks.add;
  OLEvExcel.ActiveWorkbook.Worksheets['Tabelle1'];

  OLEvExcel.Range['A1:L3'].Select;


  olevEXCEL.Selection.Borders[xlDiagonalDown].LineStyle := xlNone;
  olevEXCEL.Selection.Borders[xlDiagonalUp].LineStyle := xlNone;

  olevEXCEL.Selection.Borders[xlEdgeLeft].LineStyle := xlDashDot;//xlContinuous;
  olevEXCEL.Selection.Borders[xlEdgeLeft].Color := clred;//xlAutomatic;
  olevEXCEL.Selection.Borders[xlEdgeLeft].TintAndShade := 0;
  olevEXCEL.Selection.Borders[xlEdgeLeft].Weight := xlMedium; //xlThick;

  olevEXCEL.Selection.Borders[xlEdgeTop].LineStyle := xlDashDot;// xlContinuous;
  olevEXCEL.Selection.Borders[xlEdgeTop].Color := clred;//xlAutomatic;
  olevEXCEL.Selection.Borders[xlEdgeTop].TintAndShade := 0;
  olevEXCEL.Selection.Borders[xlEdgeTop].Weight := xlMedium; //xlThick;

  olevEXCEL.Selection.Borders[xlEdgeBottom].LineStyle := xlDashDot;// xlContinuous;
  olevEXCEL.Selection.Borders[xlEdgeBottom].Color := clred;//xlAutomatic;
  olevEXCEL.Selection.Borders[xlEdgeBottom].TintAndShade := 0;
  olevEXCEL.Selection.Borders[xlEdgeBottom].Weight := xlMedium; //xlThick;

  olevEXCEL.Selection.Borders[xlEdgeRight].LineStyle := xlDashDot;// xlContinuous;
  olevEXCEL.Selection.Borders[xlEdgeRight].Color := clred;//xlAutomatic;
  olevEXCEL.Selection.Borders[xlEdgeRight].TintAndShade := 0;
  olevEXCEL.Selection.Borders[xlEdgeRight].Weight := xlMedium; //xlThick;

  ShowMessage('Rahmen in Excel ansehen');

  OLEvExcel.ActiveWorkBook.Saved:= TRUE;
  OLEvExcel.Workbooks.Close;

  OLEvExcel.Quit;
  OLEvExcel:= Unassigned;
end;
Bis bald Chemiker

Cyberaxx 13. Nov 2011 19:39

AW: Delphi 2010 Professional & Excel 2007 TypeLibrary Probleme
 
Also ich weiß nun nicht was ich sagen soll, sicher werden einige nun lachen und ich nun erstmal in die Ecke.
Mein Originalbeispiel bezog sich nur auf die oberste Linie, diese ist nicht zu erkennen. Habe mal die Range geändert und siehe da sie wird sichtbar.

Somit gehe ich nun mal in die Ecke... schämen...

@Chemiker: Sry das Du Dich so bemüht hast. Aber durch Dein letztes Beispiel wurde es mir dann doch mal klar. Dies funktionierte direkt, auch wenn ich da wiederum in der Spalte 1 die obere Linie nicht sehe. Den Rest dagegen schon :)

Danke

Chemiker 13. Nov 2011 20:57

AW: Delphi 2010 Professional & Excel 2007 TypeLibrary Probleme
 
Hallo Cyberaxx,

gut das es jetzt funktioniert. Mir gingen langsam die Ideen aus.

Bis bald Chemiker

Cyberaxx 14. Nov 2011 07:10

AW: Delphi 2010 Professional & Excel 2007 TypeLibrary Probleme
 
Ich bin Froh das es nur ein Verständnisproblem meiner Seite war. :)

Habe da aber noch eine kleine Frage und zwar nur nach der Möglichkeit ein Arbeitsblatt auszulesen.
Also Abfragen wie, wie viele Blätter vorhanden sind. Wie viele Spalten und Zeilen vorhanden sind.
Möchte also nur erstmal gerne wissen ob dies möglich ist, denn darüber habe ich bisher nichts gelesen ausser das man eben den Inhalt einer bestimmten zelle abfragen könnte.

Gruß

Daniel

Jumpy 14. Nov 2011 09:24

AW: Delphi 2010 Professional & Excel 2007 TypeLibrary Probleme
 
Mal zu deinen Fragen die Antwort in VBA. Delphi Übersetzung überlass ich dir:

Sagen wir Excel ist die variable deiner Excel-Application, dann liefert:
Code:
Excel.Workbooks.Count
die Anzahl der offenen Workbooks (=Dateien).

Für ein Workbook (z.B. das Aktive) liefert:
Code:
Excel.ActiveWorkbook.Worksheets.Count
oder war es
Code:
Excel.ActiveWorkbook.Sheets.Count
die Anzahl der Arbeitsblätter.

Für ein Arbeitsblatt, z.B. das letzte, liefert:
Code:
Dim r as Range
Set r = Excel.ActiveWorkbook.Worksheets[Excel.ActiveWorkbook.Worksheets.Count].UsedRange
den gefüllten Bereich und
Code:
r.Columns.Count
r.Rows.Count
die Spalten und Zeilen dieses Bereichs.

Cyberaxx 17. Nov 2011 20:32

AW: Delphi 2010 Professional & Excel 2007 TypeLibrary Probleme
 
Ahh Danke

Das bringt mich doch schon ein wenig weiter :)

Danke für die Antwort.


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:42 Uhr.
Seite 2 von 3     12 3      

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