我正在尝试自动执行一些我必须在excel下执行的操作。 使用录制选项后(即使我对VBA有一些了解),宏是下一个:
Sub MacroPOI()
Selection.SpecialCells(xlCellTypeBlanks).Select
Selection.EntireRow.Delete
Rows("1:4").Select
Selection.Delete Shift:=xlUp
Columns("A:A").Select
Selection.TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, _
Semicolon:=False, Comma:=True, Space:=False, Other:=False, FieldInfo _
:=Array(Array(1, 2), Array(2, 1), Array(3, 1)), TrailingMinusNumbers:=True
ActiveWorkbook.SaveAs Filename:= _
ActiveWorkbook.path + "\" + Left(ActiveWorkbook.Name, Len(ActiveWorkbook.Name) - 4) + ".csv", _
FileFormat:=xlCSVMSDOS, CreateBackup:=False
ActiveWorkbook.Save
ActiveWindow.Close
End Sub
问题是,当我自己(录制时),结果文件使用分号作为分隔符(我的区域设置设置为法国)但不执行我执行VBA代码时将逗号作为分隔符。
我希望分号......
答案 0 :(得分:2)
没关系,我在写这个问题时找到了答案。
问题来自我在saveAs中没有使用Local的事实,以及我之后再次保存的事实(在saveAs中绕过Local)。
因此,最终代码只需将Local:=True
添加到SaveAs
:
ActiveWorkbook.SaveAs Filename:= _
ActiveWorkbook.path+"\"+Left(ActiveWorkbook.Name, Len(ActiveWorkbook.Name) - 4)+".csv", _
FileFormat:=xlCSVMSDOS, CreateBackup:=False, Local:=True