Buon giorno a tutti !
sto cercando disperatamente da un paio di giorni di fare delle macro su un file di excel, abbastanza complesse.
ho iniziato a farle, ma non ci riesco a pieno!

cerco di speigare al meglio cosa devo fare.

principalmente ho 3 file.
il primo è quello da dove far partire le macro , è un form di preventivo dove ho 3 pulsanti:
il primo deve far partire una macro chiamata: NewPrevCons
sostanzialmente deve "pulire" il preventivo cancellando tutti i dati già scritti sostituendoli con 0 oppure con carattere vuoto.
dopo aver pulito tutto deve andare nel secondo file chiamato lista_preventivi e pescare dalla colonna "numero_prev" l' ultimo numero scritto e aumentarlo di uno. se per esempio l' ultimo numero è il 35 mi deve stampare 36. il problema grosso è che devo ragioanre a colonne, poichè non saprò mai quanti preventivi sono già stati salvati.

questo è il codice che ho scritto:
mi da errore di inizializzazione:
codice:
Sub NewPrevCons
rem pulisco le celle sostituendo i dati con quelli base

Sheets("Prev_cons").Cells(21, "D") = 0
Sheets("Prev_cons").Cells(23, "D") = 0
Sheets("Prev_cons").Cells(34, "D") = 0
Sheets("Prev_cons").Cells(37, "D") = 0
Sheets("Prev_cons").Cells(37, "F") = 0
Sheets("Prev_cons").Cells(40, "D") = 0
Sheets("Prev_cons").Cells(45, "I") = 0
Sheets("Prev_cons").Cells(46, "D") = 0
Sheets("Prev_cons").Cells(49, "D") = 0
Sheets("Prev_cons").Cells(49, "F") = 0
Sheets("Prev_cons").Cells(52, "D") = 0
Sheets("Prev_cons").Cells(59, "D") = 0
Sheets("Prev_cons").Cells(62, "D") = 0
Sheets("Prev_cons").Cells(65, "D") = 0
Sheets("Prev_cons").Cells(65, "G") = 0
Sheets("Prev_cons").Cells(69, "D") = 0
Sheets("Prev_cons").Cells(69, "F") = 1
Sheets("Prev_cons").Cells(71, "D") = 0
Sheets("Prev_cons").Cells(79, "D") = 0
Sheets("Prev_cons").Cells(83, "D") = 0
Sheets("Prev_cons").Cells(89, "D") = 0
Sheets("Prev_cons").Cells(91, "D") = 0
Sheets("Prev_cons").Cells(93, "D") = 0
Sheets("Prev_cons").Cells(95, "D") = 0
Sheets("Prev_cons").Cells(97, "G") = 0

rem carico il numero prev


End Sub
come vedete manca la parte del caricamento del numero , poichè non so come fare....

seconda macro SalvaeChiudiPdfCons:
questa macro è molto particolare
in pratica deve:
prendere una serie di variabili dal foglio, scrivere le variabili nel foglio "lista preventivi" generando una nuova riga - "numero , ragione sociale ecc ecc"
poi selezionare una nuova area di stampa,
esportare in pdf con un nome ben preciso, e in una cartella fissa
cancellare l' area di stampa.
eseguire un messaggio di successo.

l' ulrima parte della macro ( quella delle stampa su pdf ) mi funziona , manca la prima parte e il nome file.
codice:
sub SalvaeChiudiPdfCons
rem ----------------------------------------------------------------------
rem define variables
dim document   as object
dim dispatcher as object
dim nomefile as String = "1_2013_cnt",
dim numero as Integer = Worksheets("Prev_cons").Cells(15, "L").Value
dim ragioneSociale as String = Worksheets("Prev_cons").Cells(8, "C").Value
dim tipologia as String = "C"
dim data as String = Worksheets("Prev_cons").Cells(8, "C").Value
dim importoMen as Integer = Worksheets("Prev_cons").Cells(101, "J").Value
dim importoUTan as Integer = Worksheets("Prev_cons").Cells(101, "L").Value


rem ----------------------------------------------------------------------
rem get access to the document
document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

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

rem ----------------------------------------------------------------------
dim args2(2) as new com.sun.star.beans.PropertyValue
args2(0).Name = "PrintArea"
args2(0).Value = "$C$2:$L$106"          '-----Rem QUESTA E' L'AREA DI ESPORTAZIONE DI CUI AL TEST FATTO -----
args2(1).Name = "PrintRepeatRow"
args2(1).Value = ""
args2(2).Name = "PrintRepeatCol"
args2(2).Value = ""

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

rem ----------------------------------------------------------------------
dim args3(2) as new com.sun.star.beans.PropertyValue
args3(0).Name = "URL"
args3(0).Value = "file:///Z:/DOWNLOAD/" & nomefile      '-----  QUI INDICARE IL PERCORSO / NomeFIle.PDF di salvataggio
args3(1).Name = "FilterName"
args3(1).Value = "calc_pdf_Export"
args3(2).Name = "FilterData"
args3(2).Value = Array(Array("UseLosslessCompression",0,false,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("Quality",0,90,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("ReduceImageResolution",0,false,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("MaxImageResolution",0,300,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("UseTaggedPDF",0,true,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("SelectPdfVersion",0,0,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("ExportNotes",0,false,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("ExportBookmarks",0,true,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("OpenBookmarkLevels",0,-1,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("UseTransitionEffects",0,true,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("IsSkipEmptyPages",0,true,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("IsAddStream",0,false,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("EmbedStandardFonts",0,false,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("FormsType",0,1,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("ExportFormFields",0,true,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("AllowDuplicateFieldNames",0,false,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("HideViewerToolbar",0,false,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("HideViewerMenubar",0,false,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("HideViewerWindowControls",0,false,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("ResizeWindowToInitialPage",0,false,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("CenterWindow",0,false,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("OpenInFullScreenMode",0,false,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("DisplayPDFDocumentTitle",0,true,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("InitialView",0,0,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("Magnification",0,0,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("Zoom",0,100,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("PageLayout",0,0,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("FirstPageOnLeft",0,false,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("InitialPage",0,1,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("Printing",0,2,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("Changes",0,4,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("EnableCopyingOfContent",0,true,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("EnableTextAccessForAccessibilityTools",0,true,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("ExportLinksRelativeFsys",0,false,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("PDFViewSelection",0,0,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("ConvertOOoTargetToPDFTarget",0,false,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("ExportBookmarksToPDFDestination",0,false,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("_OkButtonString",0,"",com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("EncryptFile",0,false,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("PreparedPasswords",0,,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("RestrictPermissions",0,false,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("PreparedPermissionPassword",0,Array(),com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("",0,,com.sun.star.beans.PropertyState.DIRECT_VALUE))

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

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

rem ----------------------------------------------------------------------
dim args5(2) as new com.sun.star.beans.PropertyValue
args5(0).Name = "PrintArea"
args5(0).Value = ""
args5(1).Name = "PrintRepeatRow"
args5(1).Value = ""
args5(2).Name = "PrintRepeatCol"
args5(2).Value = ""

dispatcher.executeDispatch(document, ".uno:ChangePrintArea", "", 0, args5())

rem qui dobbiamo scrivere il file
MsgBox "File archiviato con il nome " & nomefile
end sub
l' ultima macro è il completamento automatico di una fattura, ma questa ne riparlerò poi quando avrò fatto le altre due !

grazie mille a tutti per il vostro aiuto !!!!