Acquista i nostri libri consigliati su Amazon.it
+ Rispondi al messaggio
Visualizzazione dei risultati da 1 a 9 su 9

apertura CSV da vba non da esisto corretto

  1. #1
    L'avatar di Elimar
    Elimar non è in linea Scribacchino
    Ciao a tutti,
    sono alle prese con un problema di apertura CSV da codice VBA.
    Aprendo il file con excel, mi fa restituisce i dati in modo corretto, cioè laddove è presente il ';' cambia cella.

    Mentre se vado ad aprire il file da codice il risultato che mi da è il seguente:
    105; | Pippo;
    anziché 105 | Pippo

    il codice è il seguente:
    Option Explicit
    Public bEstrai As Byte
    Dim bFile As Byte
    Dim strFileName As String
    Dim strOrigine As String
    Dim strFonte As String
    Dim uR As Long
    
    
    Sub auto_open()
      UserForm1.Show
    End Sub
    
    Sub openFile()
      strOrigine = ActiveWorkbook.Name
      Range("A2:S1000000").Select
      Selection.ClearContents
      Range("A2").Select
    
      Application.DisplayAlerts = False
      For bFile = 1 To bEstrai
        With Application.FileDialog(msoFileDialogFilePicker)
          .InitialFileName = ActiveWorkbook.Path
          .AllowMultiSelect = False
          .Filters.Clear
          .Filters.Add "File csv", "*.csv"
          .FilterIndex = 1
          .InitialView = msoFileDialogViewList
          .Title = "Seleziona il file che vuoi elaborare"
          .ButtonName = "OK Vai!!"
          .Show
          If .SelectedItems.Count > 0 Then strFileName = .SelectedItems(1)
        End With
        Workbooks.Open strFileName
            Workbooks.Open Filename:= _
            "I:\Sviluppo\Piattaforma Unica Supporti Operativi\Input Database\INC000005322376_COMMIS_MPS.csv"
    
        strFonte = ActiveWorkbook.Name
        Range(Cells(7, 1), Cells(7, 1).SpecialCells(xlLastCell)).Copy
        Windows(strOrigine).Activate
        ActiveSheet.Paste
        Range("A1").End(xlDown).Offset(1, 0).Select
        Workbooks(strFonte).Close SaveChanges:=False
      Next bFile
    End Sub
    
    dove sbaglio? qualcuno può indirizzarmi?

    grazie a tutti e buona giornata
    ℹ️ Leggi di più su Elimar ...

  2. #2
    L'avatar di @Alex
    @Alex non è in linea Moderatore Globale
    Il Metodo Open membro di WorkBooks, espone parecchi parametri, tra cui "Delimiter":
    Function Open(Filename As String, [UpdateLinks], _
                   [ReadOnly], [Format], _
                   [Password], [WriteResPassword], _ 
                   [IgnoreReadOnlyRecommended], [Origin], _
                   [Delimiter], [Editable], _
                   [Notify], [Converter], _
                   [AddToMru], [Local], _
                   [CorruptLoad]) As Workbook
        Membro di Excel.Workbooks
    
    Prova a passare
    Delimiter:=";"
    
    Ultima modifica di @Alex; 26-03-2021 13:42 
    ℹ️ Leggi di più su @Alex ...

  3. #3
    Quote Originariamente inviato da Elimar Visualizza il messaggio
    sono alle prese con un problema di apertura CSV da codice VBA....
    dove sbaglio? qualcuno può indirizzarmi?
    Secondo me con i file csv noi paghiamo il fatto "di essere italiani". Piano, non sto dando del razzista a nessuno. E' un po' come con le date e la diversità di comportamento tra il formato che inizia con il mese (per me senza senso) con quello che inizia con il giorno (già più sensato, anche se il top è anno mese giorno, se si pensa come "un computer" )
    Butta l'occhio qui https://docs.microsoft.com/en-us/off...workbooks.open per i parametri Format e Delimiter. Prova ad esplicitare il puntoevirgola (semicolon)
    Vabbè... sono arrivato tardi.

  4. #4
    L'avatar di Elimar
    Elimar non è in linea Scribacchino
    Grazie Alex, nonostante abbia cambiato Forum, sono riuscito a "farti" lavorare per me.

    Grazie anche a te Phil
    ℹ️ Leggi di più su Elimar ...

  5. #5
    L'avatar di @Alex
    @Alex non è in linea Moderatore Globale
    Quote Originariamente inviato da Elimar Visualizza il messaggio
    Grazie Alex, nonostante abbia cambiato Forum, sono riuscito a "farti" lavorare per me.

    Grazie anche a te Phil
    L'importante è risolvere.
    ℹ️ Leggi di più su @Alex ...

  6. #6
    Sgrubak non è in linea Scribacchino
    Nota a margine: questa parte di codice non ha senso
    Range("A2:S1000000").Select
      Selection.ClearContents
      Range("A2").Select
    
    Risolvi meglio con un semplice
    Range("A2:S1000000").ClearContents
    
    La selezione delle celle è quasi sempre inutile e selezionare A2 per poi cambiare nuovamente in fondo alla macro è lavoro sprecato...

    Perché cicli enne volte, quando puoi abilitare la selezione multipla nella FileDialog?
    Se proprio vuoi aprire n volte la FiledDialog, perché non crei una sola FileDialog e non la riapri tutte le volte, invece di crearne una diversa e inizializzarla sempre con gli stessi parametri? Tipo
    Dim fd As FileDialog
    Set fd = Application.FileDialog(msoFileDialogFilePicker)
    With fd
        .InitialFileName = ActiveWorkbook.Path
          .AllowMultiSelect = False
          .Filters.Clear
          .Filters.Add "File csv", "*.csv"
          .FilterIndex = 1
          .InitialView = msoFileDialogViewList
          .Title = "Seleziona il file che vuoi elaborare"
          .ButtonName = "OK Vai!!"
    End With
    
    For i = 0 To 5
        fd.Show
        If fd.SelectedItems.Count > 0 Then MsgBox "Aperto un file"
    Next i
    
    Set fd = Nothing
    
    Sono ovviamente OT, chiedo venia...

  7. #7
    L'avatar di @Alex
    @Alex non è in linea Moderatore Globale
    Ad essere pignoli
    Dim fd As FileDialog
    Set fd = Application.FileDialog(msoFileDialogFilePicker)
    With fd
        .InitialFileName = ActiveWorkbook.Path
          .AllowMultiSelect = True
          .Filters.Clear
          .Filters.Add "File csv", "*.csv"
          .FilterIndex = 1
          .InitialView = msoFileDialogViewList
          .Title = "Seleziona il file che vuoi elaborare"
          .ButtonName = "OK Vai!!"
          
          If .Show Then
              For lngCount = 1 To .SelectedItems.Count 
                  MsgBox .SelectedItems(lngCount) 
              Next lngCount 
          End If
    End With
    Set fd = Nothing
    
    Ultima modifica di @Alex; 26-03-2021 17:42 
    ℹ️ Leggi di più su @Alex ...

  8. #8
    Sgrubak non è in linea Scribacchino
    Domanda: ma con la AllowMultiSelect a False, SelectedItems.Count non varrà soltanto 1 o 0 a seconda del fatto che sia stata effettuata una selezione o meno?

  9. #9
    L'avatar di @Alex
    @Alex non è in linea Moderatore Globale
    Quote Originariamente inviato da Sgrubak Visualizza il messaggio
    Domanda: ma con la AllowMultiSelect a False, SelectedItems.Count non varrà soltanto 1 o 0 a seconda del fatto che sia stata effettuata una selezione o meno?
    E' un refuso hai ragione... modificato.
    ℹ️ Leggi di più su @Alex ...

+ Rispondi al messaggio

Potrebbero interessarti anche ...

  1. Sovrascrivere un Recordset è Corretto ?
    Da nman nel forum Microsoft Access
    Risposte: 6
    Ultimo Post: 13-03-2016, 21:51
  2. Corretto utilizzo OptionButton
    Da genespos nel forum Microsoft Excel
    Risposte: 8
    Ultimo Post: 08-04-2014, 09:44
  3. non visualizzo il risultato corretto
    Da giangi_luca nel forum C#
    Risposte: 3
    Ultimo Post: 06-09-2009, 20:55
  4. Corretto uso di SendMessage + WM_SysKeyDown
    Da emilioded nel forum Visual Basic 6
    Risposte: 1
    Ultimo Post: 10-03-2008, 20:34
  5. Avvio Windows Xp non corretto
    Da damio nel forum Microsoft Windows
    Risposte: 12
    Ultimo Post: 26-09-2006, 10:28