archiviare le fatture su un foglio archivia
Regole del forum
Solo richieste di aiuto. Per saluti e presentazioni utilizzate il forum Discussioni Generali e Presentazioni.
Solo richieste di aiuto. Per saluti e presentazioni utilizzate il forum Discussioni Generali e Presentazioni.
-
- Messaggi: 7
- Iscritto il: martedì 13 marzo 2018, 21:48
archiviare le fatture su un foglio archivia
Ho creato una fattura che si aggiorna con delle macro non riesco a creare una macro che me li registra in un foglio archivio
con N°, data, cliente, importo e data scadenza. Ringrazio anticipatamente se qualche persona più competente di me mi aiuta
allego la mia cartella di lavoro
con N°, data, cliente, importo e data scadenza. Ringrazio anticipatamente se qualche persona più competente di me mi aiuta
allego la mia cartella di lavoro
- Allegati
-
- prova fattura.ods
- (17.84 KiB) Scaricato 168 volte
OpenOffice 4.1.1
Re: archiviare le fatture su un foglio archivia
A quale versione ti sei ispirato? Alla mia o a quella di @lucky63? viewtopic.php?t=4906&f=2#p23643
Il tuo allegato non presenta le macro, perchè le hai salvate in "Macro personali", ovvero sul tuo pc e quindi non nel documento. Quando sposti il documento le macro non lo seguono.
Intanto ti posso dire che secondo me hai fatto alcuni errori tra imponibile e totale fattura, ma è un file in costruzione quindi probabilmente trovando il problema delle macro ti stai concentrando su questo.
Allega nuovo documento con le macro da te fatte.
Il tuo allegato non presenta le macro, perchè le hai salvate in "Macro personali", ovvero sul tuo pc e quindi non nel documento. Quando sposti il documento le macro non lo seguono.
Intanto ti posso dire che secondo me hai fatto alcuni errori tra imponibile e totale fattura, ma è un file in costruzione quindi probabilmente trovando il problema delle macro ti stai concentrando su questo.
Allega nuovo documento con le macro da te fatte.
LibO:Versione: 6.2.8.2
Build ID: 1:6.2.8~rc2-0ubuntu0.16.04.1- 32-bit
-
Se risolvi:
1. Condividi la soluzione qui con noi
2. Metti [Risolto] al titolo del primo messaggio come spiegato qui
Build ID: 1:6.2.8~rc2-0ubuntu0.16.04.1- 32-bit
-
Se risolvi:
1. Condividi la soluzione qui con noi
2. Metti [Risolto] al titolo del primo messaggio come spiegato qui
-
- Messaggi: 7
- Iscritto il: martedì 13 marzo 2018, 21:48
Re: archiviare le fatture su un foglio archivia
Per quanto riguarda la fattura non mi sono ispirato a nessuno è concepita da me.
Allego il nuovo file modificato .
Allego il nuovo file modificato .
- Allegati
-
- fatture1.ods
- (168.03 KiB) Scaricato 168 volte
OpenOffice 4.1.1
Re: archiviare le fatture su un foglio archivia
Mi riferivo alle macro e non volevo criticare. Sbaglio o avevi prima lasciato un commento in quella discussione e poi hai deciso di aprirne una nuova? Qualcuno aveva commentato perché mi era giunta la notifica, ma forse non eri stato tu?
LibO:Versione: 6.2.8.2
Build ID: 1:6.2.8~rc2-0ubuntu0.16.04.1- 32-bit
-
Se risolvi:
1. Condividi la soluzione qui con noi
2. Metti [Risolto] al titolo del primo messaggio come spiegato qui
Build ID: 1:6.2.8~rc2-0ubuntu0.16.04.1- 32-bit
-
Se risolvi:
1. Condividi la soluzione qui con noi
2. Metti [Risolto] al titolo del primo messaggio come spiegato qui
-
- Messaggi: 7
- Iscritto il: martedì 13 marzo 2018, 21:48
Re: archiviare le fatture su un foglio archivia
Sono alle prime armi con le macro e accetto tutti i consigli da persone esperte e solo per capire come funzionano grazie comunque per l'interessamento
OpenOffice 4.1.1
Re: archiviare le fatture su un foglio archivia
Prova l'allegato. Poi ti spiego le macro passo passo.
Codice: Seleziona tutto
REM ***** BASIC *****
Public const Foglio_Fattura as string="fatture"
Public const foglioarchivio as string="Archivio"
global numerofattura as integer
global data as long
global cliente as String
global totalefattura as integer
global scadenza as long
Sub main
Call EsportaPNG
Call Archivia
Call Resetta
End Sub
Sub EsportaPNG
dim document as object
dim dispatcher as object
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
dim args1(0) as new com.sun.star.beans.PropertyValue
args1(0).Name = "ToPoint"
args1(0).Value = "$A$1:$F$50"
dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args1())
dispatcher.executeDispatch(document, ".uno:ExportTo", "", 0, Array())
End Sub
Sub Archivia
numerofattura=ThisComponent.Sheets.getByName(Foglio_Fattura).getCellRangeByName("F1").getvalue()
data=ThisComponent.Sheets.getByName(Foglio_Fattura).getCellRangeByName("F2").getvalue()
cliente=ThisComponent.Sheets.getByName(Foglio_Fattura).getCellRangeByName("F5").getstring()
totalefattura=ThisComponent.Sheets.getByName(Foglio_Fattura).getCellRangeByName("F46").getvalue()
scadenza=ThisComponent.Sheets.getByName(Foglio_Fattura).getCellRangeByName("F11").getvalue()
test1=controlladati()
if test1="ok" then
test2=controllaarchivio()
if test2<>-1 then
call riempiarchivio(test2)
msgbox "Fattura archiviata","Successo!"
else
msgbox "Questa fattura era già stata archiviata","Controlla"
end if
else
select case test1
case "Data"
msgbox "Manca la Data. Non è possibile archiviare","Imprevisto"
case "Cliente"
msgbox "Manca il Cliente. Non è possibile archiviare","Imprevisto"
case "NumFattura"
msgbox "Manca il Num_Fattura. Non è possibile archiviare","Imprevisto"
case "TotFattura"
msgbox "Il totale fattura è nullo o negativo. Non è possibile archiviare","Imprevisto"
case "Scadenza"
msgbox "Manca la data Scadenza","Imprevisto"
end select
end if
end sub
function controlladati() as string
controlladati="ok"
if cliente="" then
controlladati="Cliente"
elseif data="" then
controlladati="Data"
elseif totalefattura<=0 then
controlladati="TotFattura"
elseif numerofattura<=0 then
controlladati="NumFattura"
elseif scadenza="" then
controlladati="Scadenza"
end if
end function
function controllaarchivio() as integer
oDoc=ThisComponent
oSheet=oDOc.Sheets.getByName(foglioarchivio)
oCol = oSheet.Columns(0)
oRange = oCol.queryEmptyCells()
riferimento=oRange.getRangeAddressesAsString()
riferimento=mid(riferimento,instr(riferimento,".A")+2,instr(riferimento,":")-instr(riferimento,".A")-2)
if oSheet.getCellByPosition(1,cint(riferimento)-2).getvalue()=numerofattura then
controllaarchivio=-1
else
controllaarchivio=cint(riferimento)-1
end if
end function
sub riempiarchivio(i as integer)
ThisComponent.Sheets.getByName(foglioarchivio).getCellByPosition(2,i).setstring(cliente)
ThisComponent.Sheets.getByName(foglioarchivio).getCellByPosition(1,i).setvalue(data)
ThisComponent.Sheets.getByName(foglioarchivio).getCellByPosition(3,i).setvalue(totalefattura)
ThisComponent.Sheets.getByName(foglioarchivio).getCellByPosition(0,i).setvalue(numerofattura)
ThisComponent.Sheets.getByName(foglioarchivio).getCellByPosition(4,i).setvalue(Scadenza)
end Sub
sub Resetta
dim document as object
dim dispatcher as object
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
dim args1(0) as new com.sun.star.beans.PropertyValue
args1(0).Name = "ToPoint"
args1(0).Value = "$F$5"
dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args1())
dim args2(0) as new com.sun.star.beans.PropertyValue
args2(0).Name = "Flags"
args2(0).Value = "SV"
dispatcher.executeDispatch(document, ".uno:Delete", "", 0, args2())
rem ----------------------------------------------------------------------
dim args3(0) as new com.sun.star.beans.PropertyValue
args3(0).Name = "ToPoint"
args3(0).Value = "$B$11"
dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args3())
dispatcher.executeDispatch(document, ".uno:Delete", "", 0, args2())
rem ----------------------------------------------------------------------
dim args4(0) as new com.sun.star.beans.PropertyValue
args4(0).Name = "ToPoint"
args4(0).Value = "$A$14:$F$40"
dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args4())
dispatcher.executeDispatch(document, ".uno:Delete", "", 0, args2())
rem ----------------------------------------------------------------------
dim args5(0) as new com.sun.star.beans.PropertyValue
args5(0).Name = "ToPoint"
args5(0).Value = "$F$5"
dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args5())
end sub
Editato: Eliminato file perchè caricata versione sbagliata. Aggiunto file corretto nel messaggio successivo |
Ultima modifica di unlucky83 il lunedì 19 marzo 2018, 18:07, modificato 2 volte in totale.
LibO:Versione: 6.2.8.2
Build ID: 1:6.2.8~rc2-0ubuntu0.16.04.1- 32-bit
-
Se risolvi:
1. Condividi la soluzione qui con noi
2. Metti [Risolto] al titolo del primo messaggio come spiegato qui
Build ID: 1:6.2.8~rc2-0ubuntu0.16.04.1- 32-bit
-
Se risolvi:
1. Condividi la soluzione qui con noi
2. Metti [Risolto] al titolo del primo messaggio come spiegato qui
-
- Messaggi: 7
- Iscritto il: martedì 13 marzo 2018, 21:48
Re: archiviare le fatture su un foglio archivia
mi da un errore scusami se do tanto disturbo ma come si dice da noi sono de coccio
Allego stampa dell'errore
Allego stampa dell'errore
- Allegati
-
- errore.odt
- (249.33 KiB) Scaricato 143 volte
OpenOffice 4.1.1
Re: archiviare le fatture su un foglio archivia
devi controllare tra le opzioni il sicurezza delle macro. Probabilmente hai salvato il file in una cartella per la quale è attivo il blocco delle macro.
La macro da eseguire è la macro "Main" o mediante il pulsante o manualmente.
La macro Main chiama le macro EsportaPNG (che si occupa soltanto di esportare in un file immagine la fattura), poi la macro Archivia (che si occupa di popolare il foglio Archivio) ed infine la macro Resetta (che si occupa di riportare a zero il foglio fattura).
Le altre macro salvate nel documento sono funzioni impiegate da "Archivia" per eseguire alcuni controlli e per copiare i dati delle celle da un foglio ad un altro.
Se inserisci una fattura incompleta, verrà eseguita l'esportazione in file immagine, ma le funzioni di controllo inserite in "Archivia" riconosceranno l'errore e ti avviseranno che la trascrizione sull'altro foglio non è avvenuta perchè qualcosa non torna.
Seguiranno altre info quando riuscirai a provare il file.
Nota bene
Non rinominare i fogli altrimenti dovrai modificare questa parte del codice:
La macro da eseguire è la macro "Main" o mediante il pulsante o manualmente.
Codice: Seleziona tutto
Sub main
Call EsportaPNG
Call Archivia
Call Resetta
End Sub
Le altre macro salvate nel documento sono funzioni impiegate da "Archivia" per eseguire alcuni controlli e per copiare i dati delle celle da un foglio ad un altro.
Se inserisci una fattura incompleta, verrà eseguita l'esportazione in file immagine, ma le funzioni di controllo inserite in "Archivia" riconosceranno l'errore e ti avviseranno che la trascrizione sull'altro foglio non è avvenuta perchè qualcosa non torna.
Seguiranno altre info quando riuscirai a provare il file.
Nota bene
Non rinominare i fogli altrimenti dovrai modificare questa parte del codice:
Codice: Seleziona tutto
Public const Foglio_Fattura as string="fatture"
Public const foglioarchivio as string="Archivio"
LibO:Versione: 6.2.8.2
Build ID: 1:6.2.8~rc2-0ubuntu0.16.04.1- 32-bit
-
Se risolvi:
1. Condividi la soluzione qui con noi
2. Metti [Risolto] al titolo del primo messaggio come spiegato qui
Build ID: 1:6.2.8~rc2-0ubuntu0.16.04.1- 32-bit
-
Se risolvi:
1. Condividi la soluzione qui con noi
2. Metti [Risolto] al titolo del primo messaggio come spiegato qui
-
- Messaggi: 7
- Iscritto il: martedì 13 marzo 2018, 21:48
Re: archiviare le fatture su un foglio archivia
ho istallato quello che mi hai inviato non funziona da un mare di errori. A me servirebbe una cosa più semplice, mi basta una macro per registrare solo su un archivia N° fattura, data fattura,cliente,importo fattura senza tanti controlli. poi quando sarò piu pratico proverò con cose più serie. Comunque scusami se ti do tanto tanti fasti comunque tantissimi GRAZIE
OpenOffice 4.1.1
Re: archiviare le fatture su un foglio archivia
Tanto per chiarire non ti ho dato nulla da istallare. Posso toglierti dei controlli, ma che errori ti da?
Questa è la macro Archivia
E' molto semplice e richiama la funzione controlladati(): Se manca uno dei 5 valori da archiviare, segnala l'errore e non archivia,
Richiama anche la funzione controllaarchivio(): Se è già archiviata una fattura con lo stesso numero fattura segnale l'errore e non archivia. Se invece non trova una fattura con la stessa numerazione, restituisce la prima riga libera del foglio archivio.
Se i due controlli vanno a buon fine, viene chiamata la macro riempiarchivio(test2), che assegna i valori della prima riga libera del foglio archivio con i valori del primo foglio.
Allego file, perchè precedentemente ho allegato file senza macro
Questa è la macro Archivia
Codice: Seleziona tutto
Sub Archivia
numerofattura=ThisComponent.Sheets.getByName(Foglio_Fattura).getCellRangeByName("F1").getvalue()
data=ThisComponent.Sheets.getByName(Foglio_Fattura).getCellRangeByName("F2").getvalue()
cliente=ThisComponent.Sheets.getByName(Foglio_Fattura).getCellRangeByName("F5").getstring()
totalefattura=ThisComponent.Sheets.getByName(Foglio_Fattura).getCellRangeByName("F46").getvalue()
scadenza=ThisComponent.Sheets.getByName(Foglio_Fattura).getCellRangeByName("F11").getvalue()
test1=controlladati()
if test1="ok" then
test2=controllaarchivio()
if test2<>-1 then
call riempiarchivio(test2)
msgbox "Fattura archiviata","Successo!"
else
msgbox "Questa fattura era già stata archiviata","Controlla"
end if
else
select case test1
case "Data"
msgbox "Manca la Data. Non è possibile archiviare","Imprevisto"
case "Cliente"
msgbox "Manca il Cliente. Non è possibile archiviare","Imprevisto"
case "NumFattura"
msgbox "Manca il Num_Fattura. Non è possibile archiviare","Imprevisto"
case "TotFattura"
msgbox "Il totale fattura è nullo o negativo. Non è possibile archiviare","Imprevisto"
case "Scadenza"
msgbox "Manca la data Scadenza","Imprevisto"
end select
end if
end sub
Richiama anche la funzione controllaarchivio(): Se è già archiviata una fattura con lo stesso numero fattura segnale l'errore e non archivia. Se invece non trova una fattura con la stessa numerazione, restituisce la prima riga libera del foglio archivio.
Se i due controlli vanno a buon fine, viene chiamata la macro riempiarchivio(test2), che assegna i valori della prima riga libera del foglio archivio con i valori del primo foglio.
Allego file, perchè precedentemente ho allegato file senza macro
- Allegati
-
- fatture2.ods
- (159.66 KiB) Scaricato 174 volte
LibO:Versione: 6.2.8.2
Build ID: 1:6.2.8~rc2-0ubuntu0.16.04.1- 32-bit
-
Se risolvi:
1. Condividi la soluzione qui con noi
2. Metti [Risolto] al titolo del primo messaggio come spiegato qui
Build ID: 1:6.2.8~rc2-0ubuntu0.16.04.1- 32-bit
-
Se risolvi:
1. Condividi la soluzione qui con noi
2. Metti [Risolto] al titolo del primo messaggio come spiegato qui
Re: archiviare le fatture su un foglio archivia
Un commento di risposta?
LibO:Versione: 6.2.8.2
Build ID: 1:6.2.8~rc2-0ubuntu0.16.04.1- 32-bit
-
Se risolvi:
1. Condividi la soluzione qui con noi
2. Metti [Risolto] al titolo del primo messaggio come spiegato qui
Build ID: 1:6.2.8~rc2-0ubuntu0.16.04.1- 32-bit
-
Se risolvi:
1. Condividi la soluzione qui con noi
2. Metti [Risolto] al titolo del primo messaggio come spiegato qui
-
- Messaggi: 7
- Iscritto il: martedì 13 marzo 2018, 21:48
Re: archiviare le fatture su un foglio archivia
continua a darmi un errore ti allego l'errore che compare
ERRORE di Runtine BASIC
Si è verificata una eccezione
Type:com.sun.star.container.NoSuchElementException
Message
numerofattura=ThisComponent.Sheets.getByName(Foglio_Fattura).getCellRangeByName("F1").getvalue()
ERRORE di Runtine BASIC
Si è verificata una eccezione
Type:com.sun.star.container.NoSuchElementException
Message
numerofattura=ThisComponent.Sheets.getByName(Foglio_Fattura).getCellRangeByName("F1").getvalue()
OpenOffice 4.1.1
Re: archiviare le fatture su un foglio archivia
La prima cosa che hai fatto è stata rinominare il foglio vero?
LibO:Versione: 6.2.8.2
Build ID: 1:6.2.8~rc2-0ubuntu0.16.04.1- 32-bit
-
Se risolvi:
1. Condividi la soluzione qui con noi
2. Metti [Risolto] al titolo del primo messaggio come spiegato qui
Build ID: 1:6.2.8~rc2-0ubuntu0.16.04.1- 32-bit
-
Se risolvi:
1. Condividi la soluzione qui con noi
2. Metti [Risolto] al titolo del primo messaggio come spiegato qui