Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何自动执行';文本到列';和';另存为';在VBA中?_Vba_Excel - Fatal编程技术网

如何自动执行';文本到列';和';另存为';在VBA中?

如何自动执行';文本到列';和';另存为';在VBA中?,vba,excel,Vba,Excel,我有一个源目录,其中有.csv文件(B1单元格)。还有一个目标目录,我在其中保存与.xlsx(B2单元格)相同的文件,并使用下面所示的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,

我有一个源目录,其中有.csv文件(B1单元格)。还有一个目标目录,我在其中保存与.xlsx(B2单元格)相同的文件,并使用下面所示的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
它向我显示以下消息,我需要单击“确定”进行确认。

我想问一下,是否有任何方法可以自动跳过它(单击“确定”)? 谢谢。

您可以添加

Applications.DisplayAlerts = False
在宏的顶部,因此不会显示任何警报(根本不会!)。不要忘记在代码末尾将其设置回true

Applications.DisplayAlerts = False