C'est en quelque sorte une sorte de question «quelle direction est la meilleure». J'ai un fichier .CSV qui est dans un format moins qu'idéal. Je vais schématiser le fichier ci-dessous pour que vous puissiez voir de quoi je parle. Ce fichier me est fourni par un vendeur qui devrait savoir mieux ... (Google, tousse, bidouille, tousse). Quelle est la meilleure façon d'importer seulement table2 à partir de ces données en utilisant VBA?Comment importer des données à partir d'un CSV falsifié à l'aide de VBA
Je vais énumérer les méthodes que j'ai essayées après le diagramme.
fichier .csv ressemble à ceci si ouvert:
Title Cell
File Info Cell
Time Date Cell
Data1, Data 2
Data1, Data 2
Data1, Data 2
Data1, Data 2
Data1, Data 2
Data1, Data 2
Data1, Data 2
Data1, Data 2
Data1, Data 2
Data1, Data 2
Data1, Data 2
Data1, Data 2
Data1, Data 2
Data1, Data 2
....(continues for around 800 rows)
Second Table Title Cell
Col1Title, Col2Title, ColTitle, Col4Title ....(continues for around 50 columns)
Data 3, Data4, Data 5, Data6 ....(continues for around 50 columns)
Data 3, Data4, Data 5, Data6 ....(continues for around 50 columns)
Data 3, Data4, Data 5, Data6 ....(continues for around 50 columns)
Data 3, Data4, Data 5, Data6 ....(continues for around 50 columns)
Data 3, Data4, Data 5, Data6 ....(continues for around 50 columns)
Data 3, Data4, Data 5, Data6 ....(continues for around 50 columns)
Data 3, Data4, Data 5, Data6 ....(continues for around 50 columns)
Data 3, Data4, Data 5, Data6 ....(continues for around 50 columns)
...(Continues for around 1500 rows)
End of CSV
J'ai jusqu'ici tenté de l'objet ADODB mais qui repose sur de requête SQL (connaissances à mon limitée SQL) suppose que les données sont formated correctement comme une table - dont il n'est pas ici.
J'ai aussi essayé de lire le fichier ligne par ligne.
Je pourrais forcer l'une ou l'autre de ces deux solutions à fonctionner, mais c'est assez compliqué dans les deux sens. Je me sens comme il doit y avoir une façon propre de faire cela? Est-ce que n'importe qui peut suggérer une meilleure approche ou une approche efficace aux méthodes que j'ai déjà essayées?
Merci d'avance.
addendum
@ user3724 ce que j'ai essayé sur la ligne par l'approche de la ligne:
Open strFile For Input As #1
countLine = 0
Do Until EOF(1)
Line Input #1, LineFromFile
(Increment countLine)
(Break line into array)
(strComp() each element with the value for title of Table 2)
(When strComp() returns true return countLine as upperValue)
(Exit Loop)
Loop
countLine = 0
Do Until EOF(1)
Line Input #1, LineFromFile
(Increment countLine)
If countline is >= uppervalue
(Parse line and return it to target row of target worksheet)
End If
Loop
Quand je code cette chose sur c'est un gâchis lent - beaucoup de if déclarations et boucles dans les boucles. @ user3724, pourriez-vous l'examiner en fonction de votre expérience?
Importer où désolé? Serveur SQL? – Gareth
Ouvrez le fichier dans Excel et analyser les données de la feuille? –
J'ai fait quelques modifications. Je veux importer uniquement Table2 à partir de ces données dans une feuille de calcul Excel - en utilisant bien sûr VBA. –