VBA:将excel数据传输到csv时如何保持csv格式?

VBA:将excel数据传输到csv时如何保持csv格式?,vba,excel,csv,Vba,Excel,Csv,我有一个基于逗号分隔的csv文件。我使用csv文件是因为我将它用作“主”文件来保存大量信息,但我更喜欢列,而不是用逗号分隔 因此,我需要的代码是能够运行一个宏,该宏将从我的“复制”excel工作簿中获取单元格,并将其移动到“主”csv文件底部新空白单元格的起始位置 例如: A B C Week Time Month 3 09:03 March My Master.csv将具有相同的列标题,当我从每周更新的copy.xlsx获得新信

我有一个基于逗号分隔的csv文件。我使用csv文件是因为我将它用作“主”文件来保存大量信息,但我更喜欢列,而不是用逗号分隔

因此,我需要的代码是能够运行一个宏,该宏将从我的“复制”excel工作簿中获取单元格,并将其移动到“主”csv文件底部新空白单元格的起始位置

例如:

 A        B       C
Week     Time     Month
3        09:03    March
My Master.csv将具有相同的列标题,当我从每周更新的copy.xlsx获得新信息时,我希望不断更新Master.csv

Sub move2()
Dim x As Workbook
Dim y As Workbook
Dim vals As Variant

'Open workbooks
Set x = Workbooks.Open("C:\Users\wra\Desktop\macro test\copy")
Set y = Workbooks.Open("C:\Users\wra\Desktop\macro test\Master.csv")

'Store value in variable
vals = x.Sheets("copy").Range("A5").Value

'Use the variable to assign a value to the other file/sheet:
y.Sheets("Master").Range("A3").Value = vals

'Close x:
x.Close

End Sub
我知道这段代码还没有完全实现我想要的功能(只获取一个值并将其添加到master.csv中的特定位置,但我想这是一个开始

问题是,当我运行这个宏时,来自my copy.xlsx的信息会被移动到Master.csv,但是Master.csv会从列重新格式化为文本

因此,在运行宏后,它看起来如下所示:

A
Week,Time,Month
3,09:03,March
myLastRow = y.Sheets("Master").Cells(Rows.Count, 1).End(xlUp).Row
所有数据都返回到一列,我在hand之前使用的Text-to-Columns函数被删除

我怎样才能防止这种情况发生?如果有人能帮助我完成下一部分代码(我希望它附加到master.csv数据的底部),那就太棒了

希望这是清楚的,提前感谢!

如前所述,使用
工作簿。OpenText
确保主文件正确打开,例如:

Set y = Workbooks.OpenText("C:\Users\wra\Desktop\macro test\Master.csv", DataType:=xlDelimited, Comma:=True)
要附加到主文件的底部,您需要找到文件中的最后一行,并在下面输入数据。在Excel中查找最后一行的方法有很多,但有一种方法是执行以下操作:

A
Week,Time,Month
3,09:03,March
myLastRow = y.Sheets("Master").Cells(Rows.Count, 1).End(xlUp).Row
在“主”工作表的第一列中找到中的最后一行。然后可以像这样复制新数据:

y.Sheets("Master").Cells(myLastRow + 1, 1).Resize(number_rows, number_cols).Value = vals

打开csv文件时,请尝试使用
工作簿.OpenText
方法,而不是
工作簿.Open
?如果在Excel中打开的csv文件的单个单元格中放置逗号分隔值,则保存该文件时,该值将保留在该单元格中(通过将值用引号括起来,如果您在记事本中打开CSV文件,您将看到引号)。如果您希望值位于单独的“列”中在您的CSV中,然后您需要将每个值放在excel中的单独单元格中。非常感谢!!非常好!VBA非常新,这对我帮助很大。我只需使用Call Workbook.OpenText,然后将变量设置为ActiveWorkbook,因为它不允许我直接执行。再次感谢!