Да это может быть абсолютно любой csv Просто 1 в 1
Когда открываешь csv и нажимаешь сохранить как, меняешь формат, имя фала сохраняется как у открытого. И путь как у исходного Нужно повторить данную процедуру макросом
Sub csvTOxls()
With ActiveWorkbook
BaseName = CreateObject("Scripting.FileSystemObject").GetBaseName(.Path & Application.PathSeparator & .Name)
.SaveAs Filename:=.Path & Application.PathSeparator & BaseName & ".xls", FileFormat:=xlExcel8
End With
End Sub
Согласие есть продукт при полном непротивлении сторон
Уважаемые kuklp и RAN, позволю себе небольшую ремарку, всё же ваши варианты не так универсальны, как вариант Sanja из поста #6, если в имени файла будут присутствовать точки, помимо той, что отделяет имя от расширения, то итог будет неверным. Единственное, что я бы сократил в коде из поста #6 так это вместо GetBaseName(.Path & Application.PathSeparator & .Name) использовать GetBaseName(.FullName)
Код
Sub AnyExtTOxls()
With ActiveWorkbook
BaseName = CreateObject("Scripting.FileSystemObject").GetBaseName(.FullName)
.SaveAs Filename:=.Path & Application.PathSeparator & BaseName & ".xls", FileFormat:=xlExcel8
End With
End Sub
abricos29 написал: если в имени файла будут присутствовать точки, помимо той, что отделяет имя от расширения
Эта точка должна быть тогда в самом расширении, т.к. InStrRev ищет СПРАВА налево. Т.е. от конца строки к левой её части. Что 100% дает точку, разделяющую имя файла и расширение. Потестируйте такой пример:
Код
Sub yyyy()
Dim s As String
s = "файл.точка.точка.тире.xlsx"
Debug.Print Left$(s, InStrRev(s, ".") - 1)
End Sub
Как видно, точки нам нисколько не мешают. А FSO для такой простой задачи слишком нагружает процесс, т.к. обращение к сторонней библиотеке весьма затратный процесс и не всегда оправдан.
Дмитрий(The_Prist) Щербаков и RAN - каюсь, свою ошибку осознал, имя файла с любым количеством точек действительно определяется верно, про ресурсоёмкость сторонней библиотеки понял, но всё же первый код из поста #9 сохраняет файл хоть и с правильным именем, но без расширения. Дополнил код.
Код
Sub qq()
With ActiveWorkbook
.SaveAs Left$(.FullName, InStrRev(.FullName, ".") - 1) & ".xls", 56
End With
End Sub
написал: Здравствуйте, уважаемые!Подскажите пожалуйста.Есть файл в csv, нужно макросом пересохранить в файл xls (97-2010) в туже папку с темже именемЗаписываю но прописываются пути, как чделать его универсальным не знаю. Спасибо!