2013-04-03 8 views
0


J'écris un programme pour convertir un fichier .csv dans un fichier Excel dans VBScript.Convertir le fichier .csv en Excel dans VBScript

C'est la partie de mon fichier .csv (Il a une tête aussi bien)

Titre du rapport, performance marchandises Caractéristiques Rapport ,, Rapport Titre, performance marchandises Caractéristiques Rapport ,,,,,, , Commencer Date, 8/7/2012 ,,,,,,,,,, Modèle Nom, XXXX-Test-VVV-Deux-Positions ,,,,,,,,,, Total Productions ,,,, ,,,,,,,

, ID, Nom, Description du produit, Date d'émission, Type de produit, Poids (kg), Poids (lb), Prix, Volume de produit, Bénéfice, Valeur totale (000) , 315616102, Lux Miel, Corps Laver, 8/1/2012, C, 0,06,0.06,93,793920,0,7455703038, 579780206, clair AntiDandruf, Shampooing, 8/1/2012, C, 0,06,0.06 , 60.5,1325980,2.05,8022179000 , 761713106, Loreal Divine, Visage CRUB 8/1/2012, F, 0.12,0.12,46.52,3314780,5.07,15420356560

C'est le mis à jour Le code VBScript que j'ai écrit pour la conversion.

Dim xlApp, workBook1, workBook2,aSheets, fileName, aInfo2,aInfo1,oExcel 
    Const XlPlatform = "xlWindows" 
    Const xlDelimited = 1 
    Const xlTextQualifierDoubleQuote = 1 
    Const xlTextFormat = 2 
    Const xlGeneralFormat = 1 


    Set oExcel = Sys.OleObject("Excel.Application") 
    Set xlApp = CreateObject("Excel.Application") 

    Set workBook1 = xlApp.ActiveWorkBook 

    Set workBook1 = xlApp.WorkBooks.OpenText("Y:\Personal Folders\XXXX\TestFile1.csv",XlPlatform, 1, xlDelimited, xlTextQualifierDoubleQuote, true, false, false, true, false, true, "CRLF", Array(Array (1,2),Array (2,2),Array (3,2),Array (4,1),Array (5,2),Array (6,1),Array (7,1),Array (8,1),Array (9,1),Array (10,1),Array (11,1)), true, false) 

    Set workBook1 = xlApp.ActiveWorkBook 
    xlApp.Visible = true 

    workBook1.Save "Y:\Personal Folders\XXXX\x.xlsx", xlNormal 
    workBook1.Close 

Mais les données ne sont pas sous forme de tableau dans Excel file.I souhaitez afficher les données sous forme de tableau.

Pourriez-vous m'aider s'il vous plaît à extraire des données basées sur les délimiteurs.J'ai besoin de la partie d'en-tête dans le fichier Excel aussi bien.

Merci à l'avance

Répondre

2

Il y a plusieurs problèmes avec le code de votre question: mise à jour

  • Const XlPlatform = "xlWindows"

    XlPlatform doit être une valeur numérique, pas une chaîne. Le membre xlWindows du enumeration a la valeur 2. Cependant, puisque c'est la valeur par défaut de toute façon, vous pouvez simplement omettre cette valeur lors de l'appel OpenText.

  • Set workBook1 = xlApp.ActiveWorkBook

    Un nouveau donné naissance instance Excel ne dispose pas d'un classeur actif, il est donc inutile d'attribuer cela à une variable avant de vous ouvrir ou créer un classeur.

  • Set workBook1 = xlApp.WorkBooks.OpenText(...)

    La méthode OpenText ne renvoie pas un objet, donc il n'y a rien à attribuer dans la déclaration ci-dessus.

  • ...ooks.OpenText(..., true, "CRLF", ...)

    La chaîne "CRLF" n'est pas un caractère. Pourquoi voulez-vous spécifier des sauts de ligne en tant que caractères séparateurs de toute façon?

  • ..., Array(...), true, false)

    Les 2 derniers paramètres spécifiés sont TextVisualLayout (spécifie gauche à rigt/droite à gauche) et DecimalSeparator. Les deux ne sont pas des valeurs booléennes. Il suffit de les omettre si vous ne savez pas avec certitude que vous en avez besoin.

  • workBook1.Save "Y:\Personal Folders\XXXX\x.xlsx", xlNormal

    La méthode Save enregistre un classeur sous son nom actuel. Pour enregistrer un classeur sous un nom différent, vous devez utiliser la méthode SaveAs. La constante xlNormal n'est définie nulle part dans votre code. De plus, xlNormal produit un classeur Excel 97/2003 (.xls). Pour enregistrer un classeur en tant que classeur Excel 2007/2010 (.xlsx), vous devez utiliser la constante xlOpenXMLWorkbook.

Le code suivant a fonctionné pour moi:

Const xlDelimited    = 1 
Const xlTextQualifierDoubleQuote = 1 
Const xlOpenXMLWorkbook   = 51 

Set xl = CreateObject("Excel.Application") 

xl.Workbooks.OpenText "Y:\Personal Folders\XXXX\TestFile1.csv", , , xlDelimited _ 
    , xlTextQualifierDoubleQuote, True, False, False, True, False, False, _ 
    , Array(Array(1,2), Array(2,2), Array(3,2), Array(4,1), Array(5,2) _ 
    , Array(6,1), Array(7,1), Array(8,1), Array(9,1), Array(10,1), Array(11,1)) 
Set wb = xl.ActiveWorkbook 

wb.SaveAs "Y:\Personal Folders\XXXX\x.xlsx", xlOpenXMLWorkbook, , , , False 
wb.Close 

xl.Quit 
+0

Merci beaucoup Ansgar :) cela fonctionne.Merci encore beaucoup.Vous avez enregistré ma journée – SriniShine

+0

Ai-je besoin d'Excel installé pour que cela fonctionne? – blade19899

+0

@ blade19899 Oui. –

-1

Vous devez spécifier quel format vous enregistrez comme. Ce qui suit précisera comme un .xls standard pour 2003

Workbooks.Open Filename:= _ 
    "D:\Personal Folders\XXXXX\TestFile1.csv" 

    ActiveWorkbook.SaveAs Filename:= _ 
    "D:\Personal Folders\XXXXX\x.xls", FileFormat:=xlNormal 

    ActiveWorkbook.Close 

peut également essayer

ActiveWorkbook.SaveAs Filename:= _ 
    "D:\Personal Folders\XXXXX\x.xls", FileFormat:= 56 
+0

Merci pour le reply.Currently J'utilise Excel 2003 (.xls) .Comment puis-je spécifier le format de données dans Excel 2003 ..? ?? – SriniShine

+0

Essayez le code mis à jour. Cela fait un moment mais je pense que c'est comme ça que ça se fait. – user2140261

+0

Votre code est VBA, pas VBScript. Les paramètres nommés ne fonctionnent pas dans VBScript. –

0

J'utilise Excel 2003.Le suivant est un code que je dois spécifier le format de fichier .csv

Set xl = CreateObject("Excel.Application") 

Set wb = xl.Workbooks.OpenText "input.csv", , , xlDelimited, xlDoubleQuote, _ 
    False, False, True, , , , dataTypes 

de Vbscript to import csv into excel

Pouvez-vous expliquer la fonction de la ligne suivante?

Set wb = xl.Workbooks.OpenText "input.csv", , , xlDelimited, xlDoubleQuote, _ 
     False, False, True, , , , dataTypes 


Ma mise en œuvre de la propriété OpenText pour mentionné ci-dessus.csv fichier

Set workBook1 = xlApp.WorkBooks.OpenText("D:\Personal Folders\XXXX\TestFile1.csv", , ,xlDelimited, ,false ,false ,false ,True,false ,false ,"~") 
+0

['OpenText'] (http://msdn.microsoft.com/fr-fr/library/office/ff837097.aspx) est la méthode d'importation de fichiers texte. Comme VBScript ne prend pas en charge les paramètres nommés, vous devez spécifier tous les paramètres dans le bon ordre. Vous pouvez cependant omettre les valeurs des paramètres que vous souhaitez conserver à la valeur par défaut, et vous pouvez omettre complètement les valeurs par défaut. La valeur 'dataTypes' est un tableau qui définit le format de chaque colonne importée.Lorsque le fichier est ouvert avec succès, l'objet classeur créé est affecté à la variable 'wb'. –

+0

Ansgar: Merci beaucoup pour la réponse.J'ai appris qu'il y a 12 paramètres pour la propriété OpenText.Mais maintenant je reçois une erreur disant "Impossible d'obtenir la propriété OpenText de la classe WorkBooks" .Savez-vous la raison de cela? J'ai édité le script obove avec ma version OpenText – SriniShine

+0

J'ai inclus mon implémentation pour OpenText dans le post ci-dessus. Merci – SriniShine

Questions connexes