VBA没有使用我的Windows区域设置

时间:2018-03-28 09:31:34

标签: excel vba excel-vba

我正在尝试自动执行一些我必须在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代码时将逗号作为分隔符。

我希望分号......

1 个答案:

答案 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