MBS Xojo XL Plugin: Excel Datei geht kaputt, wenn man mehr als 200 Bildern speichert?

Ich habe das Problem, dass meine Excel-Datei kaputt geht, wenn ich mehr als 200 Bildern einspeichern möchte.

Folgende Ausgangssituation:
Xojo 2016.4
Excel 2016
MBS Xojo Complete [in den Plugin Ordner nur Barcode, XL, Main kopiert.]
macOS Sierra 10.12.1

Im Open-Event der App habe ich den Code vom MBS Plugin korrekt eingebaut.
Auch das SetKey der XLLib ist sauber eingebaut [merke ich daran, dass oben die 1-Zeile nicht mehr mit der Demo-Meldung überschrieben wird.]

Ich habe eine Excelliste “PD Kopie.xls” in der in Spalte 1 die Artikelnummer ist und in Spalte 3 die Farbnummer hinterlegt ist.
Diese baue ich mir zusammen, und hole mir dann aus einem Ordner meine dazugehörigen Bilder - und baue es entsprechend links neben die Artikelnummer in Spalte 0. Die Bilder sind 4 KB gross und als .png gespeichert. Also sehr klein, so dass Excel keine Probleme haben dürfte.

Mit folgendem Code, klappt dies, wenn ich es auf 50 Artikel begrenze. Gehe ich langsam hoch auf 150 fangen Probleme an, ab 200 geht es nicht mehr.

Probleme heisst: Wenn mein Code fertig ist, geht die Excel-Datei kaputt.

Meldung: “Dateifehler: Daten sind möglicherweise verloren gegangen.”

Verschiebe ich den Start z.B. auf Zeile 150 bis 200, oder 200 bis 250 geht das auch problemlos.

Gibt es hier evtl. ein Problem mit Xojo 2016.4? Tappe da jetzt etwas im Dunkeln, wo ich ansetzen könnte.

Habe testweise auch ein App.SleepCurrentThread(100) eingebaut, falls der Rechner zu schnell ist, um ihn auszubremsen, das löste es aber auch nicht. :frowning:

Oder habe ich einen Flüchtigkeitsfehler gebaut, z.B. weil ich mein MZInt mehrfach verwende?

		// create new xls file
		dim book as new XLBookMBS(false)
		book.SetKey("hier steht mein name", "hier meine seriennummer") 
		
		// load existing
		dim file as FolderItem = SpecialFolder.Desktop.Child("PD Kopie.xls")
		if file.Exists = false then
				MsgBox "Die Datei PD Kopie.xls ist nicht vorhanden!"
				quit
		end if
		
		if not book.Load(file) then
				MsgBox "Fehler beim Lesen der Excel-Datei: "+book.ErrorMessage
				quit
		end if
		
		
		
		// do some changes
		dim sheet as XLSheetMBS = book.Sheet(0)
		if sheet<>Nil then
				
				// Spalte 1 korrekte Grösse verpassen
				call sheet.SetCol(0,0,25)
				
				
				// Den ersten 250 Zeilen die perfekte Grösse verpassen und das Bild einbauen
				dim zeile As integer
				dim MZString_Artikelnummer as String
				Dim f as FolderItem
				dim MZInt as Integer 
				for zeile = 1 to 250
						call sheet.SetRow(zeile,131.25)
						
						MZString_Artikelnummer = "Artikel_" + sheet.ReadString(zeile,1)  + "_" + sheet.ReadString(zeile,3).left(3) + "_1_mittel.png"
						
						// System.debuglog (MZString_Artikelnummer)
						
						f = Volume(0).Child("Users").Child("marcelzimmer").Child("Desktop").Child("bilder").Child(MZString_Artikelnummer)
						MZInt = book.addPicture(f)
						call sheet.SetPicture(zeile,0,MZInt,1.0)
						
						System.debuglog ("Zeile: " + str(zeile) +  " - " + MZString_Artikelnummer)
						
						// App.SleepCurrentThread(100)
						
				next
				
		end if
		
		// write file
		
		if book.Save(file) then
				// file.Launch
				MsgBox ("Fertig!")
		else
				MsgBox "Fehler beim Erstellen der Excel-Datei."+EndOfLine+EndOfLine+book.ErrorMessage
		end if
		
		// quit
		

Wre es mglich eine Datei mit x (geht) und eine mit x+1 (kaputt) zu vergleichen?
Das geht natrlich nur mit xlsx Format, weil man da in das xml schauen kann.

Eventuell hat Excel auch ein Limit bei den Bildern.

Ich hab übrigens gesehen, dass ein LibXL Update gekommen ist.
Die Tage aktualisiere ich mal das Plugin, sobald ich die Libraries habe.

Kann denn LibXL bzw. das MBS Plugin “XLSX”-Dateien erzeugen bzw. öffnen?
Ich bekam da Fehlermeldungen, so dass ich auf XLS zurückgegangen bin - was aber für mich OK ist.

EDIT: Hab noch eine interessante Entdeckung gemacht: Öffne ich die erzeugte XLS-Datei mit dem aktuellen Numbers sieht alles korrekt aus.

xlsx geht schon.
Dafür muss man beim “new XLBookMBS(false)” true statt false übergeben.

Gute Nachrichten: Nutze ich new XLBookMBS(true) und .xlsx gehen die Excel-Dateien nicht kaputt.
Das war ein sehr guter Tipp! Danke schön!

DICKES FETTES LOB! Die MBS Xojo Complete Plugins sind richtig gut!

Danke.

Hallo zusammen,

ich hnge mich hier mal gerade an die Diskussion dran. Momentan arbeite ich noch direkt mit dem OfficePlugin also VBA. Ist bei Christians Plugins eigentlich schon die Lizenz von LIBXL in einer Version fr seine Plugins integriert oder muss ich das bei LIBXL zustzlich pro Plattform kaufen und Christians Plugins nutzen es dann?

Danke und Gru

Bjrn

Man kauft beides.
Aber erstmal probieren und dann gibt’s bei mir auf der Bestellseite auch die LibXL Links.

Man kauft zunchst das “Complete” Plugin von MBS und kann es damit testen. Oben ist dann in der ersten Zeile in Excel ein Banner der darauf hinweist, dass man noch keine Vollversion der LIBXL hat. Damit kann man aber schon mal testen, ob dass was man machen mchte, funktionieren wrde.

Wenn es funktioniert, kauft man sich dann noch die LIBXL Version dazu. Pro Plattform muss man die LIBXL kaufen, oder alternativ die grosse Enterprise die alles kann. Ich habe nur die Version fr Mac gekauft.

Nach dem Kauf war es dann ganz einfach: Ich musste nur noch den meinen Namen und den Key den ich von LIBXL bekommen habe, in meine Xojo App eintragen. Fertig.
Das hat MBS wirklich super einfach gelst. [Man muss also nicht selbst diese LIBXL noch irgendwie da einbauen.]