Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/После Save As в файле с новым именем работают кнопки - Страница 2 - Мир MS Excel

Старая форма входа
  • Страница 2 из 2
  • «
  • 1
  • 2
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » После Save As в файле с новым именем работают кнопки (Макросы Sub)
После Save As в файле с новым именем работают кнопки
DAKRAY Дата: Понедельник, 16.12.2013, 17:18 | Сообщение № 21
Группа: Пользователи
Ранг: Участник
Сообщений: 73
Репутация: 1 ±
Замечаний: 0% ±

Excel 2003
Я на разных компах пробовал. На рабочем у меня стоит лицензионный диск, все ровно выкидывает. Это не может быть связано с тем, что у Вас русский эксель, у меня английский? Вроде ж не должно было бы так быть.

если я правильно понял вопрос
Set wkbWorkbook1 = ActiveWorkbook ' Workbooks("Book1.xls")

так не пойдет, попробовал, тогда он начинает неправильно копировать все в Book2.xls, ибо когда он его открывает, Book2.xls становится активным.
Цитата DAKRAY, 15.12.2013 в 02:57, в сообщении № 14
сохраняем файл с другим именем, и пробуем нажать кнопку - она уже не работает, потому что имя файла изменилось.
Если сначала "Сохранить" с текущим именем а потом "Сохранить как" с другим, закрыть и открыть тот, с текущим, все будет работать.

нет. не работает. В приложении рисунок с дэбагом, после того как даю файлу новое имя. Код не работает.
К сообщению приложен файл: 0801511.gif (50.5 Kb)
 
Ответить
СообщениеЯ на разных компах пробовал. На рабочем у меня стоит лицензионный диск, все ровно выкидывает. Это не может быть связано с тем, что у Вас русский эксель, у меня английский? Вроде ж не должно было бы так быть.

если я правильно понял вопрос
Set wkbWorkbook1 = ActiveWorkbook ' Workbooks("Book1.xls")

так не пойдет, попробовал, тогда он начинает неправильно копировать все в Book2.xls, ибо когда он его открывает, Book2.xls становится активным.
Цитата DAKRAY, 15.12.2013 в 02:57, в сообщении № 14
сохраняем файл с другим именем, и пробуем нажать кнопку - она уже не работает, потому что имя файла изменилось.
Если сначала "Сохранить" с текущим именем а потом "Сохранить как" с другим, закрыть и открыть тот, с текущим, все будет работать.

нет. не работает. В приложении рисунок с дэбагом, после того как даю файлу новое имя. Код не работает.

Автор - DAKRAY
Дата добавления - 16.12.2013 в 17:18
KuklP Дата: Понедельник, 16.12.2013, 17:36 | Сообщение № 22
Группа: Проверенные
Ранг: Старожил
Сообщений: 2369
Репутация: 486 ±
Замечаний: 0% ±

2003-2010
Попробуйте сразу присваивать лист переменной:
[vba]
Код
    Dim wbs As Worksheet
      Set wbs = Workbooks.Open(ThisWorkbook.Path & "\Book2.xls").Sheets(1)
[/vba]
после этого к книге можно обратиться через свойство листа parent, например:
[vba]
Код
wbs.parent.close true
[/vba]
А дальше по обрывку кода на картинке я не понимаю, что будет происходить и что нужно.


Ну с НДС и мы чего-то стoим! kuklp60@gmail.com
WM Z206653985942, R334086032478, U238399322728
 
Ответить
СообщениеПопробуйте сразу присваивать лист переменной:
[vba]
Код
    Dim wbs As Worksheet
      Set wbs = Workbooks.Open(ThisWorkbook.Path & "\Book2.xls").Sheets(1)
[/vba]
после этого к книге можно обратиться через свойство листа parent, например:
[vba]
Код
wbs.parent.close true
[/vba]
А дальше по обрывку кода на картинке я не понимаю, что будет происходить и что нужно.

Автор - KuklP
Дата добавления - 16.12.2013 в 17:36
Матраскин Дата: Понедельник, 16.12.2013, 17:37 | Сообщение № 23
Группа: Друзья
Ранг: Обитатель
Сообщений: 375
Репутация: 81 ±
Замечаний: 0% ±

20xx
Вопрос: можно ли сделать что-то наподобии Workbooks("***k1.xls"), где к1 будет константой в названиях всех новых файлов, а вместо "***" будет новое имя?


[vba]
Код
Sub m()
    Dim TestString As String, Name As String
    TestString = "***k1.xls"
    Name = Right(TestString, 6)
    MsgBox Name
End Sub
[/vba]
и не важно как звать


в интернете опять кто-то не прав

Сообщение отредактировал Матраскин - Понедельник, 16.12.2013, 17:38
 
Ответить
Сообщение
Вопрос: можно ли сделать что-то наподобии Workbooks("***k1.xls"), где к1 будет константой в названиях всех новых файлов, а вместо "***" будет новое имя?


[vba]
Код
Sub m()
    Dim TestString As String, Name As String
    TestString = "***k1.xls"
    Name = Right(TestString, 6)
    MsgBox Name
End Sub
[/vba]
и не важно как звать

Автор - Матраскин
Дата добавления - 16.12.2013 в 17:37
KuklP Дата: Понедельник, 16.12.2013, 17:58 | Сообщение № 24
Группа: Проверенные
Ранг: Старожил
Сообщений: 2369
Репутация: 486 ±
Замечаний: 0% ±

2003-2010
Матраскин, как это поможет обратиться к нужному файлу?
DAKRAY, вот смотрите, макрос из 1-го сообщения темы, повыбрасывал оттуда все пока не нужное для облегчения восприятия:
[vba]
Код
Private Sub CommandButton1_Click()
       Dim sourcerange As Range
       Dim destrange As Range
          
       Set sourcerange = ThisWorkbook.ActiveSheet.Range("A1:C5")
       Set destrange = Workbooks.Open(ThisWorkbook.Path & "\Book2.xls").Sheets(1).Range("A6:C10")
          
       sourcerange.Copy destrange
       destrange = destrange.Value
       destrange.Parent.Parent.Close -1
End Sub
[/vba]
Открыли, скопировали, закрыли с сохранением. Что дальше?


Ну с НДС и мы чего-то стoим! kuklp60@gmail.com
WM Z206653985942, R334086032478, U238399322728


Сообщение отредактировал KuklP - Понедельник, 16.12.2013, 17:59
 
Ответить
СообщениеМатраскин, как это поможет обратиться к нужному файлу?
DAKRAY, вот смотрите, макрос из 1-го сообщения темы, повыбрасывал оттуда все пока не нужное для облегчения восприятия:
[vba]
Код
Private Sub CommandButton1_Click()
       Dim sourcerange As Range
       Dim destrange As Range
          
       Set sourcerange = ThisWorkbook.ActiveSheet.Range("A1:C5")
       Set destrange = Workbooks.Open(ThisWorkbook.Path & "\Book2.xls").Sheets(1).Range("A6:C10")
          
       sourcerange.Copy destrange
       destrange = destrange.Value
       destrange.Parent.Parent.Close -1
End Sub
[/vba]
Открыли, скопировали, закрыли с сохранением. Что дальше?

Автор - KuklP
Дата добавления - 16.12.2013 в 17:58
DAKRAY Дата: Понедельник, 16.12.2013, 18:23 | Сообщение № 25
Группа: Пользователи
Ранг: Участник
Сообщений: 73
Репутация: 1 ±
Замечаний: 0% ±

Excel 2003
Так а дальше ничего! Проблема решена (Почти)!!!
Делаю этому файлу сэйв ас с новым именем и в новом файле кнопка красиво срабатывает!!!

Единственное не понимаю почему он копирует все так же как в файле а не значения, хотя вроде как ему указано, что нужно значение:

[vba]
Код
destrange = destrange.Value
[/vba]


Сообщение отредактировал DAKRAY - Понедельник, 16.12.2013, 18:37
 
Ответить
СообщениеТак а дальше ничего! Проблема решена (Почти)!!!
Делаю этому файлу сэйв ас с новым именем и в новом файле кнопка красиво срабатывает!!!

Единственное не понимаю почему он копирует все так же как в файле а не значения, хотя вроде как ему указано, что нужно значение:

[vba]
Код
destrange = destrange.Value
[/vba]

Автор - DAKRAY
Дата добавления - 16.12.2013 в 18:23
AndreTM Дата: Понедельник, 16.12.2013, 18:34 | Сообщение № 26
Группа: Друзья
Ранг: Старожил
Сообщений: 1762
Репутация: 500 ±
Замечаний: 0% ±

2003 & 2010
destrange = destrange.Value
Откуда вы взяли такой код? :)
[vba]
Код
With destrange.Cells
     .Value = .Value
End With
[/vba]


Skype: andre.tm.007
Donate: Qiwi: 9517375010
 
Ответить
Сообщение
destrange = destrange.Value
Откуда вы взяли такой код? :)
[vba]
Код
With destrange.Cells
     .Value = .Value
End With
[/vba]

Автор - AndreTM
Дата добавления - 16.12.2013 в 18:34
DAKRAY Дата: Понедельник, 16.12.2013, 18:37 | Сообщение № 27
Группа: Пользователи
Ранг: Участник
Сообщений: 73
Репутация: 1 ±
Замечаний: 0% ±

Excel 2003
Вставил из старого кода в конце строчку:

[vba]
Код
Private Sub CommandButton1_Click()
     Dim sourcerange As Range
     Dim destrange As Range
          
     Set sourcerange = ThisWorkbook.ActiveSheet.Range("A1:C5")
     Set destrange = Workbooks.Open(ThisWorkbook.Path & "\Book2.xls").Sheets(1).Range("A6:C10")
          
     sourcerange.Copy
     destrange.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False

End Sub
[/vba]

Все теперь как надо копирует)) KukIp Вы как всегда все упростили до минимума, а результат как всегда отличный.
Моей благодарности нет границ. Спасибо, спасибо, спасибо!!!
Правда первом файле диапазон обведен полосатой линией, как когда "Copy" делаешь! Но это пустяк.
 
Ответить
СообщениеВставил из старого кода в конце строчку:

[vba]
Код
Private Sub CommandButton1_Click()
     Dim sourcerange As Range
     Dim destrange As Range
          
     Set sourcerange = ThisWorkbook.ActiveSheet.Range("A1:C5")
     Set destrange = Workbooks.Open(ThisWorkbook.Path & "\Book2.xls").Sheets(1).Range("A6:C10")
          
     sourcerange.Copy
     destrange.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False

End Sub
[/vba]

Все теперь как надо копирует)) KukIp Вы как всегда все упростили до минимума, а результат как всегда отличный.
Моей благодарности нет границ. Спасибо, спасибо, спасибо!!!
Правда первом файле диапазон обведен полосатой линией, как когда "Copy" делаешь! Но это пустяк.

Автор - DAKRAY
Дата добавления - 16.12.2013 в 18:37
KuklP Дата: Понедельник, 16.12.2013, 18:39 | Сообщение № 28
Группа: Проверенные
Ранг: Старожил
Сообщений: 2369
Репутация: 486 ±
Замечаний: 0% ±

2003-2010
Андрей, код взят из №24. И у меня он работает правильно. Копирует значения. Зачем там указывать cells?
На крайняк:
[vba]
Код
destrange.Value = destrange.Value
[/vba]чтоб уточнить Эксу, какое свойство мы имеем ввиду.


Ну с НДС и мы чего-то стoим! kuklp60@gmail.com
WM Z206653985942, R334086032478, U238399322728
 
Ответить
СообщениеАндрей, код взят из №24. И у меня он работает правильно. Копирует значения. Зачем там указывать cells?
На крайняк:
[vba]
Код
destrange.Value = destrange.Value
[/vba]чтоб уточнить Эксу, какое свойство мы имеем ввиду.

Автор - KuklP
Дата добавления - 16.12.2013 в 18:39
DAKRAY Дата: Понедельник, 16.12.2013, 18:48 | Сообщение № 29
Группа: Пользователи
Ранг: Участник
Сообщений: 73
Репутация: 1 ±
Замечаний: 0% ±

Excel 2003
Почему-то и при

[vba]
Код
destrange.Value = destrange.Value
[/vba]

копировать значения не хочет, просто все как Copy-Past закидывает. Странно.

А вот при
[vba]
Код
sourcerange.Copy
     destrange.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
[/vba]
Копирует именно значения, только не оставляет эту полосатую линию обведенную в первой книге.))
 
Ответить
СообщениеПочему-то и при

[vba]
Код
destrange.Value = destrange.Value
[/vba]

копировать значения не хочет, просто все как Copy-Past закидывает. Странно.

А вот при
[vba]
Код
sourcerange.Copy
     destrange.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
[/vba]
Копирует именно значения, только не оставляет эту полосатую линию обведенную в первой книге.))

Автор - DAKRAY
Дата добавления - 16.12.2013 в 18:48
KuklP Дата: Понедельник, 16.12.2013, 18:53 | Сообщение № 30
Группа: Проверенные
Ранг: Старожил
Сообщений: 2369
Репутация: 486 ±
Замечаний: 0% ±

2003-2010
Хорошо, сделайте так:
[vba]
Код
Private Sub CommandButton1_Click()
     Dim a, destrange As Range
     a = ThisWorkbook.ActiveSheet.Range("A1:C5").Value
     Set destrange = Workbooks.Open(ThisWorkbook.Path & "\Book2.xls").Sheets(1).Range("A6:C10")
     destrange = a
     'destrange.Parent.Parent.Close -1
End Sub
[/vba]


Ну с НДС и мы чего-то стoим! kuklp60@gmail.com
WM Z206653985942, R334086032478, U238399322728
 
Ответить
СообщениеХорошо, сделайте так:
[vba]
Код
Private Sub CommandButton1_Click()
     Dim a, destrange As Range
     a = ThisWorkbook.ActiveSheet.Range("A1:C5").Value
     Set destrange = Workbooks.Open(ThisWorkbook.Path & "\Book2.xls").Sheets(1).Range("A6:C10")
     destrange = a
     'destrange.Parent.Parent.Close -1
End Sub
[/vba]

Автор - KuklP
Дата добавления - 16.12.2013 в 18:53
DAKRAY Дата: Понедельник, 16.12.2013, 18:58 | Сообщение № 31
Группа: Пользователи
Ранг: Участник
Сообщений: 73
Репутация: 1 ±
Замечаний: 0% ±

Excel 2003
А вот так - ВСЕ ПРЕКРАСНО!
Отлично! Я рад, я рад, я рад, я... рад. KukIp в модераторы!))
Спасибищщеее.

Тему можно закрывать.


Сообщение отредактировал DAKRAY - Понедельник, 16.12.2013, 18:59
 
Ответить
СообщениеА вот так - ВСЕ ПРЕКРАСНО!
Отлично! Я рад, я рад, я рад, я... рад. KukIp в модераторы!))
Спасибищщеее.

Тему можно закрывать.

Автор - DAKRAY
Дата добавления - 16.12.2013 в 18:58
RAN Дата: Понедельник, 16.12.2013, 19:00 | Сообщение № 32
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
Копирует
[vba]
Код
sourcerange.Copy
[/vba]
а
[vba]
Код
destrange.Value = destrange.Value
[/vba]
ничего не копирует, а заменяет формулы на значения после копирования.
Для переноса значений можно
[vba]
Код
destrange.Value = sourcerange.Value
[/vba]


Быть или не быть, вот в чем загвоздка!
 
Ответить
СообщениеКопирует
[vba]
Код
sourcerange.Copy
[/vba]
а
[vba]
Код
destrange.Value = destrange.Value
[/vba]
ничего не копирует, а заменяет формулы на значения после копирования.
Для переноса значений можно
[vba]
Код
destrange.Value = sourcerange.Value
[/vba]

Автор - RAN
Дата добавления - 16.12.2013 в 19:00
DAKRAY Дата: Понедельник, 16.12.2013, 19:12 | Сообщение № 33
Группа: Пользователи
Ранг: Участник
Сообщений: 73
Репутация: 1 ±
Замечаний: 0% ±

Excel 2003
Сообщение № 30 - самый короткий, работающий код. Больше ничего туда не надо)
 
Ответить
СообщениеСообщение № 30 - самый короткий, работающий код. Больше ничего туда не надо)

Автор - DAKRAY
Дата добавления - 16.12.2013 в 19:12
Wasilich Дата: Понедельник, 16.12.2013, 19:36 | Сообщение № 34
Группа: Друзья
Ранг: Старожил
Сообщений: 1232
Репутация: 326 ±
Замечаний: 0% ±

2003
Тему можно закрывать.
Сомневаюсь! :)
Потому как решение задачи сделано "шиворот навыворот" и проблемы будут. yes
 
Ответить
Сообщение
Тему можно закрывать.
Сомневаюсь! :)
Потому как решение задачи сделано "шиворот навыворот" и проблемы будут. yes

Автор - Wasilich
Дата добавления - 16.12.2013 в 19:36
Мир MS Excel » Вопросы и решения » Вопросы по VBA » После Save As в файле с новым именем работают кнопки (Макросы Sub)
  • Страница 2 из 2
  • «
  • 1
  • 2
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!