Syntax Fehler nach betätigen der Schaltfläche

Antwort erstellen


BBCode ist eingeschaltet
[img] ist ausgeschaltet
[url] ist eingeschaltet
Smileys sind ausgeschaltet

Die letzten Beiträge des Themas
   

Ansicht erweitern Die letzten Beiträge des Themas: Syntax Fehler nach betätigen der Schaltfläche

Re: Syntax Fehler nach betätigen der Schaltfläche

von MagnaUser » Fr, 11.02.2022 18:46

Hallo Tom,

Super vielen Dank funktioniert bestens.

Ein kleine Verbesserung.
Ich habe noch eine Überprüfung mit reingebracht ob das Netzlaufwerk (in meinem Fall ist es Z) vorhanden ist.

Code: Alles auswählen

  vntPathAndFile = "Z:\_Stoerauswertung_G26\" & Format(Now, "yyyy.mm.dd") & "_" & oSheet.getCellRangeByName("T6").String & "_" & "G26_TH" & ".ods"

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++    
   fullPath = "Z:\_Stoerauswertung_G26\ReadyToSave.txt"
    
    if FILEEXISTS (fullPath) = false then 
		msgbox "Das Netzlaufwerk ist nicht erreichbar," + Chr(13) + "bitte im Windows Explorer prüfen," + Chr(13) + "ob das Z-Laufwerk vorhanden ist"
		exit sub
	endif    
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++    
    
    ' Neue Calc-Datei erzeugen
    ' Dim arg(0) as new com.sun.star.beans.PropertyValue
    arg(0).Name = "Hidden"
    arg(0).Value = False ' nach Tests auf true setzen:))
    oZielDoc = StarDesktop.loadComponentFromURL("private:factory/scalc", "_blank", 0, arg())

Vielen Dank

Grüße MagnaUser

Re: Syntax Fehler nach betätigen der Schaltfläche

von Toxitom » Fr, 11.02.2022 17:05

Hey MagnaUser
MagnaUser hat geschrieben: Fr, 11.02.2022 16:52 Ich denke die Tabelle 1 nach dem importieren zu löschen aber wie?
Wäre wohl die einfachste Möglichkeit.

Füge die folgende Zeile ein vor dem Speichern des Zieldokuments, aber nach dem Einfügen der Seite:

Code: Alles auswählen

if oZielDoc.Sheets.hasByName("Tabelle1") then  oZielDoc.Sheets.removeByName("Tabelle1")
Musste evt. mit den aktuellen Bezeichnungen anpassen.

VG Tom

Re: Syntax Fehler nach betätigen der Schaltfläche

von MagnaUser » Fr, 11.02.2022 16:52

Hallo an alle,

Hier eine fast komplette Datei. Außer die Personendaten. Dafür habe ich Dummys eingetragen.
Kopie2.ods
(31.33 KiB) 122-mal heruntergeladen
So funktioniert sie wie ich es haben wollte. Es gibt einen Schönheitsfehler. Wenn man die gespeicherte Datei öffnet
denkt man im ersten Moment sie ist leer. Ist sie nicht, der Fokus liegt nur auf der Tabelle 1 und nicht auf das
importierte Blatt. Was muss ich am Makro verändern damit das importierte Blatt das aktive Blatt ist?
Ich denke die Tabelle 1 nach dem importieren zu löschen aber wie?

So vielen Dank noch mal für Eure tolle Hilfe. Allein hätte ich es nicht geschafft.

Grüße MagnaUser

Re: Syntax Fehler nach betätigen der Schaltfläche

von MagnaUser » Do, 10.02.2022 18:45

Servus,

Vielen Dank für Eure Antworten.
Würde es bedientechnisch nicht einfacher sein, dass die Eingabe eines 2. optional wäre? Anders gefragt: Wenn es einen 2. Einleger gibt, gibt es dann auch einen 2. Nacharbeiter? Würde das Markierfeld von dir gewählt werden und die Datei dann so an die Mannschaft gegeben? In letzterem Fall, solltest du bedenken bestimmte Bereiche zu schützen.
Richtig es soll optional sein. Wenn die Markierfelder angeklickt werden müssen die beiden rechten Zellen ausgefüllt werden.
Wenn 2 Einleger da sind kann auch nur 1 Nacharbeiter da sein oder auch umgedreht. Das entscheidet der Produktionsleiter.
Der Anlagenfahrer füllt dieses Tabellenblatt bis zum Feierabend aus. Der Rest der Mannschaft hat damit nichts zu tun.

@ Tom

Mit deinem Code ist der Button weg. Ich hatte nach deiner Anleitung einen Namen vergeben.

Vielen Dank noch mal für Eure toll Unterstützung.

Grüße MagnaUser

Re: Syntax Fehler nach betätigen der Schaltfläche

von Toxitom » Do, 10.02.2022 13:38

Hey MagnaUser,
mikeleb hat geschrieben: Do, 10.02.2022 12:53 Zur Sicherheit (um alle Schaltflächen und andere Formularelemente zu entfernen), kannst du die zwei Zeilen durch folgende ersetzen:
Ganz so einfach ist das leider nicht :( Die Drawpage ist ein Sammelbecken aller grafischen Elemente, also z.B. Bilder, Zeichnungen (Elemente der Zeichenfunktionen), Grafiken, aber eben auch aller Steuerelemente von Formularen etc.

Es ist also nicht immer so einfach, das passende Element zu identifizieren.
1. Schritt: gib dem Element einen eindeutigen Namen - im Falle des Buttons über Extras - Formulare - Entwufsmodus. Dann Button anklicken, Kontextmenü -> Eigenschaften. Dort "Name"- ich nenne es mal beispielhaft "test".
Dann den Entwurfsmodus wieder ausschalten, Dokument speichern.

Nun kannst Du über alle Drawpage-objekte iterieren, prüfen ob es sich um ein ControlShape-Objekt handelt (also ein Formularelement) und dann dort den Namen prüfen. Und nur bei passenden Namen löschen;)

Code: Alles auswählen

  'Button entfernen
  for i=oZielDoc.Sheets(0).drawpage.count-1 to 0 Step -1
     oshape=oZielDoc.Sheets(0).drawpage.getbyindex(i)
     if oShape.supportsService("com.sun.star.drawing.ControlShape") then
          if oShape.control.name = "test" then
               oZielDoc.Sheets(0).drawpage.remove(oshape)
               exit for
           end if
     end if
  next
Zu der zweiten Frage:
Du willst die Kontrollboxen verschieben? - Formular auf Entwurfsmodus setzen und mit der Maus oder den Tasten verschieben.
Oder was meintest Du?

Viele Grüße
Tom

Re: Syntax Fehler nach betätigen der Schaltfläche

von mikeleb » Do, 10.02.2022 12:53

Hallo,
Er ist aber in der gespeicherten Version noch vorhanden.
Bei mir wird er gelöscht (in der exportierten Datei). Ich bin allerdings davon ausgegangen, dass nur ein Button existiert.
Zur Sicherheit (um alle Schaltflächen und andere Formularelemente zu entfernen), kannst du die zwei Zeilen durch folgende ersetzen:

Code: Alles auswählen

		'Button entfernen
		for i=oZielDoc.Sheets(0).drawpage.count-1 to 0 Step -1
			oshape=oZielDoc.Sheets(0).drawpage.getbyindex(i)
			oZielDoc.Sheets(0).drawpage.remove(oshape)
		next
Es kann sein das wir mal nur mit halber Mannschaft die Anlage betreuen.
Würde es bedientechnisch nicht einfacher sein, dass die Eingabe eines 2. optional wäre? Anders gefragt: Wenn es einen 2. Einleger gibt, gibt es dann auch einen 2. Nacharbeiter? Würde das Markierfeld von dir gewählt werden und die Datei dann so an die Mannschaft gegeben? In letzterem Fall, solltest du bedenken bestimmte Bereiche zu schützen.

Re: Syntax Fehler nach betätigen der Schaltfläche

von MagnaUser » Do, 10.02.2022 07:57

Servus an alle Helfer,

Vielen Dank für Eure tolle Hilfe.

@mikeleb
Es funktioniert fast.
Ich habe gesehen, dass Du das mit dem Button löschen mit eingebaut hast.
Er ist aber in der gespeicherten Version noch vorhanden.

Code: Alles auswählen

'Button entfernen
		oshape=oZielDoc.Sheets(0).drawpage.getbyindex(0)
		oZielDoc.Sheets(0).drawpage.remove(oshape)
Kann es sein, dass vielleicht der Name von dem Button fehlt?
Oder würden mit dem Code alle Button entfernt? Wenn ja, dann brauch man ja keinen Namen.

Was ich richtig gut finde, ist das Array für die Abfragen. Könntest Du mir einen Gefallen tun und für den Einleger
und für den Nacharbeiter jeweils ein Markierfeld mit einbauen, damit wenn ich das Markierfeld anklicke
die rechte Zelle vom Einleger oder Nacharbeiter ausgefüllt werden muss.

Es kann sein das wir mal nur mit halber Mannschaft die Anlage betreuen.

Anmerkung 2022-02-10 074043.jpg
Anmerkung 2022-02-10 074043.jpg (44.06 KiB) 2616 mal betrachtet

Ich denke, das war's vielen vielen Dank. Super Arbeit von Euch.

Grüße MagnaUser

Re: Syntax Fehler nach betätigen der Schaltfläche

von mikeleb » Mi, 09.02.2022 13:55

Hallo,
mit der Methode .importSheet() sollte es noch einfacher gehen:

Code: Alles auswählen

Sub Datei_speichern()

	'zu prüfenden Zellen und Fehlermeldung erfassen

	aFehler=Array(Array("T5","Keine Datum ausgewählt!"),_
			Array("T6", "Keine Schicht ausgewählt!"), _
			Array("T8", "Kein Einleger 1 ausgewählt!"), _
			Array("V8", "Kein Einleger 2 ausgewählt!"), _
			Array("T9", "Kein Nacharbeiter 1 ausgewählt!"), _
			Array("V9", "Kein Nacharbeiter 2 ausgewählt!"), _
			Array("T10", "Kein nstandhalter ausgewählt!"), _
			Array("U11", "Stückzahl links nicht eingetragen!"), _
			Array("W11", "Stückzahl rechts nicht eingetragen!"), _
			)
	REM Zugriff auf das aktuelle Dokument
	oDoc = ThisComponent
	REM Zugrif auf das aktuelle Tabellenblatt
	oSheet = oDoc.CurrentController.ActiveSheet
	abbruchmeldung=""
	For i=0 to uBound(aFehler)
		If oSheet.getCellRangeByName(aFehler(i)(0)).String="" Then
			abbruchmeldung=abbruchmeldung & aFehler(i)(1) & chr(10)
		End if		
	Next

	If abbruchmeldung<>"" Then
		msgbox(abbruchmeldung)
	Else
	
		vntPathAndFile ="D:\Stoerauswertung\" & Format(Now, "yyyy.mm.dd") & "_" & oSheet.getCellRangeByName("T6").String & "_" & "G26_TV" & ".ods"
		
		' Neue Calc-Datei erzeugen 
		Dim arg(0) as new com.sun.star.beans.PropertyValue
		Arg(0).Name = "Hidden"
		Arg(0).Value = false ' nach Tests auf true setzen:))
		oZielDoc = StarDesktop.loadComponentFromURL("private:factory/scalc", "_blank", 0, arg())
	
		'Tabelle importieren
		oZielDoc.Sheets.importSheet(oDoc,oSheet.name,0)
		'Button entfernen
		oshape=oZielDoc.Sheets(0).drawpage.getbyindex(0)
		oZielDoc.Sheets(0).drawpage.remove(oshape)
		'neues Dokument speichern und schließen
		oZielDoc.storeAsURL(converttourl(vntPathAndFile), array()) 'es wird ohne zu fragen ggf. überschrieben
		oZielDoc.close(false) 
		
		'Eintragungen löschen		
		aLoeschen=Array("T5:W6", "T8:W9", "T10:W10", "U11", "W11", "B12:W27")
		
		For i=0 To ubound(aLoeschen)
			oSheet.getCellRangeByName(aLoeschen(i)).ClearContents(7)
		Next
	
		msgbox "Die Datei" & chr(10) & vntPathAndFile & chr(10) & "wurde gespeichert."
	
	End If
		

End Sub

Re: Syntax Fehler nach betätigen der Schaltfläche

von Toxitom » Di, 08.02.2022 20:22

Hei MagnaUser,

das Makro ist in LibreOffice (Version 7) geschrieben und getestet worden;)

Aber... die Verwendung des Dispachers und der Zwischenablage kann manchmal tückisch sein... ist leider nicht immer klar, was da drin ist :(

Das was Du siehst ist offensichtlich folgendes: Du hast den Code (vielleicht aus dem Forum) kopiert und über die Zwischenablage in Dein Dokument eingefügt.
Dann das Makro gestartet - und da ist eben auch noch der Code in der Zwischenablage - und der wurde in die Startzelle (A1) eingefügt;)

Tia, ja, das sind so die Tücken...hihi.

Aber... geben wir dem Makro etwas Zeit, alles richtig zu machen.

Code: Alles auswählen

function CopyTabToNewDoc(oSheet as object, oDoc as object, oZielDoc as object)
  DIM oFrame1 as variant, oFrame2 as variant
  Dim oZelle as variant
  Dim oDispatcher as variant
  
  oDispatcher = createUnoService("com.sun.star.frame.DispatchHelper") 
   
  oDoc.CurrentController.Frame.ContainerWindow.setFocus    'nimmt den Focus vom Button! (Formular)
  REM Das zu kopierende Tabellenblatt wird markiert
  oDoc.CurrentController.Select(oSheet)
  wait( 1000 )  'eine Sekunde warten um dem Makro Zeit zu geben..... 
  oFrame1 = oDoc.CurrentController.Frame
  REM Use a dispatch to copy to the clipboard.
  oDispatcher.executeDispatch(oFrame1, ".uno:Copy", "", 0, Array())
  REM Upper left corner of where to paste the data.
  oZelle = oZielDoc.Sheets(0).getCellRangeByName("A1")
  REM Place the view cursor there then paste the clipboard.
  oZielDoc.CurrentController.Select(oZelle) 
  oFrame2 = oZielDoc.CurrentController.Frame 
  oDispatcher.executeDispatch(oFrame2, ".uno:Paste", "", 0, Array())
  REM Cursor setzen in Zelle A1 des Zieldokumentes
  oZielDoc.CurrentController.Select(oZelle)
  
end function
Die wait() Funktion ist neu drin, zusätzlich die Zeile "oDoc.CurrentController.Frame.ContainerWindow.setFocus" - die ist zwar wohl nicht zwingend nötig, gibt aber ein wenig Sicherheit.
die Zeile "oFrame1 = oDoc.CurrentController.Frame" habe ich verschoben!

Wenn alles bei Dir gut funktioniert, kannst Du auch die wait-Funktion etwas reduzieren - wahrscheinlich reichen auch 500 oder sogar 200 (Millisekunden). Hängt aber auch von dem Rechner etc ab ... also besser großzügig bleiben;)

Viele Grüße
Tom

Re: Syntax Fehler nach betätigen der Schaltfläche

von MagnaUser » Di, 08.02.2022 19:48

Guten Abend,

Wauu so viel ist passiert. Mist habe ich nicht mitbekommen.

@ mikeleb

falls die Dateien nicht mehr per Makro oder so ausgewertet werden...

So ein ärger genau das soll passieren da hast du dir lobenswerterweise Mühe gemacht die nicht nötig war.
Aber da bin ich raus. Die Störungen werden von einer anderen Abteilung ausgewertet.

Also so sieht die gespeicherte Datei aus nachdem ich auf den Button geklickt habe.
Es wird das ganze Makro in der Zelle A1 gespeichert.

Screenshot 2022-02-08 192832.JPG
Screenshot 2022-02-08 192832.JPG (87.05 KiB) 3217 mal betrachtet

Irgendetwas habe ich falsch gemacht aber ich kann dir nicht sagen was.
Das Makro läuft, es wird auch eine Datei erstellt mit dem richtigen Dateinamen.

Nur der Inhalt passt nicht.

Ist dein Code für OO oder LO ich nutze LO, weil du gesagt hattest das der VBA Code in LO sicher läuft.
Oder ist das egal bei deinem Code?

Vielen vielen Dank für Eure Hilfe und Mühe.

Grüße MagnaUser

Re: Syntax Fehler nach betätigen der Schaltfläche

von mikeleb » Di, 08.02.2022 17:17

Hallo,
jaaa - na klar.
Um nur die aktuelle Tabelle zu exportieren muss der pdf-teil erweitert werden:

Code: Alles auswählen

		Dim arg(2) as new com.sun.star.beans.PropertyValue	
		'setzte Speicherargumente
		arg(0).Name = "URL"	
		arg(0).Value = converttourl(vntPathAndFile)
		arg(1).Name = "FilterName"
		arg(1).Value = "calc_pdf_Export"
		'nur aktuelle Tabelle exportieren
		obereiche = oDoc.createInstance("com.sun.star.sheet.SheetCellRanges")
		obereiche.addRangeAddress(oSheet.getrangeaddress,0)
		Dim aFilterData(0) as new com.sun.star.beans.PropertyValue
		aFilterData(0).Name = "Selection"
		aFilterData(0).Value = obereiche
		arg(2).Name = "FilterData"
		arg(2).Value = aFilterData()
		oDoc.storetoUrl(arg(0).value,arg())	'exportieren als pdf
und ich vergaß noch: In der Schaltfläche muss die Option "Druckbar" auf nein gesetzt werden. Dann ist sie in der pdf verschwunden.

Re: Syntax Fehler nach betätigen der Schaltfläche

von Toxitom » Di, 08.02.2022 16:49

Hey,
mikeleb hat geschrieben: Di, 08.02.2022 16:14 mal eine Variante mit pdf-Export.
Sehr schön :)

MagnaUser muss aber bewusst sein, dass diese Variante *alle* Tabellenblätter exportiert. Ich kenne die Orginaldatei nicht, wir haben ja nur eine verkürzte Beispieldatei erhalten.

Aber ich glaube man könnte das noch irgendwie auf die aktuelle Seite begrenzen....

VG Tom

Re: Syntax Fehler nach betätigen der Schaltfläche

von mikeleb » Di, 08.02.2022 16:14

Hallo,
mal eine Variante mit pdf-Export.
Die verschiedenen Fehlermeldungen habe ich mal zusammengefasst, sodass eine Gesamtmeldung kommt, wenn mehrere Dinge fehlen.

Code: Alles auswählen

Sub Datei_speichern()

	'zu prüfenden Zellen und Fehlermeldung erfassen

	aFehler=Array(Array("T5","Keine Datum ausgewählt!"),_
			Array("T6", "Keine Schicht ausgewählt!"), _
			Array("T8", "Kein Einleger 1 ausgewählt!"), _
			Array("V8", "Kein Einleger 2 ausgewählt!"), _
			Array("T9", "Kein Nacharbeiter 1 ausgewählt!"), _
			Array("V9", "Kein Nacharbeiter 2 ausgewählt!"), _
			Array("T10", "Kein Instandhalter ausgewählt!"), _
			Array("U11", "Stückzahl links nicht eingetragen!"), _
			Array("W11", "Stückzahl rechts nicht eingetragen!"), _
			)
	REM Zugriff auf das aktuelle Dokument
	oDoc = ThisComponent
	REM Zugrif auf das aktuelle Tabellenblatt
	oSheet = oDoc.CurrentController.ActiveSheet
	abbruchmeldung=""
	For i=0 to uBound(aFehler)
		If oSheet.getCellRangeByName(aFehler(i)(0)).String="" Then
			abbruchmeldung=abbruchmeldung & aFehler(i)(1) & chr(10)
		End if		
	Next

	If abbruchmeldung<>"" Then
		msgbox(abbruchmeldung)
	Else
	
		vntPathAndFile ="D:\Stoerauswertung\" & Format(Now, "yyyy.mm.dd") & "_" & oSheet.getCellRangeByName("T6") & "_" & "G26_TV" & ".pdf"
		'setzte Speicherargumente für pdf-Export
		Dim arg(1) as new com.sun.star.beans.PropertyValue	
		arg(0).Name = "URL"	
		arg(0).Value = converttourl(vntPathAndFile)
		arg(1).Name = "FilterName"
		arg(1).Value = "calc_pdf_Export"
		oDoc.storetoUrl(arg(0).value,arg())	'exportieren als pdf
		
		aLoeschen=Array("T5:W6", "T8:W9", "T10:W10", "U11", "W11", "B12:W27")
		
		For i=0 To ubound(aLoeschen)
			oSheet.getCellRangeByName(aLoeschen(i)).ClearContents(7)
		Next
	
		msgbox "Die Datei" & chr(10) & vntPathAndFile & chr(10) & "wurde gespeichert."
	
	End If
		

End Sub

Re: Syntax Fehler nach betätigen der Schaltfläche

von Toxitom » Di, 08.02.2022 15:20

Hey MagnaUser,

also, der Hinweis von mikeleb ist sehr gut und sollte beachtet werden. Wäre wahrscheinlich die bessere Lösung - falls die Dateien nicht mehr per Makro oder so ausgewertet werden....

Unabhängig davon hier mal der Rumpf-Code für das von Dir gewünschte Verfahren:

Code: Alles auswählen

REM  *****  BASIC  *****
Option explicit

Sub Datei_speichern()
  DIM oDoc as variant, oSheet as variant
  Dim oZielDoc as variant
  Dim vntPathAndFile As String
  dim arg(0) as new com.sun.star.beans.PropertyValue
  
  REM Zugriff auf das aktuelle Dokument
  oDoc = ThisComponent
  REM Zugrif auf das aktuelle Tabellenblatt
  oSheet = oDoc.CurrentController.ActiveSheet
  
  REM Abfrage des Inhalts der einzelnen Zellen - Type 0 = leer 
  if oSheet.getCellRangeByName("T5").Type = 0 then 
    MsgBox "Keine Datum ausgewählt!"   
    Exit Sub
  End If
  REM  hier die anderen Abfragen einpflegen
  
  
  REM Zieldatei Pfad und Name
  vntPathAndFile = convertToURL("D:\Stoerauswertung\" & Format(Now, "yyyy.mm.dd") & "_" & oSheet.getCellRangeByName("T6").string & "_" & "G26_TV" & ".ods") 
  
  REM Neue Calc-Datei erzeugen 
  Arg(0).Name = "Hidden"
  Arg(0).Value = false ' nach Tests auf true setzen:))
  oZielDoc = StarDesktop.loadComponentFromURL("private:factory/scalc", "_blank", 0, arg())
  
  oZielDoc.storeAsURL(vntPathAndFile, array())
  
  REM jetzt aktuelles Tabellenblatt in neue Datei kopieren
  CopyTabToNewDoc(oSheet, odoc, oZielDoc)
  
  REM  der Button sollte hier noch entfernt werden - sonst bleibt die Info, dass das Dokument Makros enthält - was aber nicht stimmt
  
  REM Neues Dokument speichern und schliessen
  With oZielDoc
    .store()
    .close(true)
  end with
  
  REM löschen der Inhalte der Zellen des Quelldokumentes
  REM 1 = Werte, 2 = Datumwerte, 4 = Texte (Strings), 16 = Formeln
  REM #### korrekten Werte einfügen und anpassen!!! ###
  with oSheet
    .getCellRangeByName("A1").clearContents(1+2+4+16)
    .getCellRangeByName("D1:E1").clearContents(1+2+4+16)
  end with
  
  REM Cursor Ursprungsdokument auf Zelle 
  oDoc.CurrentController.Select(oSheet.getCellRangeByName("A1"))
  
  REM Dokument speichern
  oDoc.store()
  
end sub



'/** CopyTabToNewDoc
'*************************************************************************.
'* @kurztext kopiert ein übergebenes Tabellenblatt in eine andere Datei
'* Diese Funktion kopiert ein übergebenes Tabellenblatt einer Calc-Datei in eine
'* andere Calc-Datei, und zwar auf das Sheet(0) - also das erste Tabellenblatt
'*
'* @param1  oSheet as object    Das zu kopierende Tabellenblatt als Objekt  
'* @param2  oDoc as object      Das Quelldokument
'* @param2  oZielDoc as object  Das Zieldokument
'*
'* @return 
'*************************************************************************
'*/
function CopyTabToNewDoc(oSheet as object, oDoc as object, oZielDoc as object)
  DIM oFrame1 as variant, oFrame2 as variant
  Dim oZelle as variant
  Dim oDispatcher as variant
  
  oDispatcher = createUnoService("com.sun.star.frame.DispatchHelper") 
  
  oFrame1 = oDoc.CurrentController.Frame 
  REM Das zu kopierende Tabellenblatt wird markiert
  oDoc.CurrentController.Select(oSheet)
  REM Use a dispatch to copy to the clipboard.
  oDispatcher.executeDispatch(oFrame1, ".uno:Copy", "", 0, Array())
  REM Upper left corner of where to paste the data.
  oZelle = oZielDoc.Sheets(0).getCellRangeByName("A1")
  REM Place the view cursor there then paste the clipboard.
  oZielDoc.CurrentController.Select(oZelle) 
  oFrame2 = oZielDoc.CurrentController.Frame 
  oDispatcher.executeDispatch(oFrame2, ".uno:Paste", "", 0, Array())
  REM Cursor setzen in Zelle A1 des Zieldokumentes
  oZielDoc.CurrentController.Select(oZelle)
  
end function
Funktioniert, musst Du halt noch entsprechend anpassen bzw. ergänzen.

Was nicht gut ist:
  • Der Name der Zieldatei. Ich würde keine Punkte im Dateinamen akzeptieren - das Datum also entweder schreiben "JJJMMDD" oder statt Punkten Bindestriche nehmen.
  • Eine Abfrage sollte eingebaut werden, ob die Zieldatei schon existiert - dann entsprechend Fehlermeldung oder so.
  • Beim Kopieren des Tabellenblattes wird auch der Button mitkopiert - nicht aber das Makro. Der Button behält aber die Verbindung. Das Dokument glaubt also, dass noch ein Makro drin ist - entsprechende Abfrage... der sollte entfernt werden....
Ich würde das neue Dokument versteckt erzeugen - das ist praxisnäher:) Ändere nach den Tests den entsprechenden Wert von False auf true.

Arbeit nur mit einer Kopie deines Arbeitsdokumentes zum TEsten ... nicht, dass es evt. Kaputt geht ;))

Viele Grüße
Tom

Re: Syntax Fehler nach betätigen der Schaltfläche

von mikeleb » Di, 08.02.2022 11:34

Hallo,
Unter einem bestimmten Dateinamen speichern, der aus Datum + Schicht + Anlage aufgebaut ist.
Ich vermute mal, dass die Schichtergebnisse auf diese Art archiviert werden sollen. Wie wäre es denn, so als Idee, die Tabelle als pdf zu speichern?

Nach oben