+ 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
    Phil_cattivocarattere non è in linea Topo di biblioteca
    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