2016-03-22 2 views
0

Ich habe ein Quellverzeichnis, in dem ich .csv-Dateien (B1-Zelle) habe. Und ein Zielverzeichnis, in dem ich dieselben Dateien wie .xlsx (B2-Zelle) speichere, einige Verarbeitungen wie Text zu Spalten durchführe, Trennzeichen usw. mit dem unten gezeigten VBA-Makro wähle.Wie wird automatisch 'Text zu Spalten' und 'Speichern als' in VBA?

Sub FileList() 

Dim directory As String, fileName As String, saveas As String, fileNameXlsx As String 
Dim file As Variant 
Dim wb As Workbook, LastRow As Long, LastRow1 As Long 
Dim i As Integer, j As Integer 
Set wb = Workbooks("CSV_File.xlsm") 
Application.ScreenUpdating = False 

'Clear old data 
LastRow = Sheets("FileList").Range("A" & Sheets("FileList").Rows.Count).End(xlUp).Row 
Sheets("FileList").Select 
Range("A1:A" & LastRow).Select 
Selection.ClearContents 

directory = wb.Sheets("Directory").Cells(1, 2).Value 
saveas = wb.Sheets("Directory").Cells(2, 2).Value 
file = Dir(directory & "*.csv") 

While (file <> "") 
i = i + 1 
j = 1 
wb.Sheets("FileList").Cells(i, j).Value = file 
file = Dir 
Wend 

LastRow1 = Sheets("FileList").Range("A" & Sheets("FileList").Rows.Count).End(xlUp).Row 
For i = 1 To LastRow1 
On Error Resume Next 
'.csv FileName 
Range("B" & i).Select 
    ActiveCell.FormulaR1C1 = "=LEFT(RC[-1],(LEN(RC[-1])-4))" 
fileNameXlsx = wb.Sheets("FileList").Cells(i, 2).Value & ".xlsx" 
fileName = wb.Sheets("FileList").Cells(i, 1).Value 
'Open .xlsx file 
Workbooks.Open (directory & fileName) 
Columns("A:A").Select 
    Selection.TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, _ 
     TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, _ 
     Comma:=True, FieldInfo _ 
     :=Array(Array(1, 1), Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1), Array(6, 1), _ 
     Array(7, 1), Array(8, 1), Array(9, 1), Array(10, 1), Array(11, 1)), DecimalSeparator:= _ 
     ",", ThousandsSeparator:=" ", TrailingMinusNumbers:=True 
    ChDir saveas 
    ActiveWorkbook.saveas fileNameXlsx _ 
    , FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False 
'Close .xlsx 
Workbooks(fileNameXlsx).Close SaveChanges:=False 
Next i 

End Sub 

Es ist ganz gut, außer der Tatsache arbeitet, dass jedes Mal, wenn ein Makro ankommt:

Selection.TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, _ 
     TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, _ 
     Comma:=True, FieldInfo _ 
     :=Array(Array(1, 1), Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1), Array(6, 1), _ 
     Array(7, 1), Array(8, 1), Array(9, 1), Array(10, 1), Array(11, 1)), DecimalSeparator:= _ 
     ",", ThousandsSeparator:=" ", TrailingMinusNumbers:=True 
    ChDir saveas 

Es zeigt mir folgende Meldung und ich brauche es, um bestätigen Sie mit „OK“. enter image description here

Ich möchte fragen, ob es eine Möglichkeit gibt, es (um auf "OK" zu klicken) automatisch zu überspringen? Danke.

Antwort

0

Sie können

Applications.DisplayAlerts = False 

an der Spitze des Makros hinzufügen, so werden keine Warnungen angezeigt werden (überhaupt!). Vergessen Sie nicht, es am Ende des Codes auf true zu setzen.

+1

'Application.DisplayAlerts = False' funktioniert. Vielen Dank! – Ale

Verwandte Themen