【发布时间】:2016-11-21 06:27:22
【问题描述】:
我目前正在研究一组 vba 函数,这些函数应该允许用户从 xls 或 xlsx 文件中导出多个工作表,并根据工作表的名称将它们全部导出为不同的文件格式。这是一个使用旧文件的非常具体的过程。
所选文件中的某些工作表应被视为原始数据,我想将它们导出为 .CSV 文件而不对数据进行任何更改。如果有帮助,我什至不需要“查看”数据来进行 IF 或其他逻辑处理。
我已经有一个函数可以从已关闭文件的特定工作表中的特定单元格中获取数据,但我无法弄清楚如何在不遍历所有数十亿个单元格的情况下从工作表中获取所有数据大部分是空的,只是为了检查 Cell(23785;GP) 中是否有数据。
这是我已经拥有的功能,它可能有助于理解预期的行为。
Private Function GetInfoFromClosedFile(ByVal wbPath As String, _
ByVal WBName As String, wsName As String, cellRef As String) As Variant
Dim arg As String
GetInfoFromClosedFile = ""
If Right(wbPath, 1) <> "\" Then wbPath = wbPath & "\"
If Dir(wbPath & "\" & WBName) = "" Then Exit Function
arg = "'" & wbPath & "[" & WBName & "]" & wsName & "'!" & Range(cellRef).Address(True, True, xlR1C1)
On Error Resume Next
GetInfoFromClosedFile = ExecuteExcel4Macro(arg)
End Function
必须在最后仍然关闭另一个工作簿,并且不对当前工作簿进行任何更改。至少,所做的所有更改都应该撤消,以便在选择文件后,用户只会在他的计算机上看到我的确认消息和新创建的文件,而在他的 Excel 中没有明显的差异。由于这将由既不是程序员也不是非常精通技术的人使用,所以任何弄乱他们当前可以同时用于某事的工作簿的人都会给我们一些抱怨。
【问题讨论】:
-
看看通过ADO使用SQL。
-
很抱歉,但这并没有太大帮助。我以前从未经常使用过 vba 或 excel,所以告诉我“通过 ADO 使用 SQL”只会告诉我有一种方法可以像读取数据库一样读取文件。我不知道怎么做,我还得导出到 csv 之后
-
继续阅读会有所帮助,这不是代码编写服务。如果没有关于如何将文件保存为 CSV 的详细信息,我会感到震惊。
标签: vba excel csv export-to-csv