[Risolto] Macro per creare nuovo foglio con la copia senza formule

Salve a tutti, ho il mio file per le fatture e vorrei creare una macro che crei un nuovo foglio e copi i dati senza formule.
Ho provato a registrare una macro e funziona, l’unico problema è che nella fattura ho un logo immagine e la macro copia tutto tranne l’immagine anche se è vistata la voce oggetti.

Grazie

Selezioni il logo, fai clic con il tasto destro e seleziona Ancoraggio - alla cella.

Poi prova a fare il copia/incolla con la tua macro.

ho ancorato l’immagine ed ho fatto la copia delle singole colonne, ma niente, l’immagine non viene riportata

    sub CopiaSelezioneColonne
rem ----------------------------------------------------------------------
rem define variables
dim document   as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:Copy", "", 0, Array())

rem ----------------------------------------------------------------------
dim args2(1) as new com.sun.star.beans.PropertyValue
args2(0).Name = "Name"
args2(0).Value = "Foglio22"
args2(1).Name = "Index"
args2(1).Value = 4

dispatcher.executeDispatch(document, ".uno:Insert", "", 0, args2())

rem ----------------------------------------------------------------------
dim args3(5) as new com.sun.star.beans.PropertyValue
args3(0).Name = "Flags"
args3(0).Value = "SVDT"
args3(1).Name = "FormulaCommand"
args3(1).Value = 0
args3(2).Name = "SkipEmptyCells"
args3(2).Value = false
args3(3).Name = "Transpose"
args3(3).Value = false
args3(4).Name = "AsLink"
args3(4).Value = false
args3(5).Name = "MoveMode"
args3(5).Value = 4

dispatcher.executeDispatch(document, ".uno:InsertContents", "", 0, args3())


end sub

Mentre questo è facendo la copia di tutto il foglio cliccando sul primo quadratino in alto a sinistra

sub Main
rem ----------------------------------------------------------------------
rem define variables
dim document   as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:Copy", "", 0, Array())

rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:Copy", "", 0, Array())

rem ----------------------------------------------------------------------
dim args3(1) as new com.sun.star.beans.PropertyValue
args3(0).Name = "Name"
args3(0).Value = "Foglio22"
args3(1).Name = "Index"
args3(1).Value = 4

dispatcher.executeDispatch(document, ".uno:Insert", "", 0, args3())

rem ----------------------------------------------------------------------
dim args4(5) as new com.sun.star.beans.PropertyValue
args4(0).Name = "Flags"
args4(0).Value = "SVDT"
args4(1).Name = "FormulaCommand"
args4(1).Value = 0
args4(2).Name = "SkipEmptyCells"
args4(2).Value = false
args4(3).Name = "Transpose"
args4(3).Value = false
args4(4).Name = "AsLink"
args4(4).Value = false
args4(5).Name = "MoveMode"
args4(5).Value = 4

dispatcher.executeDispatch(document, ".uno:InsertContents", "", 0, args4())


end sub

Mentre questo è con il comando seleziona tutto

sub Main
rem ----------------------------------------------------------------------
rem define variables
dim document   as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:SelectAll", "", 0, Array())

rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:Copy", "", 0, Array())

rem ----------------------------------------------------------------------
dim args3(1) as new com.sun.star.beans.PropertyValue
args3(0).Name = "Name"
args3(0).Value = "Foglio22"
args3(1).Name = "Index"
args3(1).Value = 4

dispatcher.executeDispatch(document, ".uno:Insert", "", 0, args3())

rem ----------------------------------------------------------------------
dim args4(5) as new com.sun.star.beans.PropertyValue
args4(0).Name = "Flags"
args4(0).Value = "SVDT"
args4(1).Name = "FormulaCommand"
args4(1).Value = 0
args4(2).Name = "SkipEmptyCells"
args4(2).Value = false
args4(3).Name = "Transpose"
args4(3).Value = false
args4(4).Name = "AsLink"
args4(4).Value = false
args4(5).Name = "MoveMode"
args4(5).Value = 4

dispatcher.executeDispatch(document, ".uno:InsertContents", "", 0, args4())


end sub

Quando registri la macro, invece di inserire un nuovo foglio e copiare il contenuto di quello precedente, prova a fare una cosa diversa.

Fai clic col tasto destro del mouse sulla linguetta con il nome del foglio e seleziona Sposta o copia foglio, poi nella finestra che si apre metti il segno di spunta su Copia.

Come scrivevo nel primo post non voglio copiare il foglio tal quale ma copiarlo senza formule ed ecco perché uso “incolla speciale”

Potresti creare la copia tale e quale dell’intero foglio e poi sul nuovo foglio fare un copia e incolla speciale su se stesso con le opzioni che servono a te.

Complesso il giro da fare, ma almeno funziona.

Grazie

Cross posting [Risolto] Macro copia senza formule un nuovo foglio (Leggi argomento) • Apache OpenOffice: forum della comunità