+ Rispondi al messaggio
Visualizzazione dei risultati da 1 a 7 su 7

App.path con variabile

  1. #1
    L'avatar di jqoobe
    jqoobe non è in linea Novello
    Ciao a tutti, ho un dilemma che non riesco a risolvere.. ho neccessità di recuperare dall'interno di un file il contenuto e di usare questo contenuto per copiare e rinominare il file. mi spiego meglio:

    Ho un file1 che si chiama 14-1-2021.csv dovrei copiarlo e rinominarlo in un nuovo file, ma il nome del nuovo file devo prenderlo dall'interno di un altro file (file2).

    secondo la mia logica prima di tutto apro il file 2 per recuperare il suo contenuto. e più precisamente:
    dichiaro il percorso e nome del file
    Dim FileSito As String
    FileSito = (App.Path & "\Db\sito_hub\") & "sito-" & (Day(Date) & "-" & Month(Date) & "-" & Year(Date) & ".dat")
    
    lo apro assegnando il nome trovato alla label sito.caption

     Open FileSito For Input As #1
         
         
         sito.Caption = Input$(LOF(1), #1)
         
         
         
          Close #1
    

    mi viene recuperato il nome selargius pertanto vedro nel form che sito.caption mostra selargius


    ora voglio copiare il famoso file "14-1-2021.csv" come "selargius-14-1-2021.csv"

    pertanto scrivo:

    Dim RINOstrFileORIG As String
    Dim RINOstrFileDEST As String
    RINOstrFileORIG = (App.Path & "\Archivio\")  & (Day(Date) & "-" & Month(Date) & "-" & Year(Date) & ".csv")
    RINOstrFileDEST = (App.Path & "\Archivio\")& sito.caption  & (Day(Date) & "-" & Month(Date) & "-" & Year(Date) & ".csv")
    
    FileCopy RINOstrFileORIG, RINOstrFileDEST
    
    facendo cosi mi viene restituito un errore e cioè il seguente

    errore di run-time 52 Nome o numero di file non valido... perchè?


    se invece di riempire la label sito.caption dal contenuto del file la dichiaro nel codice.. esempio

    sito.caption="selargius"

    tutto funziona correttamente... non capisco... qualcuno potrebbe illuminarmi ?

  2. #2
    L'avatar di TheTruster
    TheTruster non è in linea Moderatore Globale Ultimo blog: Mouse Wheel in Visual Basic 6 - ActiveX
    E' probabile che quello che leggi dal file2 non sia "solo" la parola "selargius", ma anche qualche altro carattere, magari il ritorno a capo, o l'interruzione di riga.

    Per rendertene conto, dopo aver letto il contenuto del file ed averlo assegnato alla Label, prova a scrivere:

    MsgBox Len(sito.Caption)
    
    se il MessageBox ritorna più di 9, allora evidentemente c'è qualche carattere in più che da fastidio nella FileCopy.

    A margine di tutto, comunque, non è necessario usare una Label per contenere ciò che leggi da un file, basta una semplice variabile di tipo String, che tra l'altro puoi riutilizzare comodamente nel resto del codice.

    TheTruster
    ℹ️ Leggi di più su TheTruster ...

  3. #3
    L'avatar di jqoobe
    jqoobe non è in linea Novello
    mi restituisce 15

    come potrei risolvere ?

  4. #4
    Intanto tutte quelle parentesi non servono a molto ... il nome del file origine lo scrivi con

    FileSito = App.Path & "\Db\sito_hub\sito-" & Day(Date) & "-" & Month(Date) & "-" & Year(Date) & ".dat"
    
    e poi

    RINOstrFileORIG = App.Path & "\Archivio\" & Day(Date) & "-" & Month(Date) & "-" & Year(Date) & ".csv"
    
    Il problema invece deriva sicuramente da cosa è stato letto dal file. Molto probabilmente ci sono dei caratteri "non visibili" (sospetto Cr-Lf) che non possono essere poi utilizzati per il nome di file. Prova a scrivere

    RINOstrFileDEST = App.Path & "\Archivio\" & Replace(sito.caption, vbcrlf, "")  & Day(Date) & "-" & Month(Date) & "-" & Year(Date) & ".csv"
    
    Magari, dato che hai detto che sono 15 caratteri, dovresti capire quali sono questi caratteri in più, esaminando il codice ASCII dei caratteri della stringa letta.
    ℹ️ Leggi di più su AntonioG ...

  5. #5
    L'avatar di jqoobe
    jqoobe non è in linea Novello
    perfetto grazie mille ! funziona perfettamente.

  6. #6
    Però qualche dubbio ce l'ho ancora ... se dici che la lunghezza è 15 e la stringa selargius è di 9 caratteri, anche con i Cr Lf sarebbero 11 ... e gli altri? Sono 4 spazi? O altro che non è visibile e che viene inserito comunque nel nuovo nome?
    ℹ️ Leggi di più su AntonioG ...

  7. #7
    L'avatar di jqoobe
    jqoobe non è in linea Novello
    l'ho pulito ora funziona perfettamente :

    intestazionefile.Caption = Trim(sito.Caption)
         intestazionefile.Caption = Replace(intestazionefile.Caption, " ", "-")
         intestazionefile.Caption = Replace(intestazionefile.Caption, "(", "")
         intestazionefile.Caption = Replace(intestazionefile.Caption, ")", "")
         intestazionefile.Caption = Replace(intestazionefile.Caption, "'", "")
         'intestazionefile.Caption = Replace(intestazionefile.Caption, "-", "")
    
    
    
    ''MsgBox Len(intestazionefile.Caption)
    
    intestazionefile.Caption = Replace(intestazionefile.Caption, vbCrLf, "")
    ''MsgBox Len(intestazionefile.Caption)
    

+ Rispondi al messaggio

Potrebbero interessarti anche ...

  1. dichiarare come variabile pubblica la path del database
    Da marco61 nel forum Microsoft Access
    Risposte: 8
    Ultimo Post: 28-03-2019, 14:41
  2. Path variabile all'interno di una macro
    Da Backflip nel forum Microsoft Excel
    Risposte: 3
    Ultimo Post: 01-12-2017, 09:40
  3. Path HTML e path da collegamento ipertestuale di Access incoerenti
    Da OsvaldoLaviosa nel forum Microsoft Access
    Risposte: 25
    Ultimo Post: 15-10-2014, 09:23
  4. Risolto: Local Path to Network Path
    Da aurum81 nel forum Visual Basic 6
    Risposte: 7
    Ultimo Post: 14-11-2012, 17:09
  5. formula con path variabile
    Da zago nel forum Microsoft Word
    Risposte: 11
    Ultimo Post: 03-08-2010, 12:44