复制一系列值并粘贴它们用逗号连接

时间:2016-08-29 11:51:13

标签: vba excel-vba excel

我在Excel中使用新的宏,而且我很难创建一个应该很容易的宏,但我不知道如何编写它。 我需要复制一系列单元格值(给定第一个单元格,A2和最后一个单元格,Z2),但它是一个动态范围,我需要知道最后一个填充行来定义整个范围。然后,我需要用逗号连接值并将这些值存储在.csv文件中。

This is the origin template

This would be the resulting .csv

我该怎么做?我认为这并不困难,我真的很感激任何帮助。

非常感谢

2 个答案:

答案 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()方法