Estrazione anno data per la path

di il
21 risposte

Estrazione anno data per la path

Problemino della sera...
vorrei mettere un pulsante che mi manda ad una cartella specifica dove tengo l'archivio documenti.
sul click del pulsante ho messo:
'Private Sub Comando244_Click()
'Dim StrInput As String
'StrInput = "C:\Users\Marco\FATTURE ACQUISTO\&DatePart("aaaa";[Data]")&
'Application.FollowHyperlink StrInput
'End Sub

se mi fermo a :
'StrInput = "C:\Users\Marco\FATTURE ACQUISTO
tutto ok
però vorrei scendere nella sottodirectory dell'anno prelevandolo dal campo data.
mi da errore sintassi.
mi potete postare un link da studiare?

Grazie

21 Risposte

  • Re: Estrazione anno data per la path

    Come da regolamento, quando scrivi un codice VBA, selezionalo e poi clicca sul pulsante Code per "inquadrarlo" e renderlo visibile con i tipici caratteri stile "Courier New".

    Penso che l'errore di sintassi sia dovuto a
    1. Devi chiudere con le virgolette il path "quello che ti funziona" e poi concatenare con & (ma senza & finale)
    2. Usare la virgola dentro la funzione DatePart e non il punto-virgola
    3. Non devi mettere l'apostrofo a ogni inizio riga, perchè significa "commento" e non "istruzione da eseguire"
    4. ...varie ed eventuali...

    Prova così
    StrInput = "C:\Users\Marco\FATTURE ACQUISTO\" & DatePart("aaaa",[Data])
    Oserei dire che ti consiglio la funzione Year (più specifica ed efficace) invece di DatePart (più vaga e rischiosa).
  • Re: Estrazione anno data per la path

    OsvaldoLaviosa ha scritto:


    .....

    Prova così
    StrInput = "C:\Users\Marco\FATTURE ACQUISTO\" & DatePart("aaaa",[Data])
    Come non si usa il PUNTOVIRGOLA nel VBA... serve anche usare le funzioni con i parametri corretti.
    Questa non funzionerebbe con "aaaa"... che si usa nelle Queries o nel generatore di Espressioni dove si usa il PUNTOVIRGOLA.

    Il VBA parla in Inglese..., come dice la GUIDA.

    OsvaldoLaviosa ha scritto:


    Oserei dire che ti consiglio la funzione Year (più specifica ed efficace) invece di DatePart (più vaga e rischiosa).
    Decisamente meglio l'uso del Format in questi casi in modo da Forzare la stringa con il numero di Chars adeguati...
    
    ?Format$(Date(),"YYYY")
    oppure se servono più Caratteri:
    ?Format$(Year(Date()),"00000")
  • Re: Estrazione anno data per la path

    Buongiorno,
    scusate non avevo letto il regolamento.
    l'apostrofo a inizio riga l'ho messo per non cancellare l'istruzione mentre ci studiavo e copiandola sul forum li ho lasciati per errore.

    Io sarei andato un poco avanti:
    Private Sub commando244_Click()
    Dim strNomefile As String
       strNomefile = "& progr &""." & "pdf"
       [Comando244].HyperlinkAddress = "C:\Users\Marco\FATTURE ACQUISTO\" & DatePart("yyyy", [Data]) \ "& strnomefile &"""
    End Sub
    progr sarebbe il campo che identifica il progressivo fattura ed è numerico.
    il problema è che mi apre sempre lo stesso file ovvero l'ulitmo che ho inserito nella cartella.

    grazie
  • Re: Estrazione anno data per la path

    OK l'idea di aggiungere anche l'estensione PDF, che puoi concatenare più semplicemente
    & ".pdf"

    (tutto insieme, senza concatenare più volte). Noto però che hai un cattivo rapporto con virgolette e concatenazioni.
    Non capisco perchè non vuoi usare più Application.FollowHyperlink. Io non conosco l'istruzione [Comando244].HyperlinkAddress
    Io, sinceramente, mi sono un po' perso. Potresti fare 3-4 esempi di "path completi" per rendere meglio l'idea (almeno a me)?
  • Re: Estrazione anno data per la path

    MARCO70 ha scritto:


    ...
    progr sarebbe il campo che identifica il progressivo fattura ed è numerico.
    il problema è che mi apre sempre lo stesso file ovvero l'ulitmo che ho inserito nella cartella.
    Descrivi la maschera nella quale hai inserito il pulsante per l'apertura della fattura e come fai a "selezionare" la fattura che desideri. Lavori sempre sull'anno corrente? Questo serve per capire come costruire il "percorso" del file da aprire
    Ho cercato di mettere insieme qualcosa ma è tutto da riverdere in base alle risposte alle domande precedenti (specie il progr)
    
    Dim StrInput As String
    StrInput = "C:\Users\Marco\FATTURE ACQUISTO\" & Format$(Date(),"YYYY") & "\" & Me![progr] & ".pdf"
    Debug.Print StrInput
    
    Fino a quando non otterrai nella finestra immediata (grazie a Debug.Print) qualcosa di "decente" non vai da nessuna parte.
  • Re: Estrazione anno data per la path

    Ah!...adesso avrei colto meglio. L'ultima di Phil_cattivocarattere sarebbe (logicamente) buona, ma

    MARCO70 ha scritto:


    progr sarebbe il campo che identifica il progressivo fattura ed è numerico
    Mi pare di capire che [progr] è un "progressivo relativo" all'anno corrispondente.
    Se vogliamo essere ortodossi fino in fondo (alla @Alex maniera), occorrerebbe un Format (o Format$) anche su Me!progr. Qua MARCO ci deve chiarire qualcosa. Se non fai un Format(Me![progr], "0000") (immagino io 4 cifre) adeguato, non solo non "pre-stringhi" il progr, ma ottieni un ordinamento, dentro la cartella AnnoCorrispondente, sballata.
    Poi, mi pare di capire che non si tratta di Date()(data odierna), ma del campo [DataFattura] (preferisco chiamarlo così perchè Data...non ricordo...potrebbe dare noie con parole riservate). Riepilogando tutto, io scriverei così
    Private Sub Comando244_Click()
    Dim StrInput As String
    StrInput = "C:\Users\Marco\FATTURE ACQUISTO\" & Format$(Me![DataFattura],"YYYY") & "\" & Format$(Me![progr], "0000") & ".pdf"
    Application.FollowHyperlink StrInput
    End Sub
    
  • Re: Estrazione anno data per la path

    Salve,
    ho apportato modifica concatenando & “.pdf”
    effettivamente con le concatenazioni devo prenderci la mano
    Non uso più application.followHyperlink senza nessun motivo particolare. Vado per tentativi leggendo soluzioni simili su internet e scopiazzando !!!! piano piano imparerò !!!

    Allora vediamo se mi spiego meglio, nella maschera tra vi vari campi ho un campo numerico [progr] che è il progressivo della fattura numerico, poi ho un campo data xx/xx/xxxx.

    Con il pulsante 244 imposto evento su click come segue:
    Private Sub Comando244_Click()
    Dim StrInput As String
    StrInput = "C:\Users\Marco\FATTURE ACQUISTO\" & DatePart("yyyy", [Data]) & "\" & Me!Progr & ".pdf"
    [Comando244].HyperlinkAddress = StrInput
    End Sub
    Apre la path ma da errore "impossibile aprire file" perché non legge il nome del file, ovvero trova:
    C:\Users\Marco\FATTURE ACQUISTO\2016\.pdf
    Una path tipo sarebbe:
    C:\Users\Marco\FATTURE ACQUISTO\2016\121.pdf
    Oppure
    C:\Users\Marco\FATTURE ACQUISTO\2015\350.pdf

    Anche Debug.Print StrInput mi da lo stesso risultato

    A voi \" & DatePart("yyyy", [Data]) non sembra piacere ma a me funziona. Voglio dire l’anno lo legge.
  • Re: Estrazione anno data per la path

    MARCO70 ha scritto:


    Apre la path ma da errore "impossibile aprire file" perché non legge il nome del file, ovvero trova:
    C:\Users\Marco\FATTURE ACQUISTO\2016\.pdf
    Cosa c'è scritto dentro il campo Progr in quel momento su record corrente? Se è vuoto è ovvio che ti restituisce quella stringa.
    Hai letto il mio post precedente?
  • Re: Estrazione anno data per la path

    Salve,

    c'era un errore talmente stupido nella path che se ve lo dico non mi date più supporto quindi non ve lo dico...

    Messa così funziona:
    
    Private Sub Comando244_Click()
    Dim StrInput As String
    StrInput = "C:\Users\Marco\FATTURE ACQUISTO\" & DatePart("yyyy", [Data]) & "\" & Me!Progr & ".pdf"
    [Comando249].HyperlinkAddress = StrInput
    End Sub
    funziona anche:
    
    Debug.Print StrInputDebug.Print StrInput
    con:
    
    Application.FollowHyperlink StrInput
    succede una cosa strana; alla fine il file lo pare ma mi appare un messaggio dove dice che è impossibile aprire file sbagliando l'anno. ma il file lo apre boh?
    Grazie a tutti e alla prossima
  • Re: Estrazione anno data per la path

    MARCO70 ha scritto:


    ...
    Application.FollowHyperlink StrInput
    succede una cosa strana; alla fine il file lo pare ma mi appare un messaggio dove dice che è impossibile aprire file sbagliando l'anno. ma il file lo apre boh?
    Potresti riportare il messaggio d'errore esatto e il contenuto di StrInput?
  • Re: Estrazione anno data per la path

    Secondo me il mio software ha bisogno di una benedizione papale.
    attualmente sto usando:
    [Comando249].HyperlinkAddress = StrInput
    Stamani, all'apertura mi ha dato errore dicendo che non trovava file. effettivamente onostante fossi su un record del 2016 la path leggeva 2014 e non vedeva il nome.
    Beh.. chiudi riapri, smanetta un pò ha ripreso a funzionare. boh? è per questo che dico che c'è bisogno di un prete.

    Veniamo a noi.
    Se uso:
    Application.FollowHyperlink StrInput
    il file lo apre ma sotto apre una maschera errore che dice:

    impossibile prire C:\Users\Marco\FATTURE ACQUISTO\204\.pdf. impossibile aprire il file specificato

    Ad onor del vero il file che poi mi apre è del 2016. Quindi non legge ne l'anno ne il nome
    a Phil l'ardua sentenza

    Grazie
  • Re: Estrazione anno data per la path

    MARCO70 ha scritto:


    ...
    Se uso:
    Application.FollowHyperlink StrInput
    il file lo apre ma sotto apre una maschera errore che dice:

    impossibile prire C:\Users\Marco\FATTURE ACQUISTO\204\.pdf. impossibile aprire il file specificato

    Ad onor del vero il file che poi mi apre è del 2016.
    Non c'ho capito nulla.
    Toglie, per le prove, HyperlinkAddress, che secondo me fa solo confusione ed usa FollowHyperlink
    Posta il codice completo, metti anche il debug.print StrInput. Scrivi oltre al codice il risultato di quest'ultima istruzione e di' se apre il file giusto.
    Fai debug? il comportamento così "anomalo" potrebbe essere dovuto ad errori vari presenti qua e là che magari al primo avvio non ci sono e "funziona tutto" normalmente. Fino a quando, lavorando, gli errori (magari silenti) si verificano e mandano tutto in tilt.
  • Re: Estrazione anno data per la path

    Grande Phil,

    HyperlinkAddress l'ho tolto e sostituito con:
    Application.FollowHyperlink StrInput
    è con questa istruzione che:
    il file lo apre ma sotto apre una maschera errore che dice:
    impossibile prire C:\Users\Marco\FATTURE ACQUISTO\2014\.pdf. impossibile aprire il file specificato
    Ad onor del vero il file che poi mi apre è del 2016.
    vedi l'anno lo legge 2014 invece è 2016 e il nome del file non c'è. mette solo .pdf
    il codice completo è:
    Private Sub Comando249_Click()
    Dim StrInput As String
    StrInput = "C:\Users\Marco\FATTURE ACQUISTO\" & Format$(Me![Data], "YYYY") & "\" & Me!Progr & ".pdf"
    Application.FollowHyperlink StrInput
    se sostituisco il codice come segue:
    Private Sub Comando249_Click()
    Dim StrInput As String
    StrInput = "C:\Users\Marco\FATTURE ACQUISTO\" & Format$(Me![Data], "YYYY") & "\" & Me!Progr & ".pdf"
    Debug.Print StrInput
    End Sub
    mi legge sempre e solo l'ultimo file insererito del 2016

    si a questo punto credo tu abbia ragione. ci sono errori latenti perchè il comportqamento cambia di volta in volta
    cosa facciamo?
  • Re: Estrazione anno data per la path

    Per me i suggerimenti forniti da me, @Alex e Phil sono corretti. Io voto sempre la soluzione Application.FollowHyperlink.
    I miei sospetti sono (vado a ruota libera):
    1. Visto che hai un pulsante che si chiama Comando249, in realtà i controlli che hai in maschera non si chiamano [Data], [Progr]
    2. Quanti record hai in quella maschera/tabella per avere un test significativo?
    3. Cosa appare dentro [Progr] perchè l'intero path non include anche quel numero?
    4. [Progr] è di tipo Numerico?
    5. I file progressivi dentro ogni cartella Anno sono coerenti come?
    1.pdf
    10.pdf
    11.pdf
    2.pdf
    3.pdf
    ...
    9.pdf
    Lo sai che se non fai quel giochetto di Format$ su [Progr] ottieni questa progressione? E' rilevante questo per te?

    oppure
    0001.pdf
    0002.pdf
    0003.pdf
    ...
    0010.pdf
    0011.pdf
    ....
    ottenuto grazie a Format$(Me![Progr], "0000")
    So che questo punto non è rilevante, ma...
    6. Hai davvero (tanti) file .pdf dentro ogni cartella Anno?
    7. Non è che hai spostato qualche directory in modo incoerente per quel path assoluto?
Devi accedere o registrarti per scrivere nel forum
21 risposte