Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13
  1. #1
    Utente di HTML.it L'avatar di Bugu
    Registrato dal
    Nov 2007
    Messaggi
    871

    [VBA] Controllo nomi dei campi di un file Excel esterno su importazione

    Ciao a tutti,
    spero mi possiate aiutare a risolvere questo. Ho provato diversi sistemi, ma troppo incasinati e a forza di girarci intorno mi sono incasinato...

    Ho un'applicazione in VBA che uso per incrociare dei dati.
    Per farlo, importo delle tabelle xls che mi vengono fornite di volta in volta, ma spesso accade che chi me le fornisce sbagli ed ometta dei campi, oppure che nomini dei campi in modo leggermente differente dal solito.
    L'aiuto di cui avrei bisogno sarebbe sapere come fare (e se è possibile) interrogare questa tabella xls prima di importare, e verificare che sia il numero ed i nomi dei campi corrispondano a quelli che mi aspetto.
    Grazie
    Linux User
    ---------
    Solo due cose sono infinite: l'universo e la stupidità umana, e non sono tanto sicuro della prima.

  2. #2
    Utente di HTML.it L'avatar di patel
    Registrato dal
    Jan 2008
    Messaggi
    1,995
    Se non mostri il codice che usi sarà difficile aiutarti

  3. #3
    Utente di HTML.it L'avatar di Bugu
    Registrato dal
    Nov 2007
    Messaggi
    871
    Uso un codice che mi permette di importare il file xls e solo in seguito, dall’interno io vado a fare un controllo sui campi.
    Non conosco il modo di controllare “dall’esterno”. Era questa la mia domanda...
    Linux User
    ---------
    Solo due cose sono infinite: l'universo e la stupidità umana, e non sono tanto sicuro della prima.

  4. #4
    Utente di HTML.it L'avatar di patel
    Registrato dal
    Jan 2008
    Messaggi
    1,995
    e la mia è vedere come fai l'importazione, ma se è un segreto dormirò ugualmente
    Ultima modifica di patel; 16-02-2019 a 21:49

  5. #5
    Utente di HTML.it L'avatar di Bugu
    Registrato dal
    Nov 2007
    Messaggi
    871
    L'importazione la faccio cosi:

    codice:
    Public Function impTable()
    Dim f As Object
        Dim strFile As String
        Dim strFolder As String
        Dim varItem As Variant
    
    
        Set f = Application.FileDialog(3)
        f.AllowMultiSelect = False
        If f.Show Then
            For Each varItem In f.SelectedItems
                strFile = Dir(varItem)
                strFolder = Left(varItem, Len(varItem) - Len(strFile))
                
    DoCmd.DeleteObject acTable, "CompareTable1"
    ' Import data from Excel using a static range
    DoCmd.TransferSpreadsheet acLink, acSpreadsheetTypeExcel12, "CompareTable1", strFolder & strFile, True, "A1:Z1"
    checkTable
    Next
    End If
        Set f = Nothing
    End Function
    
    
    Public Function checkTable()
    Dim db As DAO.Database
    Dim tbl1 As DAO.TableDef
    Dim tbl2 As DAO.TableDef
    Dim intLoop As Integer
    Dim strMessage As String
      
      Set db = CurrentDb
      Set tbl1 = db.TableDefs("Table1")
      Set tbl2 = db.TableDefs("CompareTable1")
        
      If tbl1.Fields.Count = tbl2.Fields.Count Then
      MsgBox "ok"
       
      Else
        strMessage = tbl1.Name & " has " & tbl1.Fields.Count & " fields, while " & _
          tbl2.Name & " has " & tbl2.Fields.Count & " fields." & vbCrLf
      End If
      
      
      If tbl1.Fields.Count > tbl2.Fields.Count Then
      action1
      End If
      
      If tbl1.Fields.Count < tbl2.Fields.Count Then
      action2
      End If
      
      If tbl1.Fields.Count = tbl2.Fields.Count Then
      action3
          End If
      
      
      Set tbl2 = Nothing
      Set tbl1 = Nothing
      Set db = Nothing
    End Function
    In questo modo importo una tabella xls esterna e faccio la comparazione dei suoi campi con la mia Table1 (che è quella che contiene i campi giusti).
    Quello che devo ottenere è una funzione che mi dica se la tabella xls esterna è identica alla mia Table1 come struttura (nome e numero di campi).
    A seconda del risultato eseguo un'azione.
    Credo sia un metodo piuttosto macchinoso e mi obbliga ad importare la tabella, mentre io vorrei qualcosa di piu snello che mi consenta di controllare i campi da fuori senza importare.
    E' possibile?
    Ultima modifica di Bugu; 18-02-2019 a 10:21
    Linux User
    ---------
    Solo due cose sono infinite: l'universo e la stupidità umana, e non sono tanto sicuro della prima.

  6. #6
    Utente di HTML.it L'avatar di patel
    Registrato dal
    Jan 2008
    Messaggi
    1,995
    Ma tu stai lavorando con Access o con Excel ?

  7. #7
    Utente di HTML.it L'avatar di gibra
    Registrato dal
    Apr 2008
    residenza
    Italy
    Messaggi
    4,244
    Prima di importare devi accedere al file Excel, leggere le intestazioni e confrontarle con le tue.
    Questo tutorial ti sarà molto utile, studiatelo con attenzione:
    Tutorial/FAQ: How to Automate Excel from VB6 (or VB5/VBA)
    http://www.vbforums.com/showthread.p...6-(or-VB5-VBA)

  8. #8
    Utente di HTML.it L'avatar di Bugu
    Registrato dal
    Nov 2007
    Messaggi
    871
    Quote Originariamente inviata da patel Visualizza il messaggio
    Ma tu stai lavorando con Access o con Excel ?
    io sto lavorando con Access, ma la tabella che mi viene fornita è in Excel.
    Quindi prima di importarla in Access vorrei verificare che il formato corrisponda a quello che mi aspetto
    Ultima modifica di Bugu; 18-02-2019 a 11:02
    Linux User
    ---------
    Solo due cose sono infinite: l'universo e la stupidità umana, e non sono tanto sicuro della prima.

  9. #9
    Utente di HTML.it L'avatar di Bugu
    Registrato dal
    Nov 2007
    Messaggi
    871
    Quote Originariamente inviata da gibra Visualizza il messaggio
    Prima di importare devi accedere al file Excel, leggere le intestazioni e confrontarle con le tue.
    Si, è esattamente quello di cui ho bisogno.
    Con la funzione che ho riportato sopra io posso fare il controllo solo dopo aver importato, e non mi piace...
    Linux User
    ---------
    Solo due cose sono infinite: l'universo e la stupidità umana, e non sono tanto sicuro della prima.

  10. #10
    Utente di HTML.it L'avatar di patel
    Registrato dal
    Jan 2008
    Messaggi
    1,995
    Quote Originariamente inviata da Bugu Visualizza il messaggio
    io sto lavorando con Access, ma la tabella che mi viene fornita è in Excel.
    Non potevi dirlo subito nel primo post ? non avrei risposto

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.