COMatePlus speichert nicht

Für allgemeine Fragen zur Programmierung mit PureBasic.
Benutzeravatar
Joel
Beiträge: 851
Registriert: 21.04.2006 19:22

COMatePlus speichert nicht

Beitrag von Joel »

Hey,

ich hatte eigentlich vor meine Excel Liste zu speichern ohne das der User eingreifen muss. Also wenn er das Fenster schließt weiß Excel schon, wo es sich hinspeichern muss. Leider speichert Excel nicht die Datei, hier der Code:

Code: Alles auswählen

Excel_Temp$ = "C.\users\joel\desktop\testexcel.xls"
XIncludeFile "COMatePLUS.pbi"
date$ = FormatDate("%dd/%mm/%yyyy", Date())
Define.COMateObject ExcelObject, WorkBook
ExcelObject = COMate_CreateObject("Excel.Application")

If ExcelObject
  If ExcelObject\SetProperty("Visible = #True") = #S_OK
    WorkBook = ExcelObject\GetObjectProperty("Workbooks\Add")
    If WorkBook
      
      ExcelObject\SetProperty("Cells(1,1) = 'Datum:'")
      ExcelObject\SetProperty("Cells(1,2) = '" + date$ + "' AS DATE")
      
      ExcelObject\SetProperty("Application\DisplayAlerts = #False") 
      Workbook\Invoke("SaveAs('Excel_Temp$')")
      ExcelObject\SetProperty("Application\DisplayAlerts = #True")
      WorkBook\Release()
    EndIf
  EndIf
  ExcelObject\Release()
Else
  MessageRequester("Excel Datei erstellen", "Couldn't create the application object!")
EndIf
Mit dieser Zeile setzte ich ja den Speicherort fest:

Code: Alles auswählen

Workbook\Invoke("SaveAs('Excel_Temp$')")
Leider wird trotzdem nichts gespeichert.
----------------------------------------------------------

PB 5.20 Beta 10 | Windows 7
Benutzeravatar
Kiffi
Beiträge: 10725
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: COMatePlus speichert nicht

Beitrag von Kiffi »

also so langsam müsstest Du das mit der Stringverknüpfung
mal verstanden haben...

Code: Alles auswählen

Workbook\Invoke("SaveAs('" + Excel_Temp$ + "')")
a²+b²=mc²
Benutzeravatar
Waldixxl
Beiträge: 108
Registriert: 27.12.2005 17:35
Wohnort: Linz, Österreich

Re: COMatePlus speichert nicht

Beitrag von Waldixxl »

Hallo Joel
und das

Code: Alles auswählen

Excel_Temp$ = "C.\users\joel\desktop\testexcel.xls"
sollte vermutlich

Code: Alles auswählen

Excel_Temp$ = "C:\users\joel\desktop\testexcel.xls"
heißen

Walter
Lesen bei schlechten Lichtverhältnissen ist nicht schlecht für die Augen, sondern trainiert sie sogar.

Linux Ubuntu Mate 18.04
PB 5.71
Intel i5
Benutzeravatar
Joel
Beiträge: 851
Registriert: 21.04.2006 19:22

Re: COMatePlus speichert nicht

Beitrag von Joel »

Das funktioniert schon ganz gut. Bei meinen Test ist mir aufgefallen: Excel fragt zwar nicht nach speichern oder nicht wenn man nichts ändert, aber wenn ich was änder in der Excel Liste und dann das Fenster schließe fragt er ich ob ich speichern will. Ich möchte das Excel ohne Nachfrage das abspeichert.

Hier nochmal der Code, was passiert und was eigentlich passieren soll:

Code: Alles auswählen

Excel_Temp$ = "C:\users\joel\desktop\excelsavetest.xls"
XIncludeFile "COMatePLUS.pbi"
IncludeFile "ExcelConstants.pbi"
date$ = FormatDate("%dd/%mm/%yyyy", Date())
Define.COMateObject ExcelObject, WorkBook
ExcelObject = COMate_CreateObject("Excel.Application")

If ExcelObject
  If ExcelObject\SetProperty("Visible = #True") = #S_OK
    WorkBook = ExcelObject\GetObjectProperty("Workbooks\Add")
    If WorkBook
      
      ExcelObject\SetProperty("Cells(1,1) = 'Datum:'")
      ExcelObject\SetProperty("Cells(1,2) = '" + date$ + "' AS DATE")
      ExcelObject\SetProperty("Cells(3,1) = 'test:'")
      
      
      ExcelObject\SetProperty("Application\DisplayAlerts = #False")
      FFormat=#xlNormal
      Workbook\Invoke("SaveAs('" + Excel_Temp$ + "'," + Str(FFormat) + ")")
      ExcelObject\SetProperty("Application\DisplayAlerts = #True")
      WorkBook\Release()
    EndIf
  EndIf
  ExcelObject\Release()
Else
  MessageRequester("Excel Datei erstellen", "Couldn't create the application object!")
EndIf
--Was passiert---
1. Code ausführen
2. Was in Liste ändern
3. x klicken
4. Jetzt kommt eine Nachfrage, die eigentlich nicht kommen sollte. Excel weiß schon wo es hin speichern soll. Wenn ich speichern klicke, klappt auch alles. Aber ich möchte das gespeichert wird ohne Nachfrage!
----------------------------------------------------------

PB 5.20 Beta 10 | Windows 7
Benutzeravatar
Kiffi
Beiträge: 10725
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: COMatePlus speichert nicht

Beitrag von Kiffi »

wieso stellst Du denn DisplayAlerts wieder auf True?
a²+b²=mc²
Benutzeravatar
Joel
Beiträge: 851
Registriert: 21.04.2006 19:22

Re: COMatePlus speichert nicht

Beitrag von Joel »

Jawoll! es funktioniert THX:D
----------------------------------------------------------

PB 5.20 Beta 10 | Windows 7
Benutzeravatar
Joel
Beiträge: 851
Registriert: 21.04.2006 19:22

Re: COMatePlus speichert nicht

Beitrag von Joel »

Ich musste leider noch etwas ändern an meinem Programm. Es erzeugt jetzt nicht jeden mal eine neue Datei, sondern öffnet jeden mal die alte Datei und ergänzt sie.

Wenn ich Text mit SetProperty hinzufüge, wird dieser auch gespeichert. Wenn ich aber in der bereits geöffneten Datei was ändere und diese dann schließe werden die Änderungen nicht mehr gespeichert.

Code: Alles auswählen

XIncludeFile "COMatePLUS.pbi"
IncludeFile "ExcelConstants.pbi"
XIncludeFile "ExcelFunktion.pbi"
date$ = FormatDate("%dd/%mm/%yyyy", Date())
Define.COMateObject ExcelObject, WorkBook
ExcelObject = XLSFunc_OpenExcelFile(Dropbox_Pfad$)

If ExcelObject
  If ExcelObject\SetProperty("Visible = #True") = #S_OK
    WorkBook = ExcelObject\GetObjectProperty("ActiveWorkbook")
    If WorkBook
      letzte_Reihe = XLSFunc_GetLastRow(ExcelObject)+3
      ExcelObject\SetProperty("Cells("+Str(letzte_Reihe)+",1) = 'Datum:'")
      ExcelObject\SetProperty("Cells("+Str(letzte_Reihe)+",2) = '" + date$ + "' As DATE")
      ExcelObject\SetProperty("Cells("+Str(letzte_Reihe+2)+",1) = 'Lieder:'")
      
      ExcelObject\SetProperty("Application\DisplayAlerts = #False")
      FFormat=#xlNormal
      ;Workbook\Invoke("SaveAs('" + Dropbox_Pfad$ + "'," + Str(FFormat) + ")")
      Workbook\Invoke("Save")
      ExcelObject\SetProperty("Application\DisplayAlerts = #False")
      WorkBook\Release()
    EndIf
  EndIf
  ExcelObject\Release()
Else
  MessageRequester("Excel Datei erstellen", "Couldn't create the application object!")
EndIf
----------------------------------------------------------

PB 5.20 Beta 10 | Windows 7
Benutzeravatar
Joel
Beiträge: 851
Registriert: 21.04.2006 19:22

Re: COMatePlus speichert nicht

Beitrag von Joel »

Niemand eine Idee?
----------------------------------------------------------

PB 5.20 Beta 10 | Windows 7
Benutzeravatar
Pure_Beginner
Beiträge: 247
Registriert: 29.09.2011 21:49
Computerausstattung: i7 9XX 4000 MHZ / 12 GB RAM / Win 8.1 64Bit / Win 7 64Bit
Wohnort: Brühl

Re: COMatePlus speichert nicht

Beitrag von Pure_Beginner »

Hallo Joel,

bin selber noch Anfänger und viel kann ich zur Materie nicht sagen,

aber wenn du eine neue Excel Datei erzeugen möchtest, solltest du

Code: Alles auswählen

 XLSFunc_CreateExcelFile() 
anstelle von

Code: Alles auswählen

 XLSFunc_OpenExcelFile() 
benutzen.

Grüße
Christian
PureBasic 5.30 Beta 3 (X64/X86) | Win 8 (64) Pro / Win 7 (64) Pro | Es ist der Hobbyist[/col
Benutzeravatar
Joel
Beiträge: 851
Registriert: 21.04.2006 19:22

Re: COMatePlus speichert nicht

Beitrag von Joel »

Joel hat geschrieben:Es erzeugt jetzt nicht jeden mal eine neue Datei, sondern öffnet jeden mal die alte Datei und ergänzt sie.
ich öffne eine vorhandene Datei und ergänze Sie!
----------------------------------------------------------

PB 5.20 Beta 10 | Windows 7
Antworten