Buongiorno a tutti sono qui a richiedervi l'ennesima mano
Premetto che ho già cercato in lungo e in largo ma non sono riuscito a trovare nulla che si adatti alla mia esigenza.
Provo a spiegarmi:
nel file preventivo, che come dicevo grazie a voi funziona una meraviglia, avrei la necessità di farlo comunicare con il file consuntivi ovvero; per prima cosa il vorrei che il file consuntivi venga aggiornato automaticamente con i dati dei quattro fogli del file preventivi (Oculistica cataratte, oculistica ricoveri, preventivi vari e ostetricia (parto)) nei relativi fogli che replicati sono Oculistica cataratte (prev), oculistica ricoveri (prev) e cosi via in modo che da ritrovare tutti i dati raccolti del paziente precedentemente inserito.
Adesso dal file consuntivi vorrei richiamare il paziente nel foglio "ins consuntivo" al fine di poter apportare alcune modifiche (importi dati ecc) in modo che successivamente possa archiviarlo nel relativo foglio replicato Oculistica cataratte (cons), Oculistica ricoveri (con) e cosi via in modo che poi, come per il preventivo, possa stampare riprendendo i dati dei fogli (cons) nell'apposito foglio CONS
Tutto questo perché successivamente, con le stesse procedure di archiviazione, costruirò (almeno spero) un ulteriore file per la liquidazione.
Spero di essermi bene.
Grazie in anticipo
Costruzione preventivo e consuntivo
Costruzione preventivo e consuntivo
- Allegati
-
- TEST Preventivi.ods
- (30.92 KiB) Scaricato 105 volte
-
- Test Consuntivi.ods
- (15.28 KiB) Scaricato 119 volte
Openoffice 3.2 su Windows 10
Re: costruzione preventivo e consuntivo
Ciao a tutti
scusate se continuo qui è solo per avere un ordine cronologico del lavoro svolto.
Con il file preventivo ho fatto tutto compresa la macro per copiare i dati da un foglio del file preventivo ad un foglio del file consuntivo; a questo punto volevo adattare la macro che mi avevate fatto per il file preventivo in quello dei consuntivi ma non riesco prorpio. fatto cio volevo salvare i dati nel foglio salva consuntivi.
Nel frattempo ho imparato qualcosina sulle macro e se potete spiegarmi i passaggi per adattare le macro così da smanettarci su.
Questo lavoro mi serve in modo che poi possa trasferire il foglio salva consuntivi in un foglio del file liquidazioni ma poi ci arriverò.
Altra cosa come faccio ad aggiungere alla stessa macro altri fogli da copiare in altro file? al momento sono riuscito solo con uno e utilizzo questa:
Sub Copiacelledefinite
Dim DocName as object, DocUlr as string, dummy(), range as object
Doc = ThisComponent
Sheet = Doc.Sheets(2)
Range = Sheet.getCellRangeByName("A1:AM1000").getDataArray ' range da copiare
sFileName ="\\PC213161\strutture\ds\ufficio\Consuntivi.ods" ' file destinazione
DocUrl = ConvertToURL(sFileName)
DocName = StarDesktop.loadComponentFromURL (DocUrl, "_blank",0, Dummy() )
Sheet1 = DocName.Sheets(1)
dRange = Sheet1.getCellRangeByName("A1:AM1000") ' range destinazione
dRange.setDataArray(Range)
DocName.store
DocName.close(true)
End Sub
Grazie mille
scusate se continuo qui è solo per avere un ordine cronologico del lavoro svolto.
Con il file preventivo ho fatto tutto compresa la macro per copiare i dati da un foglio del file preventivo ad un foglio del file consuntivo; a questo punto volevo adattare la macro che mi avevate fatto per il file preventivo in quello dei consuntivi ma non riesco prorpio. fatto cio volevo salvare i dati nel foglio salva consuntivi.
Nel frattempo ho imparato qualcosina sulle macro e se potete spiegarmi i passaggi per adattare le macro così da smanettarci su.
Questo lavoro mi serve in modo che poi possa trasferire il foglio salva consuntivi in un foglio del file liquidazioni ma poi ci arriverò.
Altra cosa come faccio ad aggiungere alla stessa macro altri fogli da copiare in altro file? al momento sono riuscito solo con uno e utilizzo questa:
Sub Copiacelledefinite
Dim DocName as object, DocUlr as string, dummy(), range as object
Doc = ThisComponent
Sheet = Doc.Sheets(2)
Range = Sheet.getCellRangeByName("A1:AM1000").getDataArray ' range da copiare
sFileName ="\\PC213161\strutture\ds\ufficio\Consuntivi.ods" ' file destinazione
DocUrl = ConvertToURL(sFileName)
DocName = StarDesktop.loadComponentFromURL (DocUrl, "_blank",0, Dummy() )
Sheet1 = DocName.Sheets(1)
dRange = Sheet1.getCellRangeByName("A1:AM1000") ' range destinazione
dRange.setDataArray(Range)
DocName.store
DocName.close(true)
End Sub
Grazie mille
- Allegati
-
- Test.ods
- (24.66 KiB) Scaricato 112 volte
Openoffice 3.2 su Windows 10
Re: costruzione preventivo e consuntivo
Se ho capito beneThunder ha scritto:.........Altra cosa come faccio ad aggiungere alla stessa macro altri fogli da copiare in altro file? al momento sono riuscito solo con uno e utilizzo questa:....
Codice: Seleziona tutto
Sub Copiacelledefinite
Dim DocName as object, DocUlr as string, dummy(), range as object
Doc = ThisComponent
Sheet = Doc.Sheets(2)
Range = Sheet.getCellRangeByName("A1:AM1000").getDataArray ' range da copiare
sFileName ="\\PC213161\strutture\ds\ufficio\Consuntivi.ods" ' file destinazione
DocUrl = ConvertToURL(sFileName)
DocName = StarDesktop.loadComponentFromURL (DocUrl, "_blank",0, Dummy() )
Sheet1 = DocName.Sheets(1)
dRange = Sheet1.getCellRangeByName("A1:AM1000") ' range destinazione
dRange.setDataArray(Range)
DocName.store
DocName.close(true)
' ----------------------continua
Sheet = Doc.Sheets(3) ' altro foglio
Range = Sheet.getCellRangeByName("A1:AM1000").getDataArray ' range da copiare
sFileName ="\\PC213161\strutture\ds\ufficio\altrofile.ods" ' altro file destinazione
DocUrl = ConvertToURL(sFileName)
DocName = StarDesktop.loadComponentFromURL (DocUrl, "_blank",0, Dummy() )
Sheet1 = DocName.Sheets(1)
dRange = Sheet1.getCellRangeByName("A1:AM1000") ' range destinazione
dRange.setDataArray(Range)
DocName.store
DocName.close(true)
End Sub
-------------------
Libre Office 7.5.3.2 su Windows 11
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta
Libre Office 7.5.3.2 su Windows 11
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta
Re: costruzione preventivo e consuntivo
Ciao
perfetto o quasi nel senso che così mi apre e chiude il file per il numero di fogli che aggiorno, ho provato ad eliminare la riga DocName.close(true) ma così facedo resta il file aperto e non mi aggiorna il secondo foglio.
Per l'altra macro, questa per intenderci:
Non riesco ad associarla al PREV facendola partire da bottone anziché da cella /C$ in ultimo vorrei che, modificato il consuntivo salvasse il tutto nella prima riga libera del foglio salva consuntivi.
Grazie ancora per la disponibilità
perfetto o quasi nel senso che così mi apre e chiude il file per il numero di fogli che aggiorno, ho provato ad eliminare la riga DocName.close(true) ma così facedo resta il file aperto e non mi aggiorna il secondo foglio.
Per l'altra macro, questa per intenderci:
Codice: Seleziona tutto
'Option Explicit
Private dlg As Object
Private dlgmodel As Object
Private oControl As Object
Private oControl2 As Object
Private gridmodel
Private oListener
Private grid As Object
Private Arr()
Sub GridOnDialog(Target)
If NOT Target.supportsService("com.sun.star.sheet.SheetCell") then Exit Sub
If Target.String = "" Then
MsgBox("Selezionare il nome della Branca e/o Struttura" : Exit Sub
End if
If Target.AbsoluteName <> "$Prev.$C$4" Then Exit Sub
Dim a As Object, Doc As Object
Dim columnmodel As Object, LargCol()
Dim i As Long, col As Object
Dim FoglioPrev As Object
Dim FoglioRep As Object
Dim LastRow As Long
Dim LastCol As Long
Doc = ThisComponent
FoglioPrev = Doc.Sheets.getByName("Prev")
FoglioRep = Doc.Sheets.getByName(Target.String)
a = FoglioRep.createCursor
a.gotoEndOfUsedArea(false)
LastRow = a.RangeAddress.EndRow
LastCol = a.RangeAddress.EndColumn
oRange = FoglioRep.GetCellRangeByPosition(0, 6, LastCol, LastRow)
Arr() = oRange.GetDataArray
DialogLibraries.LoadLibrary( "Standard" )
dlg = CreateUnoDialog( DialogLibraries.Standard.Dialog1)
dlgmodel = dlg.getModel()
dlgmodel.Positionx = 265
dlgmodel.Positiony = 100
dlg.Title = "Preventivo " & Target.String
gridmodel = dlgmodel.createInstance("com.sun.star.awt.grid.UnoControlGridModel")
with gridmodel
.PositionX = 20
.PositionY = 28
.Width = 440
.Height = 120
.SelectionModel = 1'com.sun.star.view.SelectionType.MULTI
end with
columnmodel = gridmodel.ColumnModel
For i = 0 To LastCol
col = columnmodel.createColumn()
col.Title = FoglioRep.getCellByPosition(i, 5).String
columnmodel.addColumn(col)
col.Resizeable = False
col.columnwidth = FoglioRep.Columns(i).Width/50
col.HorizontalAlign = 1
Next i
dlgmodel.insertByName("grid", gridmodel)
REM le prossime due righe servono per il listener
grid = dlg.getControl("grid")
oListener = (CreateUnoListener("grid_", "com.sun.star.awt.grid.XGridSelectionListener"))
grid.addSelectionListener(oListener)
gridmodel.GridDataModel.addRows(Arr, Arr)
dlg.execute()
dlg.dispose()
End Sub
''
Sub grid_disposing(ev)
'MsgBox "chiusura datagrid"
End Sub
Sub grid_selectionChanged(ev)
Dim rows(), i As Long, s As Long
Dim Denominazione As String
Dim Doc As Object
Dim Foglio As Object
rows = ev.Source.getSelectedRows()
s = rows(0)
Denominazione = gridmodel.GridDataModel.getRowData(s)(1)
If MsgBox( "Hai selezionato il paziente " & Denominazione & " ?", 1+32, "Compilazione preventivo") = 2 Then
grid.removeSelectionListener(oListener)
REM DESELEZIONO TUTTO
grid.deselectAllRows
REM RIATTIVO IL LISTENER
grid.addSelectionListener(oListener)
Exit Sub
End if
Doc = ThisComponent
Foglio = Doc.Sheets.getByName("Prev")
a = Foglio.createCursor
a.gotoEndOfUsedArea(false)
LastRow = a.RangeAddress.EndRow
REM RIPULISCO IL PRECEDENTE PREVENTIVO
Foglio.getcellRangeByPosition(0, 15, 3, LastRow ).ClearContents(7)
rigades = 13
For i = 1 To gridmodel.ColumnModel.ColumnCount - 1
Foglio.getcellbyposition(0, rigades).String = gridmodel.ColumnModel.getColumn(i).Title & " :"
If gridmodel.GridDataModel.getRowData(s)(i) <> "" Then
Foglio.getcellbyposition(3, rigades).String = gridmodel.GridDataModel.getRowData(s)(i)
End If
rigades = rigades + 1
Next i
grid.removeSelectionListener(oListener)
REM DESELEZIONO TUTTO
grid.deselectAllRows
REM RIATTIVO IL LISTENER
grid.addSelectionListener(oListener)
End Sub
sub DlgClose
dlg.endExecute()
End sub
Grazie ancora per la disponibilità
Ultima modifica di charlie il giovedì 29 agosto 2019, 7:38, modificato 1 volta in totale.
Motivazione: Formattato codice
Motivazione: Formattato codice
Openoffice 3.2 su Windows 10