Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

Errore di accesso al percorso file macro esporta CSV

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

Errore di accesso al percorso file macro esporta CSV

Postdi oz85 » 27/11/18 15:11

Ciao a tutti ragazzi! E' da molto che non scrivo e fortunatamente le mie macro vanno abbastanza bene tranne per il caso che vi espongo.

Ho un codice VBA che copia un foglio all'interno del file e lo esporta in csv salvandolo sul Desktop. Ha sempre funzionato ma da poco l'ho spostato in rete è accade un comportamento stranissimo che non riesco a capire...
Nella cartella dov'è contenuto il file con all'interno questo codice viene creato un file con nome variabile e con questa estensione:
"VB8232.tmp". e mi restituisce un errore di cui allego screen.

Non capisco il perchè per far funzionare il tutto occorre che chiuda completamente tutta la sessione Excel e ne apra una del tutto nuova....

Penso di fare io qualche "macro" errore.... potete dirmi qualcosa??? Grazie!


Immagine



Codice: Seleziona tutto
Sub Genera_Leadset()
 
    Application.ScreenUpdating = False:  Application.EnableEvents = False:  Application.DisplayAlerts = False
    On Error GoTo Cleanup

    codicesap = Sheets("Maschera").Range("b17").Value
    Dim fold As String: fold = "C:\Users\*******\Desktop\"
    Dim fName  As String: fName = "Leadset_" & codicesap & ".csv"
 
    'vai su foglio Export Leadset e cancella valori precedenti
    Sheets("Export_leadset").Select
    'cancella contenuto foglio
    Range("A2:GH1500").Select
    Selection.ClearContents
   
    'vai su foglio Leadset02
    Sheets("Leadset02").Select
    'smonta filtri
    Range("Tab_Leadset02[[#Headers],[ID WIRE PAR.]]").Select
    Selection.AutoFilter
    Selection.AutoFilter
    'filtra vuote
    ActiveSheet.ListObjects("Tab_Leadset02").Range.AutoFilter Field:=3, Criteria1:= _
        "=", Operator:=xlAnd
   
    'copia selezione
    Range("Tab_Leadset02[[Leadset]:[UserWSText10]]").Select
    Selection.Copy
       
    'vai su foglio Export Leadset & incolla
    Sheets("Export_leadset").Select
    Range("A2").Select
    Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
   

    Worksheets("Export_leadset").Copy
    With ActiveWorkbook
        .SaveAs fold & fName, FileFormat:=xlCSV, Local:=True
        .Close False
    End With


    ActiveWorkbook.Activate
    Sheets("Export_leadset").Copy
   

Cleanup:        Application.ScreenUpdating = True:  Application.EnableEvents = True: Application.DisplayAlerts = True

    'posizione cursore foglio Export_leadset
    Range("A1").Select
   
    'vai su foglio Maschera
    Sheets("Maschera").Select
    Range("A16").Select
   
    MsgBox "Leadset generati"
   
   
End Sub
oz85
Utente Junior
 
Post: 88
Iscritto il: 26/03/18 14:35

Sponsor
 

Re: Errore di accesso al percorso file macro esporta CSV

Postdi oz85 » 27/11/18 16:22

Ragazzi in pratica accade questo, una volta che importo il file che genera i due file csv, tenta di creare questo file "tmp" nella stessa cartella da dove importo il file di origine e mi restituisce l'errore dello screen sopra. E' un errore relativo al SaveAs ?
oz85
Utente Junior
 
Post: 88
Iscritto il: 26/03/18 14:35

Re: Errore di accesso al percorso file macro esporta CSV

Postdi oz85 » 27/11/18 19:52

Scusate il terzo messaggio ma è importante per capire la soluzione al mio problema.

Il codice che genera errore non è questo ma l'altro che utilizzo per importare un altro foglio excel. Essendo che il foglio importato ha delle celle unite, utilizzo il codice allegato per seleziona il numero di colonne ed incollarlo nel Modulo principale.

Se provo ad incollare un range, anzichè selezionare le colonne la macro iniziale genera correttamente il file csv. Se invece lascio il codice così com'è, una volta che utilizzo la macro del primo post, il salvataggio del file avviene nella cartella dov'è stato importato il file Excel. Posso allegare un file ma rimane comunque complesso. Riepilogando:

- Macro A [allegata nel 1°post] esporta un file csv sul desktop a seguito di una seconda Macro B, che importa un file xls e tramite formule genera il layout per la Macro A;
ERRORE GENERATO:
Se importo il file xls da una determinata cartella, la macro A con la quale importo il file, copia alcune colonne e le incolla in questo Modulo ed una volta avviata la Macro B, genera l'errore nello screen del 1°post. Se invece modifico il codice sotto riportato, copiando dal file importato xls anzichè le colonne un range, allora la Macro B funziona.

Mi sapete dire perchè ????

Codice: Seleziona tutto
    'vai sul foglio DT0 e dividi celle e cancella
    Sheets("DT0").Select
    Columns("A:BO").Select
    Range("A600").Activate
    Selection.UnMerge
    Selection.ClearContents
   
    'cancella Preparazioni
    Range("BQ8:BR1007").Select
    Selection.ClearContents
    Range("BQ7").Select
   
   
    'Scegli file e Apri:
    fName = Application.GetOpenFilename("Excel Files (*.xls*), *.xls*")
'errore:
'    Sheets("maschera").Select
'    Range("D1").Select
'    Exit Sub

   
   
    'Application.ScreenUpdating = True
    If fName = False Then
    Exit Sub
    End If


    Set MyBook = Workbooks.Open(fName)
    'Import:
    Sheets("Fili").Select
    'Range("A1:BO590").Copy
    Columns("A:BO").Select
    Selection.Copy
   
    ThisWorkbook.Activate
    Sheets("DT0").Select
    'Columns("A:BO").Select
    'Columns("A:A").Select
    Columns("A:BO").Select     'PasteSpecial xlPasteValues
    ActiveSheet.Paste
    Range("A7:B7").Select
   
    'colora di bianco le colonne
    Columns("A:BO").Select
    Range("A572").Activate
    With Selection.Interior
        .Pattern = xlNone
        .TintAndShade = 0
        .PatternTintAndShade = 0
    End With
    Range("A7:B7").Select
 
    'Cancella dati copiati così da evitare fastidioso msg Microsoft
    Application.CutCopyMode = False
   
    'Chiudi secondo file:
    MyBook.Close False





oz85 ha scritto:Ragazzi in pratica accade questo, una volta che importo il file che genera i due file csv, tenta di creare questo file "tmp" nella stessa cartella da dove importo il file di origine e mi restituisce l'errore dello screen sopra. E' un errore relativo al SaveAs ?
oz85
Utente Junior
 
Post: 88
Iscritto il: 26/03/18 14:35

Re: Errore di accesso al percorso file macro esporta CSV

Postdi oz85 » 27/11/18 21:57

Mi sembra più un diario di esperienza che un post!

Allora, sono riuscito a raggiungere la soluzione. Il mio problema era che in pratica tentavo di salvare il workbook attivo che non era il file creato, bensì il workbook dov'è presente la macro che genera il tutto...

Di conseguenza ho variato il codice così come segue e ora funziona tutto perfettamente. Lascio il codice con la speranza di aiutare qualcuno che è incappato nel mio stesso problema. Grazie!

Codice: Seleziona tutto
Set CurrentSheet = ThisWorkbook.ActiveSheet
   
   
    Worksheets("Export_leadset").Copy
    With ActiveWorkbook
        .SaveAs fold & fName, FileFormat:=xlCSV, Local:=True
        .Close False
    End With

Application.DisplayAlerts = False
ActiveWorkbook.Close

Sheets("maschera").Select


oz85 ha scritto:Scusate il terzo messaggio ma è importante per capire la soluzione al mio problema.

Il codice che genera errore non è questo ma l'altro che utilizzo per importare un altro foglio excel. Essendo che il foglio importato ha delle celle unite, utilizzo il codice allegato per seleziona il numero di colonne ed incollarlo nel Modulo principale.

Se provo ad incollare un range, anzichè selezionare le colonne la macro iniziale genera correttamente il file csv. Se invece lascio il codice così com'è, una volta che utilizzo la macro del primo post, il salvataggio del file avviene nella cartella dov'è stato importato il file Excel. Posso allegare un file ma rimane comunque complesso. Riepilogando:

- Macro A [allegata nel 1°post] esporta un file csv sul desktop a seguito di una seconda Macro B, che importa un file xls e tramite formule genera il layout per la Macro A;
ERRORE GENERATO:
Se importo il file xls da una determinata cartella, la macro A con la quale importo il file, copia alcune colonne e le incolla in questo Modulo ed una volta avviata la Macro B, genera l'errore nello screen del 1°post. Se invece modifico il codice sotto riportato, copiando dal file importato xls anzichè le colonne un range, allora la Macro B funziona.

Mi sapete dire perchè ????

Codice: Seleziona tutto
    'vai sul foglio DT0 e dividi celle e cancella
    Sheets("DT0").Select
    Columns("A:BO").Select
    Range("A600").Activate
    Selection.UnMerge
    Selection.ClearContents
   
    'cancella Preparazioni
    Range("BQ8:BR1007").Select
    Selection.ClearContents
    Range("BQ7").Select
   
   
    'Scegli file e Apri:
    fName = Application.GetOpenFilename("Excel Files (*.xls*), *.xls*")
'errore:
'    Sheets("maschera").Select
'    Range("D1").Select
'    Exit Sub

   
   
    'Application.ScreenUpdating = True
    If fName = False Then
    Exit Sub
    End If


    Set MyBook = Workbooks.Open(fName)
    'Import:
    Sheets("Fili").Select
    'Range("A1:BO590").Copy
    Columns("A:BO").Select
    Selection.Copy
   
    ThisWorkbook.Activate
    Sheets("DT0").Select
    'Columns("A:BO").Select
    'Columns("A:A").Select
    Columns("A:BO").Select     'PasteSpecial xlPasteValues
    ActiveSheet.Paste
    Range("A7:B7").Select
   
    'colora di bianco le colonne
    Columns("A:BO").Select
    Range("A572").Activate
    With Selection.Interior
        .Pattern = xlNone
        .TintAndShade = 0
        .PatternTintAndShade = 0
    End With
    Range("A7:B7").Select
 
    'Cancella dati copiati così da evitare fastidioso msg Microsoft
    Application.CutCopyMode = False
   
    'Chiudi secondo file:
    MyBook.Close False





oz85 ha scritto:Ragazzi in pratica accade questo, una volta che importo il file che genera i due file csv, tenta di creare questo file "tmp" nella stessa cartella da dove importo il file di origine e mi restituisce l'errore dello screen sopra. E' un errore relativo al SaveAs ?
oz85
Utente Junior
 
Post: 88
Iscritto il: 26/03/18 14:35

Re: Errore di accesso al percorso file macro esporta CSV

Postdi Anthony47 » 27/11/18 23:23

Interessante esperienza, vero?
E grazie per aver condiviso anche l'arcano e la soluzione

Ciao
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 16511
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Errore di accesso al percorso file macro esporta CSV

Postdi oz85 » 14/12/18 11:26

Ragazzi buongiorno.

Scusate se scrivo ancora ma non ho affatto risolto il problema, pensavo di averlo fatto ma in realtà continuo ad avere errore...

Ricapitolo brevemente:

• importo un file excel con dati nel Modulo dove c'è un pulsante per esportare gli stessi dati importati ed elaborati in maniera differente, sul desktop in formato csv;
• tutto fila liscio fino all'importazione. Quando tento di esportare... viene fuori l'errore "Errore di accesso al percorso file/file: '.VB54EF.tmp'. Ogni volta ovviamente, il nome di questo file temp cambia

L'errore in pratica è dovuto al fatto che durante l'esportazione per il salvataggio del file in csv, si tenta sempre di creare questo file tmp all'interno della cartella dov'è contenuto il file di importazione nonostante il salvataggio dovrebbe essere effettuato sul desktop.
Ora non capisco se l'errore è che si tenta sempre di leggere il Workbook relativo al file che importo oppure nella macro che esporta il file in csv.

Vi posto i codici. Grazie in anticipo a tutti.

Codice: Seleziona tutto
Sub import_data()

Dim FileN, myBook As Workbook
   fname = Application.GetOpenFilename("Excel Files (*.xls*), *.xls*")
    Set myBook = Workbooks.Open(fname)
    Sheets("Fili").Select
    Range("A1:BJ352").Select
    Selection.Copy
    ThisWorkbook.Activate
    Sheets("DT0").Select
    Range("A1").Select
    ActiveSheet.Paste
    myBook.Close False
    Range("A1").Select

End Sub


***********************************

Codice: Seleziona tutto
Sub Genera_Leadset()
 
    Application.ScreenUpdating = False:  Application.EnableEvents = False:  Application.DisplayAlerts = False
    On Error GoTo Cleanup

    codicesap = Sheets("Maschera").Range("B17").Value
    Dim fold As String: fold = "C:\Users\*********\Desktop\"
    Dim fname  As String: fname = "Leadset_" & codicesap & ".csv"
 
    'vai su foglio Export Leadset e cancella valori precedenti
    Sheets("Export_leadset").Select
    'cancella contenuto foglio
    Range("A2:GH1500").Select
    Selection.ClearContents
   
    'vai su foglio Leadset02
    Sheets("Leadset02").Select
    'smonta filtri
    Range("Tab_Leadset02[[#Headers],[ID WIRE PAR.]]").Select
    Selection.AutoFilter
    Selection.AutoFilter
    'filtra vuote
    ActiveSheet.ListObjects("Tab_Leadset02").Range.AutoFilter Field:=3, Criteria1:= _
        "=", Operator:=xlAnd
   
    'copia selezione
    Range("Tab_Leadset02[[Leadset]:[UserWSText10]]").Select
    Selection.Copy
       
    'vai su foglio Export Leadset & incolla
    Sheets("Export_leadset").Select
    Range("A2").Select
    Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    'xlPasteValues    ->classico
    'xlPasteValuesAndNumberFormats      ->versione diversa
   
'    Dim wso As Worksheet
'    Dim wsn As Worksheet

'    Set wso = ActiveSheet
'    wso.Select
'    Dim wbook As Workbook
'    Dim wsheet As Worksheet
   
   
    'Sheets("export_leadset").Select
    'Sheets("export_leadset").Copy
'    Set wbook = ActiveWorkbook
'    ThisWorkbook.Sheets("export_leadset").Copy
    'ActiveWorkbook.SaveAs Filename:= _
    '    "C:\Users\*********\Desktop\" & fName, _
    '    FileFormat:=xlCSV, CreateBackup:=False
       
   
    'ThisWorkbook.Activate
    'Dim twb As Workbook
'    Dim tmp As Workbook
'    Set tmp = Workbook("MCO • Modulo Creazione Ordini_work.xlsm").Activate
'    Sheets("export_leadset").Select
   
     
     

   
    'Set twb = ThisWorkbook.Sheets("export_leadset") ' Workbooks("MCO • Modulo Creazione Ordini.xlsm").Activate
    Worksheets("Export_leadset").Copy
   
    With ActiveWorkbook
        .SaveAs fold & fname, FileFormat:=xlCSV, Local:=True
        .Close False
    End With

'    Application.DisplayAlerts = False
'    ActiveWorkbook.Close

 

Cleanup:        Application.ScreenUpdating = True:  Application.EnableEvents = True: Application.DisplayAlerts = True

    'posizione cursore foglio Export_leadset
    Range("A1").Select
   
    'vai su foglio Maschera
    Sheets("Maschera").Select
    Range("A16").Select
   
    MsgBox "Leadset generati"
   
   
End Sub
oz85
Utente Junior
 
Post: 88
Iscritto il: 26/03/18 14:35

Re: Errore di accesso al percorso file macro esporta CSV

Postdi Anthony47 » 16/12/18 02:41

Mi viene in mente che potrebbe essere errata l'ipotesi che il desktop sia nella posizione descritta; prova a sostituire la riga
Dim fold As String: fold = "C:\Users\*********\Desktop\" con
Codice: Seleziona tutto
Dim fold As String
fold = CreateObject("WScript.Shell").Specialfolders("Desktop") & "\"

Sconsiglio inoltre l'uso di Application.DisplayAlerts = False dall'inizio alla fine, perche' potrebbe mascherare warning magari utili. Mettilo solo in questa posizione:
Codice: Seleziona tutto
   '
    Worksheets("Export_leadset").Copy
    Application.DisplayAlerts = False       '≪< QUESTA posizione
    With ActiveWorkbook
    '


Ciao
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 16511
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Errore di accesso al percorso file macro esporta CSV

Postdi oz85 » 16/12/18 19:16

Grazie Anthony per l'aiuto come sempre!

Ahimè continuo ad avere lo stesso errore. La macro fondamentalmente continua a tentare di salvare il file che tento di esportare nella cartella dov'è contenuto il primo che file che importo nel mio modulo. Sotto ho postato il codice con la correzione che mi hai suggerito di fare e sostituendo il mio dim desktop con la creazione dell'object.

E' possibile che stia tentando di esportare il foglio "Export_leadset" nel precedente workbook anche se è stato chiuso? Intendo che probabilmente il codice continua a lavorare sul workbook precedente. Ho provato comunque in svariati modi a citare questo workbook ma invano. Stavo pensando se debba attivare il workbook dov'è contenuto il modulo dichiarando il Nome file.

Le mie ovviamente sono congetture basate sull'istinto ed una piccola logica, essendo un noob. Grazie a tutti in ogni caso per l'aiuto in questa materia!

edit:
Aggiungo che quando faccio partire la macro ricevo dopo il primo errore del file tmp, anche quello relativo al metodo copy per il range "Export_leadset". La cosa ancora più curiosa è che se stacco il VPN aziendale che mi ha permesso di importare il file nel modulo e tento nuovamente di far partire la macro, il tutto viene salvato correttamente senza intoppi. Togliendoli il percorso del file che genera il problema, va tutto ok... continuo a non capire.



Codice: Seleziona tutto
Sub pcfacile()
   
    Application.ScreenUpdating = False:  Application.EnableEvents = False:  Application.DisplayAlerts = False
'    On Error GoTo Cleanup

    codicesap = Sheets("Maschera").Range("B17").Value
    Dim fname  As String: fname = "Leadset_" & codicesap & ".csv"
    Dim fold As String
    fold = CreateObject("WScript.Shell").Specialfolders("Desktop") & "\"
 
    'vai su foglio Export Leadset e cancella valori precedenti
    Sheets("Export_leadset").Select
    'cancella contenuto foglio
    Range("A2:GH1500").Select
    Selection.ClearContents
   
    'vai su foglio Leadset02
    Sheets("Leadset02").Select
    'smonta filtri
    Range("Tab_Leadset02[[#Headers],[ID WIRE PAR.]]").Select
    Selection.AutoFilter
    Selection.AutoFilter
    'filtra vuote
    ActiveSheet.ListObjects("Tab_Leadset02").Range.AutoFilter Field:=3, Criteria1:= _
        "=", Operator:=xlAnd
   
    'copia selezione
    Range("Tab_Leadset02[[Leadset]:[UserWSText10]]").Select
    Selection.Copy
       
    'vai su foglio Export Leadset & incolla
    Sheets("Export_leadset").Select
    Range("A2").Select
    Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False

    Worksheets("Export_leadset").Copy
    Application.DisplayAlerts = False
   
    With ActiveWorkbook
        .SaveAs fold & fname, FileFormat:=xlCSV, Local:=True
        .Close False
    End With

'Cleanup:        Application.ScreenUpdating = True:  Application.EnableEvents = True: Application.DisplayAlerts = True

    'posizione cursore foglio Export_leadset
    Range("A1").Select
   
    'vai su foglio Maschera
    Sheets("Maschera").Select
    Range("A16").Select
   
    MsgBox "Leadset generati"
   
End Sub



Anthony47 ha scritto:Mi viene in mente che potrebbe essere errata l'ipotesi che il desktop sia nella posizione descritta; prova a sostituire la riga
Dim fold As String: fold = "C:\Users\*********\Desktop\" con
Codice: Seleziona tutto
Dim fold As String
fold = CreateObject("WScript.Shell").Specialfolders("Desktop") & "\"

Sconsiglio inoltre l'uso di Application.DisplayAlerts = False dall'inizio alla fine, perche' potrebbe mascherare warning magari utili. Mettilo solo in questa posizione:
Codice: Seleziona tutto
   '
    Worksheets("Export_leadset").Copy
    Application.DisplayAlerts = False       '≪< QUESTA posizione
    With ActiveWorkbook
    '


Ciao
oz85
Utente Junior
 
Post: 88
Iscritto il: 26/03/18 14:35

Re: Errore di accesso al percorso file macro esporta CSV

Postdi Anthony47 » 16/12/18 22:48

Mah, come ulteriore prova potresti inserire prima di With ActiveWorkbook il set del drive su C (sempre assumendo che il desktop sia realmente su C), tramite l'istruzione:
Codice: Seleziona tutto
ChDrive "C"


Se continua a malfunzionare allora andrebbe debuggata al momento dell'esecuzione; metti un break su Worksheets("Export_leadset").Copy ed elimina momentaneamente la Application.DisplayAlerts = False; avvia la macro e, quando si ferma sul break, esegui le singole istruzioni successive (tasto F8) e controlla il risultato. Quando scoprirai quale istruzione produce un esito inaspettato probabilmente sara' evidente come rimediare. Comunque pubblica il "diario" del debugging.

Ciao
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 16511
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Errore di accesso al percorso file macro esporta CSV

Postdi oz85 » 18/12/18 19:48

Ciao Anthony, prova fatta, continua a dare errore. Sotto riporto gli errori e la riga d'errore.
Continua a dare errore sul metodo copy. Oggi con un aiuto un pò più tecnico e modificando il codice (inserito il codice Modificato), non ricevo errori ma non è esattamente quello che voglio (vedi error#3). In pratica con quest'ultimo non ho errori ma avviene così il salvataggio del file csv dell'intero modulo, apparentemente, salvando il file Leadset_codice sul desktop. Sono però costretto a chiudere il Modulo che contiene la macro che a quel punto è diventato il file csv sul desktop. Morale: Ho il file csv ma per continuare ad utilizzare il Modulo originale sono comunque costretto a riaprire il file. Inoltre se non chiudo il file che visualizzo subito dopo la macro (Leadset_codice), continuo a visualizzare il nome corretto del file con i dati del foglio corrente, ma allo stesso tempo tutti gli altri Fogli del file che non vengono realmente salvati. Spero di aver reso un minimo l'idea.

• error#1
Immagine

• error#2
Immagine

• Riga d'errore:
Worksheets("Export_leadset").Copy

Codice: Seleziona tutto
Sub pcfacile()
 
 '   Application.ScreenUpdating = False:  Application.EnableEvents = False:  Application.DisplayAlerts = False
'    On Error GoTo Cleanup

    codicesap = Sheets("Maschera").Range("B17").Value
    Dim fname  As String: fname = "Leadset_" & codicesap & ".csv"
    Dim fold As String
    fold = CreateObject("WScript.Shell").Specialfolders("Desktop") & "\"
 
    'vai su foglio Export Leadset e cancella valori precedenti
    Sheets("Export_leadset").Select
    'cancella contenuto foglio
    Range("A2:GH1500").Select
    Selection.ClearContents
   
    'vai su foglio Leadset02
    Sheets("Leadset02").Select
    'smonta filtri
    Range("Tab_Leadset02[[#Headers],[ID WIRE PAR.]]").Select
    Selection.AutoFilter
    Selection.AutoFilter
    'filtra vuote
    ActiveSheet.ListObjects("Tab_Leadset02").Range.AutoFilter Field:=3, Criteria1:= _
        "=", Operator:=xlAnd
   
    'copia selezione
    Range("Tab_Leadset02[[Leadset]:[UserWSText10]]").Select
    Selection.Copy
       
    'vai su foglio Export Leadset & incolla
    Sheets("Export_leadset").Select
    Range("A2").Select
    Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
     

   
    'Set twb = ThisWorkbook.Sheets("export_leadset") ' Workbooks("MCO • Modulo Creazione Ordini.xlsm").Activate
    Worksheets("Export_leadset").Copy
   
 '   With ActiveWorkbook
 '       .SaveAs fold & fname, FileFormat:=xlCSV, Local:=True
 '       .Close False
 '   End With



'Cleanup:        Application.ScreenUpdating = True:  Application.EnableEvents = True: Application.DisplayAlerts = True

    'posizione cursore foglio Export_leadset
'    Range("A1").Select
   
    'vai su foglio Maschera
'    Sheets("Maschera").Select
'    Range("A16").Select
   
'    MsgBox "Leadset generati"



End Sub


• Codice modificato
Codice: Seleziona tutto
Worksheets("Sheet1").Select
With ActiveWorkbook
     .SaveAs Filename:=Environ("TEMP") & "\New1.xlsx", FileFormat:=xlOpenXMLWorkbook
     .Close SaveChanges:=False
End With


• error#3
Immagine


Anthony47 ha scritto:Mah, come ulteriore prova potresti inserire prima di With ActiveWorkbook il set del drive su C (sempre assumendo che il desktop sia realmente su C), tramite l'istruzione:
Codice: Seleziona tutto
ChDrive "C"


Se continua a malfunzionare allora andrebbe debuggata al momento dell'esecuzione; metti un break su Worksheets("Export_leadset").Copy ed elimina momentaneamente la Application.DisplayAlerts = False; avvia la macro e, quando si ferma sul break, esegui le singole istruzioni successive (tasto F8) e controlla il risultato. Quando scoprirai quale istruzione produce un esito inaspettato probabilmente sara' evidente come rimediare. Comunque pubblica il "diario" del debugging.

Ciao
oz85
Utente Junior
 
Post: 88
Iscritto il: 26/03/18 14:35

Re: Errore di accesso al percorso file macro esporta CSV

Postdi Anthony47 » 19/12/18 19:18

Mi sono perso…
Ciao Anthony, prova fatta, continua a dare errore. Sotto riporto gli errori e la riga d'errore.
Continua a dare errore sul metodo copy.
Veramente e' la prima volta che parli di errore sul metodo copy…

Quale e' l'errore #3? Cosa intendi per "Modulo"?
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 16511
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Errore di accesso al percorso file macro esporta CSV

Postdi oz85 » 21/12/18 21:21

Ciao Anthony.

Senza polemica, ma solo per entrare meglio nella soluzione, l'errore sul metodo copy l'ho trattato nel post del 16/12 quando dicevo nell'edit: "Aggiungo che quando faccio partire la macro ricevo dopo il primo errore del file tmp, anche quello relativo al metodo copy per il range "Export_leadset". "
Per Modulo, chiedo scusa per non averlo specificato prima, indico il file nel quale è contenuto il codice vba che mi permette l'importazione del primo file excel e l'altro codice che ne permette l'esportazione in formato csv.

Il codice che mi permette di evitare l'errore in realtà apparentemente, salva il Modulo stesso completo di tutti i fogli in formato csv, poi, una volta chiuso e riaperto, noto che nulla è cambiato ed in più ho il file csv corretto salvato sul desktop.

Il problema in questo caso è che non posso continuare a tenere aperto ed utilizzare il Modulo in quanto lo visualizzo con formato csv e vedo come il nome (screen errore 3) è variato in Leadset_compilare, che è il nome del file csv.

Penso pertanto, che il problema nella prima parte del codice da me postato, sia che il codice al comando Copy, sia ancora nell'altro Workbook che ho chiuso (parlo del primo file excel che importo) e quindi mi restituisce errore. Allo stesso tempo le ho provate tutte per far puntare il Copy sul Modulo, ma invano. Probabilmente sbaglio essendo neofita, chiedo a te se può essere la ragione dell'errore e nel caso come poter ovviare.

Grazie!


#errore 3
Immagine

https://postimg.cc/bZ6WgVHh


Anthony47 ha scritto:Mi sono perso…
Ciao Anthony, prova fatta, continua a dare errore. Sotto riporto gli errori e la riga d'errore.
Continua a dare errore sul metodo copy.
Veramente e' la prima volta che parli di errore sul metodo copy…

Quale e' l'errore #3? Cosa intendi per "Modulo"?
oz85
Utente Junior
 
Post: 88
Iscritto il: 26/03/18 14:35

Re: Errore di accesso al percorso file macro esporta CSV

Postdi Anthony47 » 21/12/18 23:12

Hummm…
Se non sbaglio era tutto cominciato quando avevi trasferito qualcosa su un disco di rete.
Ora poiche' faccio fatica a seguirti, se ripristini la situazione che avevi "prima" (e quindi eviti di lavorare su un disco di rete) non dovresti risolvere tutto?

Guardando in giro sulla base dei tuoi sintomi si leggono situazioni strane:
-qualcuno ha individuato il problema nell'antivirus: prova a disabilitare per 10 minuti la protezione in real time sulla lettura /scrittura di file, e verifica la macro come si comporta
-microsoft dice che potrebbe dipendere dal fatto che dopo aver fatto Incolla /incollaSpeciale e prima di fare Worksheets("Export_leadset").Copy non e' stato fatto un salvataggio: quindi prova a inserire subito prima della ".copy" che genera l'errore una riga col comando ActiveWorkbook.Save
Insomma qualcosa come:
Codice: Seleziona tutto
'Altro codice
'
'copia selezione
 Range("Tab_Leadset02[[Leadset]:[UserWSText10]]").Select
 Selection.Copy
   
 'vai su foglio Export Leadset & incolla
 Sheets("Export_leadset").Select
 Range("A2").Select
 Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:=xlNone, SkipBlanks _
     :=False, Transpose:=False
 
 ActiveWorkbook.Save                '<<<< Sugg Microsoft
 Worksheets("Export_leadset").Copy
 With ActiveWorkbook                'Salva foglio come CSV
     .SaveAs fold & fname, FileFormat:=xlCSV, Local:=True
     .Close False
 End With
'
'altro codice...


Inoltre il codice della macro che usi deve trovarsi in un Modulo standard del file in cui inizialmente importi e da cui poi vuoi esportare quel foglio in formato csv, in modo che la macro si possa completare regolarmente.

L'immagine dell'errore #3 l'avevo vista, ma non capisco quale sia la cosa di quell'immagine che e' erronea.

Ciao
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 16511
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Errore di accesso al percorso file macro esporta CSV

Postdi oz85 » 23/12/18 14:34

Allora cerco di spiegarti per punti:

• Il Modulo, cioè il file che contiene le macro e che importa un file xls, genera l'errore sull'esportazione di un file in csv, quando importo da un percorso di rete e non quando importo dal desktop. Se evito di importare dalla rete quindi si, risolvo, ma sarebbe un passaggio in più copiare il file sul desktop, importare e poi cancellare il file di copia. Se possibile risolvere sarebbe meglio altrimenti mi adatterò;

• Il problema dell'antivirus l'ho letto anche io ma non ho la possibilità di disattivare Sophos in quanto non Admin della rete. Potrebbe essere quello l'errore ma sembra comunque strano perchè non ho errori di lockdown cosa che ho invece quando tento di lanciare Script VBS direttamente da un file excel anzichè il classico click sul file stesso;

• Sul ActiveWorkbook.Save provo e aggiorno se risolvo; → vedi Edit

• L'errore 3 avviene quando utilizzo il codice "Modificato" che allego in questo post. Quale sarebbe l'errore? in pratica l'esportazione del file csv avviene correttamente ma allo stesso tempo, il Modulo che ha nome: "-MOC", lo visualizzo, dopo quest'esportazione, con il nome: "Leadset_compilare" che è lo stesso nome del file csv salvato sul desktop. Sembrerebbe quindi che non è stata creta una copia del file con il solo foglio interessato all'esportazione, ma lo stesso Modulo si è salvato con altro nome e altro formato (da xlsm a csv). Se chiudo e riapro il Modulo, tutto è ok, stessa cosa del file csv salvato sul desktop. Una volta aperto contiene correttamente il Foglio interessato. Insomma funziona tutto ma comunque sono costretto a chiudere e riaprire il Modulo dopo aver generato l'esportazione.

Spero che abbia chiarito la faccenda. Grazie!

EDIT:
Anche inserendo il comando ActiveWorkbook.Save nel codice che importa il file xls, quando tento l'esportazione, ho l'errore del file temp.

Codice: Seleziona tutto
Sub Import_DT0()
   
    'Application.ScreenUpdating = True:  Application.EnableEvents = True:  Application.DisplayAlerts = True
    'On Error GoTo errore
   
    'cancella valori Maschera
    'Range("B16:B20").Value = "compilare"
   
    'vai sul foglio DT0 e dividi celle e cancella
    Sheets("DT0").Select
    Columns("A:BO").Select
    Range("A600").Activate
    Selection.UnMerge
    Selection.ClearContents
   
    'cancella Preparazioni
    Range("BQ8:BR1007").Select
    Selection.ClearContents
    Range("BQ7").Select
   
   
    'Scegli file e Apri:
    fname = Application.GetOpenFilename("Excel Files (*.xls*), *.xls*")
'errore:
'    Sheets("maschera").Select
'    Range("D1").Select
'    Exit Sub

    'Application.ScreenUpdating = True
    'If fName = False Then
    'Exit Sub
    'End If

    Application.ScreenUpdating = False:  Application.EnableEvents = False:  Application.DisplayAlerts = False
    Set myBook = Workbooks.Open(fname)
    'Import:
    Sheets("Fili").Select
    'Range("A1:BO1000").Copy
    Columns("A:BO").Select
    Selection.Copy
   
    ThisWorkbook.Activate
    Sheets("DT0").Select
    'Columns("A:BO").Select
    'Columns("A:A").Select
    Columns("A:BO").Select     'PasteSpecial xlPasteValues
'    Range("A1").Select
    ActiveSheet.Paste
'    Range("A7:B7").Select
   
    'colora di bianco le colonne
    Columns("A:BO").Select
    Range("A572").Activate
    With Selection.Interior
        .Pattern = xlNone
        .TintAndShade = 0
        .PatternTintAndShade = 0
    End With
    Range("A7:B7").Select
 
    'Cancella dati copiati così da evitare fastidioso msg Microsoft
    Application.CutCopyMode = False
   
    'Chiudi secondo file:
    myBook.Close False
   
    ActiveWorkbook.Save
       
    Application.ScreenUpdating = True:  Application.EnableEvents = True:  Application.DisplayAlerts = True
    'Scrive il valore P/N SAP CABL. x DISTINTA A
    'Sheets("CAVI").Select
    'iText = InputBox("P/N SAP CABLAGGIO")
    'Cells(5, 41).Value = iText
   
    'Scrive il valore LOTTO x DISTINTA A
    'iText = InputBox("LOTTO TAGLIO")
    'Cells(5, 47).Value = iText
   
    'Range("BF5").Select
   

   
End Sub


Codice "Modificato"
Codice: Seleziona tutto
Sub pcfacile()
 
 '   Application.ScreenUpdating = False:  Application.EnableEvents = False:  Application.DisplayAlerts = False
'    On Error GoTo Cleanup

    codicesap = Sheets("Maschera").Range("B17").Value
    Dim fname  As String: fname = "Leadset_" & codicesap & ".csv"
    Dim fold As String
    fold = CreateObject("WScript.Shell").Specialfolders("Desktop") & "\"
 
    'vai su foglio Export Leadset e cancella valori precedenti
    Sheets("Export_leadset").Select
    'cancella contenuto foglio
    Range("A2:GH1500").Select
    Selection.ClearContents
   
    'vai su foglio Leadset02
    Sheets("Leadset02").Select
    'smonta filtri
    Range("Tab_Leadset02[[#Headers],[ID WIRE PAR.]]").Select
    Selection.AutoFilter
    Selection.AutoFilter
    'filtra vuote
    ActiveSheet.ListObjects("Tab_Leadset02").Range.AutoFilter Field:=3, Criteria1:= _
        "=", Operator:=xlAnd
   
    'copia selezione
    Range("Tab_Leadset02[[Leadset]:[UserWSText10]]").Select
    Selection.Copy
       
    'vai su foglio Export Leadset & incolla
    Sheets("Export_leadset").Select
    Range("A2").Select
    Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
     

   
    'Set twb = ThisWorkbook.Sheets("export_leadset") ' Workbooks("MCO • Modulo Creazione Ordini.xlsm").Activate
   Worksheets("export_leadset").Select
   With ActiveWorkbook
           .SaveAs Filename:=Environ("TEMP") & "\New1.xlsx", FileFormat:=xlOpenXMLWorkbook
           .Close SaveChanges:=False
   End With


'Cleanup:        Application.ScreenUpdating = True:  Application.EnableEvents = True: Application.DisplayAlerts = True

    'posizione cursore foglio Export_leadset
'    Range("A1").Select
   
    'vai su foglio Maschera
'    Sheets("Maschera").Select
'    Range("A16").Select
   
'    MsgBox "Leadset generati"



End Sub


oz85 ha scritto:Ciao Anthony.

Senza polemica, ma solo per entrare meglio nella soluzione, l'errore sul metodo copy l'ho trattato nel post del 16/12 quando dicevo nell'edit: "Aggiungo che quando faccio partire la macro ricevo dopo il primo errore del file tmp, anche quello relativo al metodo copy per il range "Export_leadset". "
Per Modulo, chiedo scusa per non averlo specificato prima, indico il file nel quale è contenuto il codice vba che mi permette l'importazione del primo file excel e l'altro codice che ne permette l'esportazione in formato csv.

Il codice che mi permette di evitare l'errore in realtà apparentemente, salva il Modulo stesso completo di tutti i fogli in formato csv, poi, una volta chiuso e riaperto, noto che nulla è cambiato ed in più ho il file csv corretto salvato sul desktop.

Il problema in questo caso è che non posso continuare a tenere aperto ed utilizzare il Modulo in quanto lo visualizzo con formato csv e vedo come il nome (screen errore 3) è variato in Leadset_compilare, che è il nome del file csv.

Penso pertanto, che il problema nella prima parte del codice da me postato, sia che il codice al comando Copy, sia ancora nell'altro Workbook che ho chiuso (parlo del primo file excel che importo) e quindi mi restituisce errore. Allo stesso tempo le ho provate tutte per far puntare il Copy sul Modulo, ma invano. Probabilmente sbaglio essendo neofita, chiedo a te se può essere la ragione dell'errore e nel caso come poter ovviare.

Grazie!


#errore 3
Immagine

https://postimg.cc/bZ6WgVHh


Anthony47 ha scritto:Mi sono perso…
Ciao Anthony, prova fatta, continua a dare errore. Sotto riporto gli errori e la riga d'errore.
Continua a dare errore sul metodo copy.
Veramente e' la prima volta che parli di errore sul metodo copy…

Quale e' l'errore #3? Cosa intendi per "Modulo"?
oz85
Utente Junior
 
Post: 88
Iscritto il: 26/03/18 14:35

Re: Errore di accesso al percorso file macro esporta CSV

Postdi Anthony47 » 23/12/18 18:52

Ho dimenticato di dire che l'antivirus veniva incolpato dell'errore sul file tmp, mentre la .Save doveva recuperare l'errore sul .Copy

Ti avevo chiesto di fare un debug locale (il contesto di prova ce l'hai solo tu) e di pubblicare il diario del debugging; non ho capito se hai potuto farlo e con che esito.
Rileggendo velocemente i messaggi non ho nemmeno trovato quale e' l'istruzione che provoca l'errore del file Tmp.

La penultima cosa che mi viene in mente e' che la macro di importazione (quella che prende il file dal disco di rete, vero?) ti lasci come drive di default la rete, e tu non hai i permessi di scrittura su quel drive; potresti quindi inserire l'istruzione ChDrive "C" in fondo alla Sub import_data, subito prima di End Sub.

Ciao
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 16511
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Errore di accesso al percorso file macro esporta CSV

Postdi oz85 » 18/01/19 11:23

Dopo tanto tempo torno con la soluzione! grazie davvero per l'aiuto ed il supporto Anthony.

Mi vergogno quasi a dirlo ma.... l'errore che generava il tutto era il fatto che utilizzavo un carattere particolare del codice Ascii... ovvero il simbolo: "→".

Ho rinominato con il semplice trattino e tutto va ora.

Infine c'è un lieto fine! :D
oz85
Utente Junior
 
Post: 88
Iscritto il: 26/03/18 14:35


Torna a Applicazioni Office Windows


Topic correlati a "Errore di accesso al percorso file macro esporta CSV":

Errore 0.000000d
Autore: Eiannece
Forum: Software Windows
Risposte: 0

Chi c’è in linea

Visitano il forum: Nessuno e 9 ospiti