Lot de convertir Excel en texte délimité par des fichiers
Salut, je suis confronté à un problème sur la façon de traiter avec la transformation de feuilles de calcul Excel et des fichiers txt.
Ce que je veux faire est de créer une Macro qui peut prendre toutes les xls fichiers dans un dossier et de les convertir en fichiers txt.
Le code actuellement en train de travailler sur
Sub Combined()
Application.DisplayAlerts = False
Const fPath As String = "C:\Users\A9993846\Desktop\"
Dim sh As Worksheet
Dim sName As String
Dim inputString As String
With Application
.Calculation = xlCalculationManual
.EnableEvents = False
.ScreenUpdating = False
End With
sName = Dir(fPath & "*.xls*")
Do Until sName = ""
With GetObject(fPath & sName)
For Each sh In .Worksheets
With sh
.SaveAs Replace(sName, ".xls*", ".txt"), 42 'UPDATE:
End With
Next sh
.Close True
End With
sName = Dir
Loop
With Application
.Calculation = xlAutomatic
.EnableEvents = True
.ScreenUpdating = True
End With
End Sub
Mais Il ne fonctionne pas comme prévu, j'ai 0 de connaissances sur VB. Quiconque est prêt à donner un coup de main?
- Exactement comment est-il "ne fonctionne pas comme prévu"? Quels résultats obtenez-vous, et comment diffèrent-ils les résultats escomptés?
- L'erreur, la ligne .SaveAs Remplacer(sName, ".xls*", ".txt"), 42 'mise à JOUR: sont à l'origine de l'erreur de l'erreur d'Exécution '1004'. Après le remplacement de sh.SaveAs ePath & sName + sh.Nom + ".txt", xlTextWindows, tout fonctionne bien. Mais vraiment apperciate pour votre aide!
- BTW ePath est le nouveau chemin d'accès où je veux placer les fichiers définis comme Const ePath as String = "C:\Users\A9993846\Desktop\Test\"
- ajouté le code pour faire le travail pour vous. Liées à 1004 votre chemin de l'info, c'est probablement faux, et c'est pourquoi .SaveAs ne fonctionne pas. Si vous souhaitez conserver votre code and go "à votre façon" essayez de le remplacer .SaveAs avec MsgBox pour voir si le chemin d'accès de l'info est correcte (il ne sera pas 🙂
Vous devez vous connecter pour publier un commentaire.
Le code ci-dessous convertit tous les Classeurs Excel (tests extension de fichier pour les "xlsx") dans un dossier donné dans des fichiers CSV. Les noms de fichier sont [nomduclasseur][sheetname].csv, c'est à dire "foo.xlsx" obtenez "foo.xlsxSheet1.scv", "toto.xlsxSheet2.scv", etc. Afin de l'exécuter, de créer un fichier texte, le renommer .vbs et copiez-collez le code ci-dessous. Modifiez le chemin d'accès de l'info et de l'exécuter.
Vous pouvez donner une meilleure affectation de noms de fichier, la gestion des erreurs/etc si nécessaire.
De la question avec votre code, c'est que vous définissez
sPath
comme un chemin contenant des caractères génériques:et de ne remplacer que la partie de l'extension (
.xls*
), mais laissez le caractère générique avant l'extension en place:Cela donne le chemin d'accès suivant:
qui provoque l'erreur que vous avez observé, parce que le
SaveAs
méthode tente d'enregistrer la feuille de calcul dans un fichier avec le nom littéral*.txt
, mais*
n'est pas un caractère valide pour les noms de fichier.Remplacer ceci:
avec ceci:
sh
est une référence à une feuille de calcul, si vous avez besoin pour obtenir une référence à l'objet parent (le classeur) en premier. Voir mise à jour de réponse.