ExcelFunktionen COMatePlus

Hier könnt Ihr gute, von Euch geschriebene Codes posten. Sie müssen auf jeden Fall funktionieren und sollten möglichst effizient, elegant und beispielhaft oder einfach nur cool sein.
Hans Dieter Graap
Beiträge: 10
Registriert: 24.03.2016 09:11

Re: ExcelFunktionen COMatePlus

Beitrag von Hans Dieter Graap »

Auch einfach Save geht nicht.
Das einzige was funktioniert, in Excel gehen und zu Fuss speichern unter machen. Dann klappt es
Benutzeravatar
Kiffi
Beiträge: 10620
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: ExcelFunktionen COMatePlus

Beitrag von Kiffi »

Schreibrechte hast Du?

Code: Alles auswählen

If CreateFile(0, "[DeinDateiname].tmp")
  Debug "Ja, hat geklappt"
Else
  Debug "Nein, hat nicht geklappt"
EndIf
Beinhaltet Dein Dateiname exotische Zeichen?

Grüße ... Peter
Hygge
Hans Dieter Graap
Beiträge: 10
Registriert: 24.03.2016 09:11

Re: ExcelFunktionen COMatePlus

Beitrag von Hans Dieter Graap »

Der Dateiname besteht nur aus Ziffern.
Habe gerade unter XP mit dem gleichen Sourcecode und der gleichen PB Version ca 200 xls mit Excel2000 automatisch erzeugt.
Das klappt hervorragend.
Das mit den Schreibrechten muss ich morgen versuchen. Heute keine Zeit mehr.
Aber sind gute Tips vielleicht auch für andere Probleme.
Hans Dieter Graap
Beiträge: 10
Registriert: 24.03.2016 09:11

Re: ExcelFunktionen COMatePlus

Beitrag von Hans Dieter Graap »

Hallo,
der Test funktioniert. Ich habe es mit .tpm und .xlsx versucht. Dabei ist mir ein kleiner Fehler unterlaufen. Ich hatte das prg einmal nicht geschlossen und konnte nun die Datei erst löschen, nachdem ich das prg beendet hatte. Das heißt aber, das prg hatte geschrieben und hatte Zugriff auf die Datei.
Hans Dieter Graap
Beiträge: 10
Registriert: 24.03.2016 09:11

Re: ExcelFunktionen COMatePlus

Beitrag von Hans Dieter Graap »

Gearde habe ich Office 2010 unter XP installiert. Das Erzeugen der Dateien funktioniert. Also liegen die Schwierigkeiten eindeutig bei Win 7.
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: ExcelFunktionen COMatePlus

Beitrag von ts-soft »

Wenn es an Win7 liegen sollte, im Unterschied zu XP, dann sind das Berechtigungen. Speicher doch einfach mal unter temp.

Code: Alles auswählen

Debug GetEnvironmentVariable("temp")
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Hans Dieter Graap
Beiträge: 10
Registriert: 24.03.2016 09:11

Re: ExcelFunktionen COMatePlus

Beitrag von Hans Dieter Graap »

Vielen Dank für Eure Tips, es hat sich wahrscheinlich erledigt, die Office-Version scheint defekt zu sein.
blastar
Beiträge: 25
Registriert: 10.06.2011 17:23

Re: ExcelFunktionen COMatePlus

Beitrag von blastar »

Hallo,
ich hatte mit der Funktion 'XLSFunc_Image' das Problem das Images, welche auf einem Netzlaufwerk lagen, nur als Link eingebunden und erst beim oeffnen der Datei als Resource geladen wurden. Bei mir auf dem Rechner alles ok, auf einem fremden Rechner ohne Netzlaufwerk fehlten die Images. Nach einigem stoebern in VBA-Foren bin ich auf die Loesung gekommen - das ist so gewollt und seit Office2010 so. Einen Workaround gibt's natuerlich auch.

Code: Alles auswählen

Procedure XLSFunc_Image(ExcelObject.COMateObject,File.s,X.l,Y.l,Width.l,Height.l,Rot.l=0,Prop=#msoTrue,Trans.f=0)
  If FileSize(File)>=0
    ExcelObject\Invoke("ActiveSheet\Shapes\AddPicture('"+File+"',0,1,"+StrD(X)+","+StrD(Y)+","+StrD(Width)+","+StrD(Height)+")\Select")
  Else
    MessageRequester("Achtung","Grafik nicht gefunden")
  EndIf
EndProcedure
Rot.l=0,Prop=#msoTrue,Trans.f=0 werden zwar nicht gebraucht aber ich habe es mal der Kompatibilitaet wegen dringelassen.
blastar
Beiträge: 25
Registriert: 10.06.2011 17:23

Re: ExcelFunktionen COMatePlus

Beitrag von blastar »

Nächstes (geloestes) Problemchen, das schreiben einer groesseren Menge Daten in eine ExcelTabelle war extrem langsam - folgende Funktion 'XLSFunc_SrceenUpdating' beschleunigt das Ganze um den Factor 5 (auf meinem Rechner).

Code: Alles auswählen

Procedure XLSFunc_SrceenUpdating(ExcelObject.COMateObject,Wert.l) 
  ; Turn screen updating off (#False) To speed up your code. You won't be able to see what the code is doing, but it will run faster.
  ; Remember To set the ScreenUpdating property back To #True when your code ends.
  If Wert=#True
    ExcelObject\SetProperty("Application\ScreenUpdating=#True")
  ElseIf Wert=#False
    ExcelObject\SetProperty("Application\ScreenUpdating=#False")
  EndIf
EndProcedure
Benutzeravatar
jacdelad
Beiträge: 340
Registriert: 03.02.2021 13:39
Computerausstattung: Ryzen 5800X, 108TB Festplatte, 32GB RAM, Radeon 7770OC
Wohnort: Riesa
Kontaktdaten:

Re: ExcelFunktionen COMatePlus

Beitrag von jacdelad »

Die Downloads im ersten Post führen leider ins Leere, ich will aus einer xls-Tabelle die Zellen auslesen, bin ich hier an der richtigen Adresse? Oder gibt's da noch was anderes?
PureBasic 6.04/XProfan X4a/Embarcadero RAD Studio 11/Perl 5.2/Python 3.10
Windows 11/Ryzen 5800X/32GB RAM/Radeon 7770 OC/3TB SSD/11TB HDD
Synology DS1821+/36GB RAM/130TB
Synology DS920+/20GB RAM/54TB
Synology DS916+ii/8GB RAM/12TB
Antworten