[bcb+excel 2k] opslaan excel sheet

Pagina: 1
Acties:

  • Paulstartrek
  • Registratie: September 2002
  • Laatst online: 08-11-2005
Ik heb een programma geschreven dat een txt-file inleest in excel, de gebruiker wat laat wijzigen en dan vervolgens de file weer opslaat als excel document
Ik heb al gezocht in de help van excel (VB) alleen de oplossingen die daar gegeven worden werken niet zoals deze regel
code:
1
 Excel_2k->SaveAsFilename(lijstxls);

Deze genereert de foutmelding [C++ Error] Excel2k.cpp(130): E2316 'SaveAsFilename' is not a member of 'TExcelApplication'
Wie weet het juiste commando om vanuit borland een excelsheet op te slaan, dus zonder dat aan de gebruiker het formaat, naam of lokatie wordt gevraagd.
In deze functie zou die aanroep moeten komen
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
void __fastcall TFormExcel2k::ButCloseClick(TObject *Sender)
{
 if (excel2k)
 {
// char s[257];
// TVariant lijstxls;
// strcpy(s,"c:\\mijn documenten\\paul\\Lijst.xls");
// lijstxls=s;

 Excel_2k->Workbooks->Close();
 Excel_2k->Disconnect();
 excel2k=false;
 }
}

  • whoami
  • Registratie: December 2000
  • Laatst online: 23:04
Van welk type is Excel_2k?
Staat er niets van in de C++ Builder help? Dit lijkt me gewoon een RTFM vraag.

https://fgheysels.github.io/


  • Paulstartrek
  • Registratie: September 2002
  • Laatst online: 08-11-2005
excel2k is van het type excel application en daar staat juist niets van in de borland help, vandaar dat ik ook al in de vb help file van excel bezig ben geweest

  • whoami
  • Registratie: December 2000
  • Laatst online: 23:04
En vind je niets terug in mbhv Code Completion of Code Insight ?

http://www.undu.com/Articles/010316c.html

Er zal ook wel een property SaveChanges oid bestaan die je kunt setten naargelang je de wijzigingen wilt opslaan bij het afsluiten of niet.

https://fgheysels.github.io/


  • Paulstartrek
  • Registratie: September 2002
  • Laatst online: 08-11-2005
whoami schreef op 12 september 2002 @ 13:32:
Er zal ook wel een property SaveChanges oid bestaan die je kunt setten naargelang je de wijzigingen wilt opslaan bij het afsluiten of niet.
Dit bestaat wel maar is juist niet wat ik wil, want ik wil het in een ander document document opslaan. ipv een textfile een excel file. Dus ik moet iets hebben van Save As.
De applicatie kan wel een commando GetSaveAsFilename, maar dit roept de box save as op richting de gebruiker. Terwijl ik dat niet wil.

Het door jouw aangeduide document (delphi code, maar dat terzijde) bevatte alleen regels om data in excel te zetten en verder laten ze het over aan de gebruiker, om te saven bv.
Of om data uit een al bestaand document te halen.

  • whoami
  • Registratie: December 2000
  • Laatst online: 23:04
Paulstartrek schreef op 12 september 2002 @ 14:18:
[...]


Dit bestaat wel maar is juist niet wat ik wil, want ik wil het in een ander document document opslaan. ipv een textfile een excel file. Dus ik moet iets hebben van Save As.
De applicatie kan wel een commando GetSaveAsFilename, maar dit roept de box save as op richting de gebruiker. Terwijl ik dat niet wil.

Het door jouw aangeduide document (delphi code, maar dat terzijde) bevatte alleen regels om data in excel te zetten en verder laten ze het over aan de gebruiker, om te saven bv.
Of om data uit een al bestaand document te halen.



Delphi en C++ Builder = zelfde VCL, dus dat mag geen probleem zijn.

Kun je geen TExcelApplication openen en daar een naam aangeven van een excel bestand dat nog niet bestaat, en dan met die property gaan werken?

https://fgheysels.github.io/


  • Vaudtje
  • Registratie: April 2002
  • Niet online
Ik zou MSDN proberen? Daar staat in ieder geval genoeg over Excel als ActiveX object...bedoel je dat?
http://msdn.microsoft.com...f2000/html/xlmthclose.asp
edit:
Na lang wachten gaf de proxy iets en kon ik een linkje plaatsen...

In deeze zin staan drie fauten


  • Paulstartrek
  • Registratie: September 2002
  • Laatst online: 08-11-2005
Ik vond de volgende functiecall in de excelsupportfile
code:
1
2
3
4
  void __fastcall Close(TVariantInParam SaveChanges/*[in,opt]*/= TNoParam(), 
                        TVariantInParam Filename/*[in,opt]*/= TNoParam(), 
                        TVariantInParam RouteWorkbook/*[in,opt]*/= TNoParam(), 
                        long lcid/*[in]*/= TDefLCID())

alleen indien ik dan de functie zou gaan gebruiken
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 if (excel2k)
 {
 char s[257];
 Excel_2k::WorkbooksPtr books;
_WorkbookPtr wb; //ExcelWorkbookPtr wb;
 TVariant lijstxls;
 strcpy(s,"c:\\mijn documenten\\paul\\Lijst.xls");
 lijstxls=s;
// Excel_2k->SaveAsFilename(lijstxls);
 books=Excel_2k->Get_Workbooks(); //okXls
 wb=books->Close(true,lijstxls,TNoParam());
 Excel_2k->Disconnect();
 excel2k=false;
 }
}

dan geeft hij de volgende foutmelding
[C++ Error] Excel2k.cpp(136): E2227 Extra parameter in call to __stdcall Workbooks::Close(long)
waarom hij dat doet snap ik niet, hij heeft toch de optie om extra argumenten mee te kunnen nemen?

  • whoami
  • Registratie: December 2000
  • Laatst online: 23:04
Wat zegt de help over die Workbooks::Close functie? Welke argumenten moet die hebben?

https://fgheysels.github.io/


  • Paulstartrek
  • Registratie: September 2002
  • Laatst online: 08-11-2005
Dit is afkomstig uit de visual basic hulpfile van excel

Close, methode


Sluit het object. Bij deze methode gebruikt u Syntaxis 1 voor een Workbooks-collectie en Syntaxis 2 voor Window- en Workbook-objecten.

Syntaxis 1

expressie.Close

Syntaxis 2

expressie.Close(SaveChanges, FileName, RouteWorkbook)

expressie Vereist. Een expressie die een object uit de lijst Van toepassing op als resultaat geeft.

SaveChanges Variant, optioneel. Als de werkmap geen wijzigingen heeft ondergaan, wordt dit argument genegeerd. Als de werkmap is gewijzigd en de werkmap in andere geopende vensters wordt weergegeven, wordt dit argument genegeerd. Als de werkmap is gewijzigd, maar niet wordt weergegeven in andere geopende vensters, geeft dit argument aan of de wijzigingen moeten worden opgeslagen, zoals weergegeven in de volgende tabel.

Waarde Actie
True Slaat de wijzigingen in de werkmap op. Als de werkmap nog geen naam heeft, wordt het argument FileName gebruikt. Als u het argument FileName niet opgeeft, wordt de gebruiker gevraagd een naam voor de werkmap op te geven.
False Er worden geen wijzigingen opgeslagen in dit bestand.
Afwezig Er wordt een dialoogvenster weergegeven waarin de gebruiker wordt gevraagd of de wijzigingen moeten worden opgeslagen.


FileName Variant, optioneel. De wijzigingen worden opgeslagen onder deze bestandsnaam.

RouteWorkbook Variant, optioneel. Als de werkmap niet hoeft te worden doorgestuurd naar de volgende geadresseerde (als de map geen circulatielijst heeft of al is rondgestuurd), wordt dit argument genegeerd. In andere gevallen wordt de werkmap rondgestuurd op, zoals wordt weergegeven in de volgende tabel.

Waarde Betekenis
True De werkmap wordt naar de volgende geadresseerde verstuurd.
False De werkmap wordt niet verstuurd.
Afwezig Er wordt een dialoogvenster weergegeven waarin de gebruiker wordt gevraagd of de werkmap moet worden rondgestuurd.


Aanvullende informatie

Als een werkmap wordt gesloten vanuit Visual Basic, worden geen Auto_sluiten-macro's in de werkmap uitgevoerd. Gebruik de methode RunAutoMacros als u deze macro's wilt uitvoeren.

Volgens mijn doe ik het zo precies, wat doe ik fout? :?
Deze helpfunctie is hetzelfde als waar vaudje al naar toe linkte

[ Voor 0% gewijzigd door Paulstartrek op 12-09-2002 15:51 . Reden: extra info van vaudje ]

Pagina: 1