2013-03-17 3 views
0

J'ai une plage que je veux écrire dans un fichier alternant entre les colonnes à chaque itération. Je devrais A1> B1> A2> B2, etc., pour donner un exemple:Référencer une plage 100x2 puis imprimer dans le fichier

 A | B 
1 Hello | World 
2 Whats | Up 

Maintenant, j'aurais cela dans un fichier texte:

Hello 
World 
Whats 
Up 

Je le code suivant qui va récupérer les informations de ma première colonne, mais je suis coincé à ajouter la deuxième colonne à chaque itération:

Sub mac() 
Dim fso As New FileSystemObject 
Dim stream As TextStream 
Set stream = fso.CreateTextFile("F:\Hmmmmm.txt", True) 

    Range("G2").Select 

    Do Until IsEmpty(ActiveCell) 
    stream.WriteLine ActiveCell 
    ' Here I would affectively want stream.WriteLine ActiveCell + 1 Column 
    ActiveCell.Offset(1, 0).Select 
    Loop 

End Sub 

Répondre

1

tout d'abord, si vous ne l'avez pas déjà fait alors assurez-vous que vous avez sélectionné le « Microsoft Script File "référence sous Outils dans la VBA éditeur (Pour plus d'aide, lisez How do I use FileSystemObject in VBA?).

Ce qui suit devrait fonctionner. Note pour lire mes commentaires - vous pouvez changer des parties du code pour s'adapter à votre feuille de calcul/besoins

Sub mac() 
    Dim ws As Worksheet 
    Dim fso As New FileSystemObject 
    Dim stream As TextStream 
    Dim DataTable As Range 
    Dim StartCell As Range 
    Dim c As Range 

    'Edit this line to save the text file to drive\path\filename of your choice 
    Const TextFileName As String = "F:\Hmmmmm.txt"  

    Set ws = ActiveSheet 
    Set fso = CreateObject("Scripting.FileSystemObject") 
    Set stream = fso.CreateTextFile(FileName:=TextFileName, Overwrite:=True) 

    'Edit this line to adjust to your spreadsheet 
    'I assume your data starts in Cell A1 
    Set StartCell = ws.Range("A1") 

    Set DataTable = StartCell.CurrentRegion 

    For Each c In DataTable.Cells 
      stream.WriteLine c.Value 
    Next c 

    Set c = Nothing 
    Set StartCell = Nothing 
    Set DataTable = Nothing 
    Set ws = Nothing 
    Set stream = Nothing 
    Set fso = Nothing 
End Sub 
Questions connexes