2015-09-27 60 views
-2

我使用PowerShell的通过OLE自动化到Excel保存为CSV:Excel为什么用“,”而不是“;”保存csv (使用PowerShell)

$Sheet.SaveAs($FileName + ".csv", 6) 

为什么Excel保存CSV用 “” 与OLE自动化和使用 “;”手动做什么?

区域设置分隔符是“;”

更新:终于在其他论坛上,似乎这是一个真正的难题,没有真正的解决方案,因为它看起来像一个错误。

回答

1

当您保存从Excel CSV你有这些选项(与区域设置分隔符 - > “”)

Option Explicit 

Public Sub SaveCSV() 
    With ActiveWorkbook 

     .SaveAs Filename:="C:\x.csv", FileFormat:=xlCSV   ' 6: -> "," 
     .SaveAs Filename:="C:\x.csv", FileFormat:=xlCSVMSDOS '24: -> "," 

     .SaveAs Filename:="C:\x.csv", FileFormat:=xlCSVWindows '23: -> ";" 
     .SaveAs Filename:="C:\x.csv", FileFormat:=xlCSVMac  '22: -> ";" 

    End With 
End Sub 

在你的PowerShell脚本你使用(的FileFormat)


没有可以更改Excel中的分隔符的另一个因素 - TextToColumns:

Public Sub testDelim() 
    setDelim "@" 
End Sub 

Public Sub setDelim(ByVal delim As String) 
    Application.DisplayAlerts = False 
    If 1 Then '-------------------------------------------------- Change delimiter 
     Range("A1") = "A" & delim & "1" 
     Range("A1").TextToColumns Destination:=Range("A1"), _ 
            DataType:=xlDelimited, _ 
            TextQualifier:=xlDoubleQuote, _ 
            ConsecutiveDelimiter:=False, _ 
            Tab:=False, _ 
            Semicolon:=False, _ 
            Comma:=False, _ 
            Space:=False, _ 
            Other:=True, _ 
            OtherChar:=delim 
     Range("A1:B1") = vbNullString 
    Else '------------------------------------------------------ Reset delimiter 
     Range("A1") = "x" 
     Range("A1").TextToColumns Destination:=Range("A1"), _ 
            DataType:=xlDelimited, _ 
            TextQualifier:=xlDoubleQuote, _ 
            ConsecutiveDelimiter:=False, _ 
            Tab:=False, _ 
            Semicolon:=False, _ 
            Comma:=False, _ 
            Space:=False, _ 
            Other:=False, _ 
            OtherChar:="" 
     Range("A1") = vbNullString 
    End If 
    Application.DisplayAlerts = True 
End Sub 
+0

当我做手工,我选择了CSV既不DOS,MAC,......所以VBA之间的差异(,)和手动行为(;)? – user310291

+0

奇怪甚至23我得到“,”而不是“;” (我在Windows 10上) – user310291

+0

它可以在我的电脑上工作在windows7 – user310291

相关问题