Vb&ms Excel

  • Автор темы Kupu4
  • Дата начала
Статус
Закрыто для дальнейших ответов.
K

Kupu4

#1
Всем доброго дня!
Столкнулся с необходимостью написания макрос для Excel'я. С программированием в принципе знаком(AS3), но синтаксиса VB не знаю вообще...
сама задача проста как 3 рубля. надо переконвертировать ods файлы в xls. я установил плагин для открытия ods файлов через Excel. необходимо переконвертировать 100+ файлов. руками делать как то лень) и мне пришла в голову идея написания макроса под это дело. я в принципе понимаю суть того что надо сделать, но не понимаю как...

вот мои предположения:
1) более простой способ. можно открывать все файлы в ручную, надо только автоматически их сохранять(так как все файлы обозваны черт знает как и имена менять не надо, а оставить такими же как и были).
при импорте ods файла он создает xls файл с чудесным названием "Temprorary ODF", но при попытке его обратно экспортировать в ods он по умолчанию предлагает исходное имя ods файла(я думаю тут то и надо макросом это имя как то забрать у него). далее добавить к этому имени расширение xls и вуа ля, я получаю то что хотел.
2) более сложный(по крайней мере для меня). сделать макрос, который самостоятельно бы открывал ods файлы, забирал их имена и сохранял их как xls.

буду рад любой помощи! даже если скинете ссылку на источник, в котором уже решалась схожая задача.
Заранее спасибо!
 
T

Tanya

#2
Нет возможности проверить )))
но как-то так:

Код:
Sub TransferFiles(ByVal strPath As String)

Dim intPos As Integer
Dim strFile As String
Dim xlBook As Workbook

strFile = Dir$("*.ods")
Do While Len(strFile) > 0
intPos = InStrRev(strFile, ".ods")

If intPos > 0 Then
strFile = Left$(strFile, intPos) + "xls"
Set xlBook = Application.Workbooks.Open(strFile)
Call xlBook.SaveAs(strFile, xlExcel8)

xlBook.Close False

End If
strFile = Dir$()
Loop

End Sub

strPath - папка, в которой лежат файлы ods
кааанешна, можно сделать и с выбором файлов, но боюсь быть голословной ))
и накосячить еще больше, чем в приведенном примере )))
(хотя, в глубине души, надеюсь, что тут ошибок минимум)
 
Статус
Закрыто для дальнейших ответов.