如何在不关闭XLSM的情况下将XLSM工作簿中的数据保存为CSV?

时间:2016-06-14 16:34:57

标签: excel vba excel-vba csv

我将XLSM工作簿的工作表中的数据保存为CSV文件。那部分工作文件。但是当我保存为CSV时,它会关闭XLSM文件。我想打开XLSM文件。有没有办法在一个宏下完成并关闭CSV文件?

这就是我到目前为止:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="list-group no-border mb-5">
    <a id="background" class="list-group-item"><i class="icon-bucket"></i> Profile Background</a>
    <br />
    <a id="boxes" class="list-group-item"><i class="icon-cube"></i> Profile Boxes</a>
  <br />
    <a id="fonts" class="list-group-item"><i class="icon-font"></i> Profile Fonts</a>
  <br />
    <a id="highlights" class="list-group-item"><i class="icon-stack-empty"></i> Profile Highlights</a>
  <br />
    <a id="content" class="list-group-item"><i class="icon-markup"></i> Profile Content</a>
  <br />
    <a id="media" class="list-group-item"><i class="icon-video-camera2"></i> Profile Media</a>
</div>

如果我现在尝试关闭CSV文件,宏会突然停止。

感谢您查看此内容。

1 个答案:

答案 0 :(得分:0)

如果使用Excel for PC,请考虑使用Jet / ACE SQL Engine(Windows .dll文件)。 Jet / ACE OLDEB可以连接到您的工作簿,就好像它是一个数据库并导出文本文件一样,就像它们是表一样。请注意,还会创建 scheme.ini 文件,以识别csv导出的结构。 CSV分隔是默认值。

Sub ExportCSV()
    Dim conn As Object
    Dim strConnection As String, strSQL As String

    Set conn = CreateObject("ADODB.Connection")

    ' OPEN DB CONNECTION
    strConnection = "Provider=Microsoft.ACE.OLEDB.12.0;" _
                       & "Data Source='C:\Path\To\Workbook.xlsm';" _
                       & "Extended Properties=""Excel 8.0;HDR=YES;"";"        
    conn.Open strConnection

    ' EXPORT WORKSHEET TO CSV
    strSQL = " SELECT * " _
              & " INTO [text;HDR=Yes;Database=C:\Path\To\CSV\Destination\Folder;" _
              & "CharacterSet=65001].CSVFile.csv" _
              & "  FROM [WORKSHEET$]"

    ' EXECUTE MAKE-TABLE QUERY
    conn.Execute strSQL

    ' CLOSE CONNECTION
    conn.Close
    Set conn = Nothing

En Sub