Excel это не сложно
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
19.04.2024, 12:46:39

Войти
Хотите поблагодарить участника за дельный совет? Нажмите [Повысить]. Так вы заслуженно поднимите репутацию активному участнику.
33 242 Сообщений в 5 457 Тем от 6 758 Пользователей
Последний пользователь: Сергей2662
*
Перейти на сайт Хитрости Надстройка MulTEx Обучающие тренинги Наша группа ВКонтакте
Правила форума Начало Помощь Поиск Календарь Войти Регистрация Выйти
+  Excel это не сложно
|-+  Основные форумы
| |-+  Вопросы по Excel и VBA
| | |-+  Скорректировать код под файлы Excel более нового поколения .xlsx, .xlsm
Страниц: [1]   Вниз
Печать
Автор Тема: Скорректировать код под файлы Excel более нового поколения .xlsx, .xlsm  (Прочитано 2205 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Valetnina
Постоялец
***

Репутация: +2/-0
Офлайн Офлайн

Сообщений: 153



Просмотр профиля WWW E-mail
« : 08.02.2021, 19:03:50 »

Здравствуйте.

Написала код для изменения закрытого файла Excel "File_Target.xls". Он лежит на рабочем столе, это прописано в коде (его местоположение).
Файл .xls - Excel 1997-2003 - обрабатывается без запинки. И совершенно не работает, если применить его к файлу более нового поколения - .xlsx, .xlsm.
Кто может подсказать, что нужно изменить в коде, чтобы срабатывало для файлов более нового поколения - .xlsx, .xlsm ?

Код: (vb)
Option Explicit
Option Compare Text

Sub V_Sub_Modify_closed_File_Target_xls()
    Call V_Sub_Closed_File_Change(VBA.Environ("USERPROFILE") & "\Desktop\File_Target.xls")
End Sub 'V_Sub_Modify_closed_File_Target_xls
Sub V_Sub_Closed_File_Change(LSp_File_name As String)
    Dim binaryStream As Object
   
    With CreateObject("ADODB.Stream") 'End With 'With CreateObject("ADODB.Stream")
        .Type = 2: .Charset = "utf-8": .Open
            .WriteText "Nous sommes le " & CDate(VBA.Now)
           
         Set binaryStream = CreateObject("ADODB.Stream")
            binaryStream.Type = 1: binaryStream.Mode = 3: binaryStream.Open
                .Position = 3: .CopyTo binaryStream        'Skip BOM bytes
                    .flush: .Close
                binaryStream.SaveToFile LSp_File_name, 2
            binaryStream.Close
    End With 'With CreateObject("ADODB.Stream")
        MsgBox "File_Target.xls on the desktop successfully updated", vbInformation, "VL for Vinci, 02.2021"
End Sub 'V_Sub_Closed_File_Change
 
Sub V_Sub_File_Target_Open()
    Workbooks.Open Filename:=VBA.Environ("USERPROFILE") & "\Desktop\File_Target.xls"
End Sub 'V_Sub_File_Target_Open
Sub V_Sub_Clear_closed_File_Target_xls()
    Call V_Sub_File_Target_Clear(VBA.Environ("USERPROFILE") & "\Desktop\File_Target.xls")
End Sub 'V_Sub_Clear_closed_File_Target_xls

Sub V_Sub_File_Target_Clear(LSp_File_name As String)
    Dim binaryStream As Object

    With CreateObject("ADODB.Stream") 'End With 'With CreateObject("ADODB.Stream")
        .Type = 2: .Charset = "utf-8": .Open
            .WriteText ""
           
         Set binaryStream = CreateObject("ADODB.Stream")
            binaryStream.Type = 1: binaryStream.Mode = 3: binaryStream.Open
                .Position = 3: .CopyTo binaryStream        'Skip BOM bytes
                    .flush: .Close
                binaryStream.SaveToFile LSp_File_name, 2
            binaryStream.Close
    End With 'With CreateObject("ADODB.Stream")
        MsgBox "File_Target.xls on the desktop successfully cleared", vbInformation, "VL for Vinci, 02.2021"
End Sub 'V_Sub_File_Target_Clear

Записан
Valetnina
Постоялец
***

Репутация: +2/-0
Офлайн Офлайн

Сообщений: 153



Просмотр профиля WWW E-mail
« Ответ #1 : 13.02.2021, 10:16:40 »

С файлом .xlsm выходит ошибка 1004 run time error, если точнее.
Записан
Valetnina
Постоялец
***

Репутация: +2/-0
Офлайн Офлайн

Сообщений: 153



Просмотр профиля WWW E-mail
« Ответ #2 : 14.02.2021, 07:51:25 »

Здравствуйте.
Я разобралась. Написанный код ерунда.
Проще открывать файл, менять и закрывать.
Прошу считать тему закрытой.
Записан
Страниц: [1]   Вверх
Печать
Перейти в:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2006-2011, Simple Machines Valid XHTML 1.0! Valid CSS!
Яндекс.Метрика Рейтинг@Mail.ru