2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему
 
 Старый Excel-файл со старым макросом [Excel 2003]
Сообщение07.08.2018, 23:36 


16/10/14

667
Есть старый файл типа: "Лист Microsoft Office Excel 97-2003 (.xls)" Для того чтобы его запустить я скачал Excel 2003 (некую портативную сбору), но макрос в этом файле отказался работать. Пишет:

Compile error:
Syntax error

Сам макрос такой:

код: [ скачать ] [ спрятать ]
Используется синтаксис Visual Basic
Sub Макрос2()
    i = 0
    For i = 1 To 20
    Sheets(i).Activate
    Range("H1").Select
    x = Selection.Value
    If x = 1 Then GoTo nd
    Range("C5:D105").Select
    Selection.ClearContents
    ActiveWindow.ScrollWorkbookTabs Position:=xlFirst
    Sheets(i).Select
    Range("H5:H105").Select
    Selection.Copy
    Range("C5").Select
    Selection.PasteSpecial Paste:=xlValues; Operation:=xlNone; _
        SkipBlanks:=False; Transpose:=False
    Range("H5:H105").Select
    Application.CutCopyMode = False
    Selection.ClearContents
    Range("A3").Select
nd:
    Range("A3").Select
    Next i
       
      Sheets("Лист1").Select
End Sub


Проблема видимо в этих строках, они выделены красным

Используется синтаксис Visual Basic
Selection.PasteSpecial Paste:=xlValues; Operation:=xlNone; _
        SkipBlanks:=False; Transpose:=False


Макрос должен работать по нажатию клавиши с названием "Новый день"

Что не так с этим макросом? На другом компьютере, он уже почти 19 лет работает. Про другой компьютер, если я правильно понял то на этом другом компьютере установлена операционная система Windows 95 и Microsoft Office 95. Как адаптировать этот файл под более современную операционную систему?

 Профиль  
                  
 
 Re: Старый Excel-файл со старым макросом
Сообщение07.08.2018, 23:52 
Заслуженный участник


06/07/11
5627
кран.набрать.грамота
Возможно, дело в объявлении переменных. Эксель вообще-то должен показывать, в какой строке ошибка. Можно попробовать вставить первой строкой в начале функции

Используется синтаксис Visual Basic
Dim i as Long

А вообще, сказать, что код ужасен - это ничего не сказать. Все это можно нужно выкинуть и заменить на

Используется синтаксис Visual Basic
Sub Макрос2()
    Dim i as Long
    i = 0
    For i = 1 To 20
      if Range("H1").Value <> 1 then
         Sheets(i).Range("H5:H105").Copy Destination := Sheets(i).Range("C5")
         Sheets(i).Range("D5:D105").ClearContents
       end if
    Next i
    Sheets("Лист1").Select
End Sub

Только я уже 10 лет на нем не писал, нюансы мог забыть. Ну и с копированием надо посмотреть, как копировать только значения, а не все подряд.

 Профиль  
                  
 
 Re: Старый Excel-файл со старым макросом
Сообщение08.08.2018, 00:04 
Заслуженный участник


12/07/07
4522
Скорее всего нужно заменить разделители элементов списка
Используется синтаксис Visual Basic
 Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False


-- Tue 07.08.2018 23:13:29 --

Если этого будет недостаточно, то посмотрите имена констант в своей версии. Возможно будет нужно изменить имена констант
Используется синтаксис Visual Basic
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlPasteSpecialOperationNone, SkipBlanks:=False, Transpose:=False

 Профиль  
                  
 
 Re: Старый Excel-файл со старым макросом
Сообщение08.08.2018, 00:31 


16/10/14

667
rockclimber, GAA спасибо за помощь, заработало

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 4 ] 

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group