Можно ли сделать так, чтобы Excel автоматически копировал весь CSV в электронную таблицу при каждом обновлении CSV? - PullRequest
0 голосов
/ 22 января 2019

Приложение выводит данные в виде файла CSV.Затем я открываю файл CSV в Excel, а затем копирую и вставляю содержимое в электронную таблицу Excel.Рабочая книга имеет электронные таблицы, которые обрабатывают данные и рисуют графики.

Мне приходится вручную открывать файл CSV и копировать его содержимое в рабочую книгу каждый раз, когда файл CSV обновляется.Это тедиос.Также, если файл CSV открыт и я пытаюсь записать в него, приложение выдает ошибку.Это означает, что я должен закрыть файл CSV после копирования данных.Я сделал это несколько десятков раз и хочу найти альтернативное решение.

Возможно ли, что Excel автоматически копирует данные из файла CSV в электронную таблицу в рабочей книге всякий раз, когда файл CSV обновляется?

1 Ответ

0 голосов
/ 22 января 2019

Макросы будут вашим лучшим другом.

Сначала включите вкладку разработчика в настройках 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, поэтому вам может потребоваться внести некоторые изменения в иметь дело с файлом CSV. Наконец, вы можете сохранить этот код либо в этой конкретной электронной таблице, и тогда это будет лист включения макросов, но в случае, если вы не хотите этого делать, вы можете сохранить код в своей личной книге макросов. и затем вы можете использовать его при открытии любого файла.

Код здесь является отправной точкой и, возможно, для его работы потребуется дополнительное редактирование. Если у вас есть дополнительная информация об именах файлов и именах вкладок, их можно добавить в код.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...