2010-01-30 2 views
0

J'ai un fichier avec un groupe de nombres en colonnes. Ces nombres sont séparés par un nombre variable d'espaces. Je veux sauter la première ligne et obtenir toutes les autres lignes et séparer chaque nombre sur la ligne. Enfin, je veux écrire chaque nombre dans Excel. J'ai été en mesure d'obtenir les lignes et de les écrire sur Excel, mais je ne peux pas séparer chaque numéro (j'obtiens la ligne entière comme une chaîne). Est-ce que n'importe quel corps sait comment diviser une chaîne qui a un nombre variable d'espaces?Division d'une chaîne avec un nombre variable d'espaces VBA

Voici mon code.

Sub Test() 

    r = 0 

    With New Scripting.FileSystemObject 
     With .OpenTextFile("C:\Users\User\Desktop\File.tab", ForReading) 
      If Not .AtEndOfStream Then .SkipLine 
      Do Until .AtEndOfStream 
       ActiveCell.Offset(r, 0) = Split(.ReadLine, vbCrLf) 
       r = r + 1 
      Loop 
     End With 
    End With 
End Sub 

Répondre

3

Si vous utilisez la fonction trim de feuille de calcul Excel en place de la fonction VBA Excel puis va supprimer plusieurs espaces dans une cellule (non seulement de la extrémités gauche et droite). Quelque chose comme le ci-dessous devrait résoudre le problème. Je crains de ne pas l'avoir testé car je n'ai pas de copie d'Excel à portée de main.


Sub Test() 

Dim splitValues As Variant 
Dim i As Long 

r = 0 

With New Scripting.FileSystemObject 
    With .OpenTextFile("C:\Users\User\Desktop\File.tab", ForReading) 
     If Not .AtEndOfStream Then .SkipLine 
     Do Until .AtEndOfStream 
      ActiveCell.Offset(r, 0) = Split(.ReadLine, vbCrLf) 
     Application.Trim(ActiveCell.Offset(r, 0)) 
     splitValues = Split(ActiveCell.Offset(r, 0), " ") 

     For i = 0 To UBound(x) 
      ActiveCell.Offset(r, i+1) = splitValues(i) 
     Next 
     Loop 
    r = r + 1 
    End With 
End With 
+0

Merci Steve! Ça a marché. – GVBA

Questions connexes