每当csv更新时,是否可以使Excel自动将整个csv复制到电子表格中?

时间:2019-01-21 22:12:22

标签: excel

应用程序将数据输出为CSV文件。然后,我在Excel中打开CSV文件,然后将内容复制并粘贴到Excel工作簿的电子表格中。该工作簿具有处理数据并绘制图形的电子表格。

每次更新CSV文件时,我都必须手动打开CSV文件并将其内容复制到工作簿中。这是tedios。另外,如果CSV文件已打开并且我尝试写入该文件,则该应用程序会报错。这意味着,我必须在复制数据后关闭CSV文件。我已经做了几十次,并且想要一个替代解决方案。

每当CSV文件更新时,Excel是否有可能自动将数据从CSV文件复制到工作簿中的电子表格中?

1 个答案:

答案 0 :(得分:0)

宏将是您最好的朋友。

首先在excel选项中打开“开发人员”标签。 Excel Options

现在转到显示开发人员顶部的标签。您将看到“记录宏”按钮,还有一个称为“ Visual Basic”的按钮。作为初学者,打开所需的工作表然后单击记录可能会更容易,它将记录您的工作,然后单击“停止”将保存一个完成工作的文件。

您可以尝试编辑以下内容以适合您的需求。

Sub CopyIn()
Dim CurrWB As Variant
CurrWB = ActiveWorkbook.Name
Dim StartSheet As Variant
StartSheet = ActiveSheet.Name
Dim CurrSheet As Variant
CurrSheet = ActiveSheet.Name
Dim CurrCol As Variant
Dim CurrRow As Variant
CurrCol = ActiveCell.Column
CurrRow = ActiveCell.Row

Dim Closing As Variant
If CurrWB = "yourCSVfile" Then
Closing = MsgBox("Critical Error" & Chr(10) & "Looks like the CSV download sheet is currently selected" & Chr(10) & "Cannot import into the CSV's download" & Chr(10) & Chr(9) & Chr(9) & "...Closing import tool now", vbCritical, "Importing Error")
Exit Sub
End If

Workbooks("yourCSVfile").Activate
Sheets("Sheet1").Select
Cells(1, 1).Select
Range(Selection, ActiveCell.SpecialCells(xlLastCell)).Select
Selection.Copy
Workbooks(CurrWB).Activate
Sheets(CurrSheet).Select

Cells(CurrRow, CurrCol).Select
ActiveSheet.PasteSpecial Format:="HTML", Link:=False, DisplayAsIcon:= _
    False, NoHTMLFormatting:=True

ActiveSheet.Paste
Selection.EntireColumn.AutoFit

'closes the CSV file
'
'Uncomment the below lines to close the CSV file at the end
'
'Windows("yourCSVfile").Activate
'ActiveWindow.Close

Workbooks(CurrWB).Activate
ActiveWindow.WindowState = xlMaximized

End Sub

希望这会有所帮助。您将需要将“ yourCSVfile”更改为文件的实际标题。以上内容会将文件复制到您打开的任何工作表中。我通常使用已经为.xlsx的文件来完成此操作,因此您可能需要对最后,您可以将此代码保存到特定的电子表格中,然后将其作为宏启用工作表,但是如果您不想这样做,可以将代码保存到个人宏工作簿中然后您可以在打开任何文件时使用它。

此处的代码是一个起点,可能需要进行一些其他编辑才能使其正常工作。如果您有关于文件名和标签名的更多信息,可以将它们添加到代码中。