| | Post: 15 | Registrato il: 14/10/2013
| Città: ALTAMURA | Età: 39 | Utente Junior | 2010 | | OFFLINE | |
|
09/02/2014 10:25 | |
Buongiorno, per esigenze di lavoro ho dovuto adattare un file excel, usato in azienda per riportare tutti i numeri di cellulare dei dipendenti, ottimizzato per salvarlo nel formato csv e importarlo successivamente in gmail.
Il file, che vi linko, funziona.
link: https://www.dropbox.com/s/sffhboizqh3lbmr/gmail_contatti.xlsx
Una cosa però andrebbe risolta.
Quando importo il file csv in gmail mi crea una serie di contatti con nessun dato interno.
Credo sia dovuto al fatto che nel file .xlsx nelle colonne:
-C "Phone 1 - Type"
-E "Phone 2 - Type"
-G "Phone 3 - Type"
-I "Phone 4 - Type"
-K "Phone 5 - Type"
Ho messo la formula =SE($A2<>0;"Mobile";""), cioè in pratica mi inserisce la stringa "Mobile" solo se nella cella $A2, "Given Name" c'è qualcosa.
Se potete aiutarmi a creare una macro che, prima di salvare il file nel formato .csv faccia un po' di pulizia, eliminando tutte le righe inutili, vale a dire quelle dove non c'è alcun valore nella cella $A2.
L'ideale per me sarebbe associare la macro ad un pulsante e la procedura avvenga in automatico.
Grazie
P.S.
Sull'argomento stranamente ho trovato poco in rete. |
|
| | Post: 1.940 | Registrato il: 13/03/2012
| Città: LIVORNO | Età: 78 | Utente Veteran | 2010 | | OFFLINE | |
|
09/02/2014 10:33 | |
nel tuo esempio non ci sono righe inutili, prima di salvare in csv seleziona l'area occupata, Copia, incolla speciale, valori [Modificato da patel45 09/02/2014 10:37]
----------
Win 10 - Excel 2010
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta |
| | Post: 16 | Registrato il: 14/10/2013
| Città: ALTAMURA | Età: 39 | Utente Junior | 2010 | | OFFLINE | |
|
09/02/2014 10:45 | |
Anch'io avevo visto che il file csv generato non aveva altre righe, però stranamente importando il file su gmail mi crea contatti vuoti.
patel45, 2/9/2014 10:33 AM:
nel tuo esempio non ci sono righe inutili, prima di salvare in csv seleziona l'area occupata, Copia, incolla speciale, valori
Volendo automatizzare la procedura con una macro, che faccia:
1. Copia, incolla speciale, valori delle righe con dati utili
2. generazione del file .csv
Come posso fare?
Grazie |
| | Post: 1.942 | Registrato il: 13/03/2012
| Città: LIVORNO | Età: 78 | Utente Veteran | 2010 | | OFFLINE | |
|
09/02/2014 12:30 | |
funziona come ti ho indicato ? altrimenti è inutile pensare ad una macro
----------
Win 10 - Excel 2010
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta |
| | Post: 17 | Registrato il: 14/10/2013
| Città: ALTAMURA | Età: 39 | Utente Junior | 2010 | | OFFLINE | |
|
09/02/2014 13:19 | |
Ho usato il codice seguente per risolvere quanto da me richiesto, però non mi funziona la macro per l'esportazione del foglio in csv.
Posto sotto le varie macro:
---
eliminare righe vuote
Sub eliminarighevuote()
Range("A:A").SpecialCells(xlCellTypeBlanks).EntireRow.Delete
End Sub
---
tutto maiusolo
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Value = "" Then
Exit Sub
Else
Target.Value = UCase(Target.Value) 'tutto maiuscolo
'Target.Value = LCase(Target.Value) 'tutto minuscolo
'Target.Value = Application.WorksheetFunction.Proper(Target.Value) 'iniziale maiuscola
End If
End Sub
---
esportare in csv
Sub crea_csv()
Dim MyDir As String, NomeFile As String
Dim FileExist As Boolean, ws As Worksheet
Application.ScreenUpdating = False
MyDir = ThisWorkbook.Path
NomeFile = ActiveSheet.Name
If Dir(MyDir & "" & NomeFile & ".csv") <> "" Then
Select Case MsgBox("Attenzione: esiste già un file con questo nome." _
& vbCrLf & "Vuoi sovrascrivere il file?" _
, vbYesNo Or vbExclamation Or vbDefaultButton1, "Duplicato")
Case vbNo
Exit Sub
End Select
End If
Application.DisplayAlerts = False
'Sheets(NomeFile).Copy
'With ActiveWorkbook
' .SaveAs Filename:=MyDir & "" & NomeFile & ".csv", FileFormat:=xlCSV
' .Close savechanges:=False
'End With
For Each ws In ThisWorkbook.Worksheets
ws.Copy 'creates a new workbook
With ActiveWorkbook
' .SaveAs "C:\temp\" & ws.Name & "_blah.csv", xlCSV
.SaveAs Filename:=MyDir & "" & NomeFile & ".csv", FileFormat:=xlCSV
.Close savechanges:=False
' .Close False
End With
Next ws
Application.DisplayAlerts = True
Application.ScreenUpdating = True
MsgBox "Foglio .csv creato con successo"
End Sub
---
Le prime 2 funzionano, mentre l'ultima NO.
Questo è il file
link:
https://www.dropbox.com/s/cel42c7mygj9mk4/gmail_contatti.xlsm
Ciao e grazie |
| | Post: 19 | Registrato il: 14/10/2013
| Città: ALTAMURA | Età: 39 | Utente Junior | 2010 | | OFFLINE | |
|
09/02/2014 15:15 | |
Facendo il debug del codice della 3 macro sembra andare in errore quando arriva a questa riga:
If Dir(MyDir & "" & NomeFile & ".csv") <> "" Then
Come mai? |
| | Post: 1.946 | Registrato il: 13/03/2012
| Città: LIVORNO | Età: 78 | Utente Veteran | 2010 | | OFFLINE | |
|
09/02/2014 15:51 | |
non hai risposto alla mia domanda
----------
Win 10 - Excel 2010
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta |
| | Post: 20 | Registrato il: 14/10/2013
| Città: ALTAMURA | Età: 39 | Utente Junior | 2010 | | OFFLINE | |
|
09/02/2014 16:59 | |
patel45, 2/9/2014 3:51 PM:
non hai risposto alla mia domanda
Scusami, cmq dovendo rendere il file accessibile a tutti gli impiegati dell'ufficio, che poca dimestichezza hanno con copia, incolla valori, excel e compagnia bella.
Voglio rendere il processo invisibile agli utenti ma che funzioni.
Comunque credo di essere arrivato ad una buona soluzione.
Posto il codice delle macro:
crea csv
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Cells.Count > 1 Or Target.HasFormula Then Exit Sub
On Error Resume Next
'TUTTA LA COLONNA A e B IN MAIUSCOLO
If Not Intersect(Target, Range("A:B")) Is Nothing Then
Application.EnableEvents = False
Target = UCase(Target)
Application.EnableEvents = True
End If
End Sub
Sub crea_csv()
Dim MyDir As String, NomeFile As String
Dim FileExist As Boolean
Application.ScreenUpdating = False
Application.EnableEvents = False
' cancella l'intera riga se nella colonna A non c'è scritto nulla
On Error Resume Next
Columns("A").SpecialCells(xlCellTypeBlanks).EntireRow.Delete
MyDir = ThisWorkbook.Path
NomeFile = ActiveSheet.Name
If Dir(MyDir & "\" & NomeFile & ".csv") <> "" Then
Select Case MsgBox("Attenzione: esiste già un file con questo nome." _
& vbCrLf & "Vuoi sovrascrivere il file?" _
, vbYesNo Or vbExclamation Or vbDefaultButton1, "Duplicato")
Case vbNo
Exit Sub
End Select
End If
Application.DisplayAlerts = False
With ActiveWorkbook
.SaveAs Filename:=MyDir & "\" & NomeFile & ".csv", FileFormat:=xlCSV, Local:=True
.Close savechanges:=False
End With
Application.DisplayAlerts = True
Application.ScreenUpdating = True
MsgBox "Foglio .csv creato con successo"
End Sub
L'ultima chicca sarebbe anche forzare l'inserimento NOME e COGNOME se accidentalmente uno mette solo o il NOME o il COGNOME, rispettivamente in colonna A e B.
Idee?
Ciao |
| | Post: 1.948 | Registrato il: 13/03/2012
| Città: LIVORNO | Età: 78 | Utente Veteran | 2010 | | OFFLINE | |
|
09/02/2014 17:41 | |
ti ringrazio molto per la considerazione che mi dai, ti ho chiesto se copiando e incollando i valori funziona e non mi hai ancora risposto, che ti cosa dire SI o NO ?
----------
Win 10 - Excel 2010
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta |
| | Post: 22 | Registrato il: 14/10/2013
| Città: ALTAMURA | Età: 39 | Utente Junior | 2010 | | OFFLINE | |
|
09/02/2014 17:54 | |
patel45, 2/9/2014 5:41 PM:
ti ringrazio molto per la considerazione che mi dai, ti ho chiesto se copiando e incollando i valori funziona e non mi hai ancora risposto, che ti cosa dire SI o NO ?
ok, ho fatto il copia delle prime 3 righe, quelle con i valori, poi ho incollato solo i valori partendo da A2; ho importato il file csv in gmail ma i contatti con i valori vuoti sono rimasti, quindi copia/incolla_valori non funziona
Ciao |
| | Post: 24 | Registrato il: 14/10/2013
| Città: ALTAMURA | Età: 39 | Utente Junior | 2010 | | OFFLINE | |
|
10/02/2014 13:39 | |
CVD in ufficio mi richiedono anche la possibilità di esportare i contatti in un formato idoneo a Outlook.
Ho visto che il programma di posta accetta il formato .vcf e .pst
Qual è il migliore?
Inoltre qualcuno ha un pezzo di codice vb che faccia l'esportazione dei contatti da excel?
Grazie |
|
|