我在Excel中使用新的宏,而且我很难创建一个应该很容易的宏,但我不知道如何编写它。 我需要复制一系列单元格值(给定第一个单元格,A2和最后一个单元格,Z2),但它是一个动态范围,我需要知道最后一个填充行来定义整个范围。然后,我需要用逗号连接值并将这些值存储在.csv文件中。
This would be the resulting .csv
我该怎么做?我认为这并不困难,我真的很感激任何帮助。
非常感谢
答案 0 :(得分:1)
这对我有用:首先定义工作表并获取数据。然后你逐行将它放入一个csv(每个循环使用de)。
在您的问题的示例数据中,您已经用逗号分隔了值,但如果您使用其他语言,则可能需要用分号分隔数据。在这种情况下,您应该使用我在打印句子之前留下评论的替换句子。
我希望它可以帮到你。
Sub datos_a_csv()
Dim data, initial_row, final_row
'defines worksheet
Dim H_data As Worksheet
Set H_data = ThisWorkbook.Worksheets("Hoja1")
initial_row = 1
final_row = H_data.Cells(initial_row, 1).End(xlDown).Row + 1
'get the data
data = H_data.Cells(initial_row, 1).Resize(final_row - initial_row, 1)
'put the data in csv
My_filenumber = FreeFile
Open "C:\prueba\prueba.csv" For Append As #My_filenumber
For Each Row In data
'Row=replace(row,",",";")
Print #My_filenumber, Row
Next Row
Close #My_filenumber
End Sub
如果要将列放到Z列之前,那么:
data = H_data.Cells(initial_row, 1).Resize(final_row - initial_row, 26)
然后你应该连接并存储这样的 '将数据放在csv中 My_filenumber = FreeFile 打开" C:\ prueba \ prueba.csv"对于追加为#My_filenumber
for i = lbound(data ,1) to ubound(data ,1)
row=""
for j = lbound(data ,1) to ubound(data ,1)
row = row + "," + data(i,j)
next j
Print #My_filenumber, Row
next i
Close #My_filenumber
答案 1 :(得分:1)
试试这个
Sub main()
Worksheets("toCSV").Copy '<--| change "toCSV" to your actual sheet name. this will copy the specified worksheet into the only worksheet of a new workbook
With ActiveWorkbook '<--| refer to newly created workbook
.SaveAs fileName:="ToCSV", FileFormat:=xlCSV '<--| this will save the new workbook with the name "ToCSV" in CSV format in the "current folder"
.Close True 'close and save changes
End With
End Sub
请参阅MSDN documentation以进一步自定义SaveAs()
方法