ActiveWorkbook.Name возвращает строку?Новая проблема: говорит "файл поврежден" - PullRequest
0 голосов
/ 12 октября 2018

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

Sub cellvalue_filename()
Dim Path As String
Dim filename As String
Dim WBname

Path = "C:\Users\user\filename"
WBname = ActiveWorkbook.Name
filename = Path & Range("B2") & WBname
MsgBox (filename)
ActiveWorkbook.SaveAs filename, xlCSV
ActiveWorkbook.Close
End Sub

Я пишу модуль Excel, используя vba, чтобы переименовать имя файла путем объединения значения ячейки и текущего имени файла.

My fullкод выглядит следующим образом:

Sub cellvalue_filename ()
    Dim Path As String
    Dim filename As String
    Dim WBname

    Path = "C:\Users\username\Desktop\Test\"
    WBname = ActiveWorkbook.Name
    filename = Path & Range("B2") & WBname & ".csv"
    ActiveWorkbook.SaveAs filename, xlCSV
    ActiveWorkbook.Close
End Sub

Я получаю ошибку времени выполнения 1004 с использованием строки: ActiveWorkbook.SaveAs filename, xlCSV, но я думаю, что первоначальная проблема может быть в использовании WBname = ActiveWorkbook.Name, поскольку я изначально удалил маркировку его As String потому что это дало мне ошибку для неправильного типа.Я не уверен, что это проблема или FileFormat не так.Я использую Windows, и расширение файла говорит .csv, поэтому не уверен, что это актуальная проблема.

1 Ответ

0 голосов
/ 12 октября 2018

ActiveWorkbook является Workbook объектом.Итак, давайте посмотрим на свойства класса Workbook.Нажмите клавишу F2, чтобы открыть браузер объектов , найдите класс Workbook, выделите свойство Name:

Workbook class members

Да, определенно строка.

Вы делаете предположение о содержимом строки, а не о типе .Убедитесь, что вы передаете правильное имя файла методу Workbook.SaveAs.

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