VBA пишет файл csv вместо этого записывает файл xcsv - PullRequest
0 голосов
/ 14 июля 2020

Я новичок в этом, поэтому я сомневаюсь, что смогу дать какие-либо ответы на любые вопросы, но я могу резюмировать свой обнадеживающий результат.

У меня есть таблица Excel, которую мне нужно преобразовать в файл CSV . Это может происходить несколько раз на протяжении всей временной шкалы моего проекта, поэтому я пытаюсь создать код VBA с кнопкой для записи файла csv.

Моя цель - перезаписать код существующего файла CSV, который находится внутри тот же путь к файлу excel

Пока это то, что у меня есть:

Sub write_csv_xls ()

Application.DisplayAlerts = False

xls = ActiveWorkbook.FullName
Length = Len(xls) - 3
csv = Left(xls, Length) & "csv"
dlist = Left(xls, Length - 1)

ActiveWorkbook.SaveAs Filename:= _
    csv, FileFormat:=xlCSV, _
    CreateBackup:=False
ActiveWorkbook.SaveAs Filename:= _
    xls, FileFormat:=xlNormal, _
     Password:="", WriteResPassword:="", ReadOnlyRecommended:= _
    False, CreateBackup:=False
    
Application.DisplayAlerts = True

ActiveSheet.Name = "TITLEBLOCK_DRAWING LIST"
ActiveCell.Select

MsgBox "CSV and XLS files saved"
    

End Sub

Это создание файла xcsv по правильному пути к файлу, и он дает мне правильный вывод, который я могу прочитать в текстовом файле. Для моего приложения код должен работать с файлом csv. Есть идеи?

Спасибо

1 Ответ

0 голосов
/ 14 июля 2020

Ваша проблема в том, что имя вашего файла Excel, вероятно, похоже на «workbook.xlsm», а в вашем коде вы теряете только правильные 3 символа. Гораздо лучше (для работы со старыми файлами .xls, а также файлами .xlsm) использовать InStrRev для поиска первого появления символа "." справа:

csv = Left(xls, InStrRev(xls, ".")) & "csv"

С уважением,

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