excel - 在 Excel 中将单元格的内容保存到不带引号的 csv
问题描述
我正在尝试使用 VBA 创建一个 csv 文件(不带引号) - 文件的唯一内容应该是名为“MetricValue”的单元格中的值。
Dim FileName As String
Dim PathName As String
Dim ws As Worksheet
Set Range.Value = MetricValue
FileName = "filename.csv"
PathName = Application.ActiveWorkbook.Path
ws.Copy
ActiveWorkbook.SaveAs FileName:=PathName & "\" & FileName, _
FileFormat:=xlCSV, CreateBackup:=False
End Sub
我知道我在设置范围时已经填满了一些东西,但不知道为什么。我试图开始工作的所有内容都只输出带有引号的值。谁能指出我正确的方向?
解决方案
我认为您的问题令人困惑,因为您似乎真正想要做的是将单个值保存为 CSV。正在创建的引号可能来自文件的其他部分。可能有更好的方法来实现您的总体目标。这是一篇关于 CSV 文件的StackOverflow 文章,通过 excel 可能有用。
无论如何,这里有两种使用宏将命名范围值保存为 CSV 文件的解决方案。确保命名范围位于工作簿级别(而不是工作表)。
选项一
Sub MakeASingleValueCSVFile()
Dim FileName As String: FileName = "filename.csv"
Dim PathName As String: PathName = Application.ActiveWorkbook.Path
Dim finalValue As Double: finalValue = Range("MetricValue").Value
Dim iFileNum As Long
iFileNum = FreeFile
Open PathName & "\" & FileName For Output As iFileNum
Print #iFileNum, finalValue
Close #iFileNum
End Sub
这有一些你可能不喜欢的间距问题。
选项 2
(更新了初始问题的更多动态解决方案)
Const FileName As String = "filename2"
Const namedRange As String = "MetricValue" 'make sure at workbook level
Dim PathName As String: PathName = Application.ActiveWorkbook.Path
Dim pullRNG As Range: Set pullRNG = Range(namedRange)
Dim wkBK As Workbook: Set wkBK = Application.Workbooks.Add
With wkBK
.Sheets(1).Cells(1, 1).Resize(pullRNG.Rows.Count, pullRNG.Columns.Count) = pullRNG.Value
.SaveAs PathName & "\" & FileName, xlCSV
.Close
End With
推荐阅读
- sql - 将 plsql 异常错误写入 DMBS_OUTPUT 和 FND_FILE 作业日志
- android - 如何获取开启 GPS 定位的返回值?
- php - mySQL 连接在脚本中过早关闭
- rust - 如何将结构方法中的 &self 与另一个结构进行比较
- deprecated - Authorize.Net 中是否已弃用 XML API?
- node.js - 使用Node访问另一台服务器的FTP
- python - 如何仅提取数组名称和括号内的内容,并使它们成为键值对?
- javascript - 使用量角器在不同的路径中以角度截取屏幕截图
- java - 不导入支持库
- sql - 使用 SSMA 转换 AccessDatabase