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
https://postimg.cc/bZ6WgVHhAnthony47 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"?