Seite 17 von 18

Re: ExcelFunktionen COMatePlus

Verfasst: 10.08.2016 11:37
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

Re: ExcelFunktionen COMatePlus

Verfasst: 10.08.2016 11:48
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

Re: ExcelFunktionen COMatePlus

Verfasst: 10.08.2016 12:50
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.

Re: ExcelFunktionen COMatePlus

Verfasst: 11.08.2016 07:53
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.

Re: ExcelFunktionen COMatePlus

Verfasst: 11.08.2016 10:17
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.

Re: ExcelFunktionen COMatePlus

Verfasst: 11.08.2016 11:01
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")

Re: ExcelFunktionen COMatePlus

Verfasst: 23.09.2016 10:00
von Hans Dieter Graap
Vielen Dank für Eure Tips, es hat sich wahrscheinlich erledigt, die Office-Version scheint defekt zu sein.

Re: ExcelFunktionen COMatePlus

Verfasst: 13.05.2017 17:47
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.

Re: ExcelFunktionen COMatePlus

Verfasst: 15.05.2017 02:31
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

Re: ExcelFunktionen COMatePlus

Verfasst: 09.05.2022 21:27
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?