将Excel中的数据编程为字符串,然后将工作簿转换为CSV

问题描述 投票:0回答:1

我正在尝试创建一个VBA,在其中输入有关22列付款的信息。这些列包括付款金额,帐户等。然后,我可以运行宏并将其格式化为可用字符串,然后将数据导出为CSV文件。数据必须在信息之间使用撇号和逗号进行格式化。

例如,列B为商家ID,列C为商家名称(列A为空白)。我在B列中输入123,在C列中输入xyz。它被转换为'123','xyz',...,...,目标是完成格式设置,合并并导出到CSV。当前,我混合使用了公式/函数和宏。

我使用公式来使用以下格式来正确设置格式:=“'”&B2&“'”&“,”然后使用串联将所有22行合并为一个字符串

然后我用以下内容录制了一个宏:

    Sub BCM_CSV_export()
'
' BCM_CSV_export Macro

    Range("B21").Select
    ActiveCell.FormulaR1C1 = "=""'""&R[-19]C&""'""&"","""
    Range("B21:V21").Select
    Selection.FillRight
    Range("B21:V30").Select
    ActiveWindow.SmallScroll Down:=9
    Selection.FillDown
    Range("B40").Select
    ActiveCell.FormulaR1C1 = "=CONCAT(R[-19]C:R[-19]C[20])"
    Range("B40:B49").Select
    Selection.FillDown
    Workbooks.Add
    Windows("BCM CSV Workbook.xlsm").Activate
    Selection.Copy
    Windows("Book1").Activate
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Range("E13").Select
    Application.CutCopyMode = False
    ActiveWorkbook.SaveAs "CSVDate.csv", _
        FileFormat:=xlCSV, CreateBackup:=False
    ActiveWindow.Close
    Selection.ClearContents
    Range("B21").Select
    Range(Selection, Selection.End(xlDown)).Select
    Range(Selection, Selection.End(xlToRight)).Select
    Selection.ClearContents
    ActiveWindow.SmallScroll Down:=-24

End Sub

该代码似乎可以在我的笔记本电脑上使用。 CSV文件显示在“我的文档”中。但是我的同事遇到错误。该代码似乎没有运行。

我的问题是2折:1.我的宏只能在笔记本电脑上运行吗?2.有没有一种方法可以将22行数据转换为单个文本字符串和新的CSV工作簿,而无需使用文本字符串格式设置和连接功能进行中间步骤?

我使用了搜索功能,没有看到与之完全匹配的内容。非常感谢大家!

excel vba csv
1个回答
0
投票

您最好检查两行代码:

   Windows("BCM CSV Workbook.xlsm").Activate

   Windows("Book1").Activate

也许您的同事没有worrkbook BCM CSV Workbook.xlsm的名称,并且Book1已打开

© www.soinside.com 2019 - 2024. All rights reserved.