2011-07-14 3 views
0

J'ai un classeur Excel où le fichier .csv est sorti avec des guillemets avec ce code vba:phpmyadmin/CSV (Excel) Problèmes

'Set up Delimiters 
DELIMITER = "," 
QUOTE = """" 

'Set up file to save, ask user for name 
GetFileName = InputBox("Enter Name for semi-colon delimited file: (Do not enter file extension)", "FILENAME") 
    'CurrentPath = Application.ActiveWorkbook.Path 
PathtoUse = "C:\Users\David\Desktop\" 
FileNametoUse = PathtoUse & GetFileName & ".csv" 

'Find cells to cycle through 
With ActiveSheet.UsedRange 
    LastRow = .Cells(.Cells.Count).Row 
    LastCol = .Cells(.Cells.Count).Column 
End With 

'Assign a handle to next file# 
FileNum = FreeFile 

'Open and write to file named above 
Open FileNametoUse For Output As #FileNum 

'Cycle through rows and cols 
For Each CurrentRow In Range("A1:A" & LastRow) 
    With CurrentRow 'Now cycle through each cell in the row 
     For Each CurrentCell In Range(.Cells, Cells(.Row, LastCol)) 
      'If the cell contains Non-Numeric (IsNumeric=False) then put quotes around the info 
      If IsNumeric(CurrentCell.Text) = False Then 
       CellData = QUOTE & CurrentCell.Text & QUOTE 
      Else 'The cell contains numeric, use contents as is 
       CellData = CurrentCell.Text 
      End If 
      'as the code cycles, keep adding each col info to string 
      LineOutput = LineOutput & DELIMITER & CellData 
     Next CurrentCell 

     'Remove the first 2 chars in the line (since the delimiter is put in first) 
     LineOutput = Mid(LineOutput, 2) 
     'Print the line to the file 
     Print #FileNum, LineOutput 
      'Clear out the variable 
     LineOutput = Empty 
    End With 
Next CurrentRow 

'Close the file 
Close #FileNum 

Cela affiche correctement le fichier par exemple:

"FirstName","Surname","YBC","BTBA","JTE","EnteringAverage","DOB","Game1","Game2","Game3","Game4","Game5","Game6","Game7","Game8","IndividualTotal","Average","TeamTotal" 
"David","Passmore","Bowlplex Poole",116016,193,179,"05/08/1994",203,254,211,195,187,184,200,267,1701,212.63,3178 
"Callum","Bailey","Bowlplex Poole",016015,185,189,"30/05/1996",175,145,195,117,201,265,221,158,1477,184.63,3178 
"","","","","","","","","","","","","","","","","","" 
"","","","","","","","","","","","","","","","","","" 
"","","","","","","","","","","","","","","","","","" 
"","","","","","","","","","","","","","","","","","" 
"","","","","","","","","","","","","","","","","","" 
"","","","","","","","","","","","","","","","","","" 
"","","","","","","","","","","","","","","","","","" 
"","","","","","","","","","","","","","","","","","" 
"","","","","","","","","","","","","","","","","","" 
"","","","","","","","","","","","","","","","","","" 
"","","","","","","","","","","","","","","","","","" 
"","","","","","","","","","","","","","","","","","" 
"","","","","","","","","","","","","","","","","","" 
"","","","","","","","","","","","","","","","","","" 
"","","","","","","","","","","","","","","","","","" 
"","","","","","","","","","","","","","","","","","" 
"","","","","","","","","","","","","","","","","","" 
"","","","","","","","","","","","","","","","","","" 
"","","","","","","","","","","","","","","","","","" 
"","","","","","","","","","","","","","","","","","" 

Tout d'abord, je veux savoir comment supprimer toutes les cellules vides, et d'autre part, quand je l'entrée dans phpMyAdmin tout fonctionne, MAIS il manque la première colonne et il entre les noms de colonnes que je ne veux pas, donc je le veux entrée toute la colonne du prénom, puis je veux qu'il rater les noms des colonnes.

version phpmyadmin de mon serveur est 2.6.4 (je sais sa vieille mais je ne peux rien faire à ce sujet)

Mais est fait aussi sur mon serveur local qui est la version 3.3.9

MISE À JOUR

J'ai résolu le problème de la première colonne en déplaçant simplement le fichier d'une colonne vers la droite afin que ce soit corrigé, mais les deux autres problèmes existent toujours.

Répondre

1

Vous pouvez simplement changer votre vba ici:

'Set up Delimiters 
DELIMITER = "," 
QUOTE = """" 

à ceci:

'Set up Delimiters 
DELIMITER = ";" 
QUOTE = """" 

Because par défaut phpMyAdmin; comme le séparateur.

En answser à votre deuxième point, vous pouvez utiliser ce code vba pour éliminer les cellules vides:

Sub MacroNAME() 
    ActiveWorkbook.Save 
    Rows("1:1").Select 
    Selection.Cut 
    Sheets("sheetname").Select 
    Sheets.Add 
    ActiveSheet.Name = "Save" 
    ActiveSheet.Paste 
    Sheets("sheetname").Select 
    Rows("1:1").Select 
    Rows("1:1").RowHeight = 14.25 
    Selection.Delete Shift:=xlUp 
    Cells.Select 
    Selection.SpecialCells(xlCellTypeBlanks).Select 
    Selection.ClearContents 
    Columns("A:A").Select 
    Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove 
    Rows("1:1").Select 
    Selection.Delete Shift:=xlUp 
    Rows("2:2").RowHeight = 14.25 
    **Code Used above here** 
    Rows("1:1").Select 
    Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove 
    Selection.Borders(xlInsideHorizontal).LineStyle = xlNone 
    Rows("1:1").RowHeight = 0.1 
    Columns("A:A").Select 
    Selection.Delete Shift:=xlToLeft 
    Sheets("sheetname").Select 
    Rows("2:2").Select 
    Selection.Insert Shift:=xlDown 
    Rows("1:1").RowHeight = 10.5 
    Rows("1:1").RowHeight = 14.25 
    Sheets("Save").Select 
    Selection.Cut 
    Sheets("sheetname").Select 
    Rows("1:1").Select 
    ActiveSheet.Paste 
    Application.DisplayAlerts = False 
    Sheets("Save").Select 
    ActiveWindow.SelectedSheets.Delete 
    Application.DisplayAlerts = True 

Cela effacera les têtes de colonne à condition qu'ils le sont la première ligne.

Vous pouvez l'appliquer à un bouton et cela devrait fonctionner.

Questions connexes