2012-12-10 7 views
3

Il y a un certain nombre de postes similaires, mais rien qui fait exactement ce que je veux aussi simplement qu'elle doit être pour moi de comprendreécraser un fichier csv en utilisant vba

Je veux utiliser Access 2007 VBA pour ouvrir un fichier CSV fichier et remplacez les têtes de colonne rangée à savoir:

OldColumn1,OldColumn2 

1,2 

avec

NewColumn1,NewColumn2 

1,2 

pour ne pas déranger la croupe des données.

Ensuite, enregistrez et fermez.

J'ai essayé ce code, mais il supprime mes données:

Sub WriteFile() 


    Dim OutputFileNum As Integer 
    Dim PathName As String 

    PathName = Application.ActiveWorkbook.Path 
    OutputFileNum = FreeFile 

    Open PathName & "\Test.csv" For Output Lock Write As #OutputFileNum 

    Print #OutputFileNum, "NewCol1" & "," & "NewCol2" 


    Close OutputFileNum 

End Sub 
+1

Automatiser la routine avec la référence Excel VBA à la place, cela vous permettra de sélectionner et de modifier des cellules individuelles, par exemple OldColumn1 peut être dans la cellule A1, ce serait plus facile de travailler avec. –

+0

Désolé Matt - pourriez-vous élaborer? Vraisemblablement, cela changerait la ligne: "Open PathName &" \ Test.csv "pour la ligne de sortie Write Write en tant que #OutputFileNum". Que faire? –

+0

@GERALDDUNN Veuillez voir ma réponse, vous n'aurez plus besoin d'utiliser les handles de fichiers. –

Répondre

1
  1. importation ou lien vers la .csv afin que vous avez dans vos enregistrements de bases de données Access 2007.
  2. Ecrivez une requête avec NewColumn [x] en tant qu'alias pour OldColumn [x].
  3. Écrivez le code vba pour utiliser la fonctionnalité TransferText ou créez une macro pour faire de même pour exporter votre requête en tant que fichier .csv (en écrasant le fichier csv d'origine si vous voulez/need).

De toute évidence, il y a beaucoup de choses supplémentaires que vous pourriez faire pour automatiser et reproduire ce concept pour n'importe quel nombre ou types de fichiers. Mais la solution ci-dessus devrait fonctionner dans un environnement entièrement MS Access. Faites-moi savoir si vous souhaitez obtenir des détails sur l'une de ces étapes.

0

suite à mon commentaire précédent, s'il vous plaît voir la méthode qui utilise la référence Excel:

Public Sub EditCsv() 

Dim xlApp As Object 
dim xlWbk As Object 
Dim xlWst As Object 

    Set xlApp = CreateObject("Excel.Application") 
    Set xlWbk = xlApp.Workbooks.Open ".../Test.csv" 'Amend this to your needs 
    Set xlWst = xlWbk.Sheets(1) 

    'This assumes the columns are at the beginning of the file 
    xlWst.Range("A1") = "My New Column Name" 
    xlWst.Range("B1") = "My New Second Column Name" 

    xlWbk.Close -1 'Close and save the file here 
    xlApp.Quit 

    Set xlApp = Nothing 
    Set xlWbk = Nothing 
    Set xlWst = Nothing 

End Sub 
Questions connexes