Как сохранить лист в Excel в CSV с помощью VBA и сохранить файл как имя пользователя и дату? - PullRequest
0 голосов
/ 18 февраля 2019

Привет и всем привет.

Извините, если то, что я сейчас спросил, звучит глупо или глупо, но я относительно новичок в VBA и не очень хорошо с ним говорю.

Теперь у меня есть форма для ввода пользователем отчета об инциденте, произошедшем на их рабочем месте, и мне удается сохранить рабочий лист данных как csv, но теперь я хочу автоматически сохранить лист как имя пользователя и время, которое распечатал csv.

Вот как выглядит мой код.

Public Sub ExportWorksheetAndSaveAsCSV()

Dim wbkExport As Workbook
Dim shtToExport As Worksheet
Dim xStrDate As String


Set shtToExport = ThisWorkbook.Worksheets("PartsData")
xStrDate = Format(Now, "yyyy-mm-dd hh-mm-ss")
Set wbkExport = Application.Workbooks.Add

shtToExport.Copy Before:=wbkExport.Worksheets(wbkExport.Worksheets.Count)
Application.DisplayAlerts = False

wbkExport.SaveAs FileName:=xStrDate,"C:\temp\IncidentDatabase.csv", FileFormat:=xlCSV
Application.DisplayAlerts = True

wbkExport.Close SaveChanges:=False

End Sub

, и когда я пытаюсь запустить код, это происходит

enter image description here

это выделено в этой части -

wbkExport.SaveAs FileName:=xStrDate,"C:\temp\IncidentDatabase.csv", FileFormat:=xlCSV

Я прочитал некоторые из почти похожих вопросов, но не нашел ответа.Пожалуйста, помогите мне.Спасибо.Regard.

Ответы [ 3 ]

0 голосов
/ 18 февраля 2019

Скопируйте рабочий лист без указания местоположения.Это создает новую рабочую книгу с копированной рабочей таблицей в качестве единственной рабочей таблицы.

Функция ENVIRON может извлекать переменные среды, например имя пользователя.

Public Sub ExportWorksheetAndSaveAsCSV()

    Dim fn As String

    fn = environ("USERNAME") & "-" & Format(Now, "yyyy-mm-dd hh-mm-ss")

    ThisWorkbook.Worksheets("PartsData").Copy

    With activeworkbook
        Application.DisplayAlerts = false
        .SaveAs FileName:="C:\temp\" & fn, FileFormat:=xlCSV
        Application.DisplayAlerts = true
        .close savechanges:=false
    end with

End Sub
0 голосов
/ 18 февраля 2019

Я думаю, что строка кода

wbkExport.SaveAs FileName:=xStrDate,"C:\temp\IncidentDatabase.csv", FileFormat:=xlCSV 

должна быть изменена на

 wbkExport.SaveAs FileName:="C:\temp\IncidentDatabase - " & xStrDate & ".csv", FileFormat:=xlCSV

для правильной работы

0 голосов
/ 18 февраля 2019

Пожалуйста, посмотрите .SaveAs свойства здесь .

Первый аргумент - это имя, а второй - тип файла.

Dim loc As String
loc = "C:\temp\"
xStrDate = Format(Now, "yyyy-mm-dd hh-mm-ss")

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