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

Вход

Регистрация

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

 

= Мир MS Excel/Присвоение значений ячейкам неактивной книги - Мир MS Excel

Старая форма входа
  • Страница 1 из 2
  • 1
  • 2
  • »
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Присвоение значений ячейкам неактивной книги (Иное)
Присвоение значений ячейкам неактивной книги
Shnur1979 Дата: Вторник, 24.12.2013, 08:36 | Сообщение № 1
Группа: Гости
Доброго времени суток!
Знатоки VBA, подскажите, плиз, я уже всю голову сломал...:
Есть две книги Excel, обе открыты. Значения из первой книги надо перенести в другую по определенному алгоритму через макрос, объявленный публичным.
----
Sub ()
a = Range("Object1") '
b = Range("Object2") '
c = Range("Quatro") '
d = Range("Position") '
z = Range("Data") '
q = Range("PositionEnd") + 1 '
For i = 0 To d - 1
w = 12 + 2 * i '
e = Cells(w, 3) '
f = Cells(w, 4) + " " + Cells(w + 1, 4) '
g = Cells(w, 5) '
h = Cells(w, 6) '
j = Cells(w + 1, 7) ' здесь вроде всё понятно, макрос будет запускаться с активной книги (допустим "Заявка.xls"), да и не важно какое у неё имя т.к. она активна, главное, что есть конкретные имена ячеек значения из которых присваиваются переменным. некоторым переменным значения будут присваиваться по циклу. ошибок не выдает. всё прогоняет как надо.
далее вопрос!: как присвоенные значения автоматом передать в ячейки другой открытой книги (книга "Свод.xls", лист "MTP"), где "q" - номер строки второй книги. в столбец 2 поставить "b", в столбец 6 - "е", в столбец 11 - "z", и т.д.
.......
.......
....... ' здесь должен быть код передачи значений. с явно указанным Range проблем не возникает, а вот как сделать через переменный?
q = q + 1 ' соответственно, смещает номер строки и продолжает цикл.
Next i
End Sub
... Книга, в которую помещаются значения остается неактивной...
----

Заранее благодарен.
 
Ответить
СообщениеДоброго времени суток!
Знатоки VBA, подскажите, плиз, я уже всю голову сломал...:
Есть две книги Excel, обе открыты. Значения из первой книги надо перенести в другую по определенному алгоритму через макрос, объявленный публичным.
----
Sub ()
a = Range("Object1") '
b = Range("Object2") '
c = Range("Quatro") '
d = Range("Position") '
z = Range("Data") '
q = Range("PositionEnd") + 1 '
For i = 0 To d - 1
w = 12 + 2 * i '
e = Cells(w, 3) '
f = Cells(w, 4) + " " + Cells(w + 1, 4) '
g = Cells(w, 5) '
h = Cells(w, 6) '
j = Cells(w + 1, 7) ' здесь вроде всё понятно, макрос будет запускаться с активной книги (допустим "Заявка.xls"), да и не важно какое у неё имя т.к. она активна, главное, что есть конкретные имена ячеек значения из которых присваиваются переменным. некоторым переменным значения будут присваиваться по циклу. ошибок не выдает. всё прогоняет как надо.
далее вопрос!: как присвоенные значения автоматом передать в ячейки другой открытой книги (книга "Свод.xls", лист "MTP"), где "q" - номер строки второй книги. в столбец 2 поставить "b", в столбец 6 - "е", в столбец 11 - "z", и т.д.
.......
.......
....... ' здесь должен быть код передачи значений. с явно указанным Range проблем не возникает, а вот как сделать через переменный?
q = q + 1 ' соответственно, смещает номер строки и продолжает цикл.
Next i
End Sub
... Книга, в которую помещаются значения остается неактивной...
----

Заранее благодарен.

Автор - Shnur1979
Дата добавления - 24.12.2013 в 08:36
китин Дата: Вторник, 24.12.2013, 08:42 | Сообщение № 2
Группа: Модераторы
Ранг: Экселист
Сообщений: 7014
Репутация: 1073 ±
Замечаний: 0% ±

Excel 2007;2010;2016
Знатоки VBA,

Вопросы по Excel

deal +правила


Не судите очень строго:я пытаюсь научиться
ЯД 41001877306852
 
Ответить
Сообщение
Знатоки VBA,

Вопросы по Excel

deal +правила

Автор - китин
Дата добавления - 24.12.2013 в 08:42
Shnur1979 Дата: Вторник, 24.12.2013, 09:04 | Сообщение № 3
Группа: Гости
Сорри, не заметил вкладочку про VBA.
А тыкать носом, типа, догадайся сам... ума большого не надо.
 
Ответить
СообщениеСорри, не заметил вкладочку про VBA.
А тыкать носом, типа, догадайся сам... ума большого не надо.

Автор - Shnur1979
Дата добавления - 24.12.2013 в 09:04
китин Дата: Вторник, 24.12.2013, 09:22 | Сообщение № 4
Группа: Модераторы
Ранг: Экселист
Сообщений: 7014
Репутация: 1073 ±
Замечаний: 0% ±

Excel 2007;2010;2016
Shnur1979, вы бы прежде чем хамить,почитали бы лучше правила.с вашими каракулями мало у кого будет желание разбираться.зарегестрироваться и приложить пример было бы гораздо быстрее,чем писать столько букавок.
[moder]Тему переместил.
Shnur1979, прислушайтесь к тому, что советует Китин.
Сомневаюсь, что иначе вы ответа дождетесь


Не судите очень строго:я пытаюсь научиться
ЯД 41001877306852
 
Ответить
СообщениеShnur1979, вы бы прежде чем хамить,почитали бы лучше правила.с вашими каракулями мало у кого будет желание разбираться.зарегестрироваться и приложить пример было бы гораздо быстрее,чем писать столько букавок.
[moder]Тему переместил.
Shnur1979, прислушайтесь к тому, что советует Китин.
Сомневаюсь, что иначе вы ответа дождетесь

Автор - китин
Дата добавления - 24.12.2013 в 09:22
KuklP Дата: Вторник, 24.12.2013, 09:32 | Сообщение № 5
Группа: Проверенные
Ранг: Старожил
Сообщений: 2369
Репутация: 486 ±
Замечаний: 0% ±

2003-2010
Так пишет же, что у него травма головы.
я уже всю голову сломал
%)


Ну с НДС и мы чего-то стoим! kuklp60@gmail.com
WM Z206653985942, R334086032478, U238399322728
 
Ответить
СообщениеТак пишет же, что у него травма головы.
я уже всю голову сломал
%)

Автор - KuklP
Дата добавления - 24.12.2013 в 09:32
Матраскин Дата: Вторник, 24.12.2013, 09:46 | Сообщение № 6
Группа: Друзья
Ранг: Обитатель
Сообщений: 375
Репутация: 81 ±
Замечаний: 0% ±

20xx
Здравствуйте Shnur1979!
Я бы Вам не советовал создавать столько переменных и называть a,b,c,d.. Вы так или запутаетесь или запутается тот кто потом будет смотреть этот код.
как присвоенные значения автоматом передать в ячейки другой открытой книги

[vba]
Код
Application.ScreenUpdating = False
'делаете активной книгу2 и начинаете делать обратные действия. присваивать ячейкам переменные.  
Workbooks("Свод").Activate
Cells(q, 2)=b
Cells(q, 6)=e
.....
Application.ScreenUpdating = True
end sub
[/vba]
книга2 будет активна...но об этом никто не узнает


в интернете опять кто-то не прав
 
Ответить
СообщениеЗдравствуйте Shnur1979!
Я бы Вам не советовал создавать столько переменных и называть a,b,c,d.. Вы так или запутаетесь или запутается тот кто потом будет смотреть этот код.
как присвоенные значения автоматом передать в ячейки другой открытой книги

[vba]
Код
Application.ScreenUpdating = False
'делаете активной книгу2 и начинаете делать обратные действия. присваивать ячейкам переменные.  
Workbooks("Свод").Activate
Cells(q, 2)=b
Cells(q, 6)=e
.....
Application.ScreenUpdating = True
end sub
[/vba]
книга2 будет активна...но об этом никто не узнает

Автор - Матраскин
Дата добавления - 24.12.2013 в 09:46
KuklP Дата: Вторник, 24.12.2013, 09:57 | Сообщение № 7
Группа: Проверенные
Ранг: Старожил
Сообщений: 2369
Репутация: 486 ±
Замечаний: 0% ±

2003-2010
Цитата Матраскин, 24.12.2013 в 09:46, в сообщении № 6
'делаете активной книгу2 и начинаете
Зачем? Никакой необходимости в этом нет.


Ну с НДС и мы чего-то стoим! kuklp60@gmail.com
WM Z206653985942, R334086032478, U238399322728
 
Ответить
Сообщение
Цитата Матраскин, 24.12.2013 в 09:46, в сообщении № 6
'делаете активной книгу2 и начинаете
Зачем? Никакой необходимости в этом нет.

Автор - KuklP
Дата добавления - 24.12.2013 в 09:57
Матраскин Дата: Вторник, 24.12.2013, 10:09 | Сообщение № 8
Группа: Друзья
Ранг: Обитатель
Сообщений: 375
Репутация: 81 ±
Замечаний: 0% ±

20xx
KuklP, я сделал книгу активной для укорочения кода. теперь не надо писать workbook.


в интернете опять кто-то не прав
 
Ответить
СообщениеKuklP, я сделал книгу активной для укорочения кода. теперь не надо писать workbook.

Автор - Матраскин
Дата добавления - 24.12.2013 в 10:09
KuklP Дата: Вторник, 24.12.2013, 10:13 | Сообщение № 9
Группа: Проверенные
Ранг: Старожил
Сообщений: 2369
Репутация: 486 ±
Замечаний: 0% ±

2003-2010
Сомнительное усовершенствование. Чтоб не писать workbook, можно воспользоваться конструкцией
with
...
end with
или присвоить родителя переменной. Хороший стиль программирования - не использовать select-ы и activate.


Ну с НДС и мы чего-то стoим! kuklp60@gmail.com
WM Z206653985942, R334086032478, U238399322728
 
Ответить
СообщениеСомнительное усовершенствование. Чтоб не писать workbook, можно воспользоваться конструкцией
with
...
end with
или присвоить родителя переменной. Хороший стиль программирования - не использовать select-ы и activate.

Автор - KuklP
Дата добавления - 24.12.2013 в 10:13
Матраскин Дата: Вторник, 24.12.2013, 10:43 | Сообщение № 10
Группа: Друзья
Ранг: Обитатель
Сообщений: 375
Репутация: 81 ±
Замечаний: 0% ±

20xx
[vba]
Код
Sub n()
     .....
     With Workbooks("Свод.xlsx").Worksheets("ИМЯ")
         .Cells(q, 2)=b
         .Cells(q, 6)=e
     End With
     ....
End Sub
[/vba]


в интернете опять кто-то не прав
 
Ответить
Сообщение[vba]
Код
Sub n()
     .....
     With Workbooks("Свод.xlsx").Worksheets("ИМЯ")
         .Cells(q, 2)=b
         .Cells(q, 6)=e
     End With
     ....
End Sub
[/vba]

Автор - Матраскин
Дата добавления - 24.12.2013 в 10:43
Shnur1979 Дата: Вторник, 24.12.2013, 10:45 | Сообщение № 11
Группа: Гости
Спасибо, первый цикл пролетает на "Ура", а на втором затыкается. Устранил, поставив в конец цикла - Workbooks("Заявка.xls").Activate (без этого код Матраскина с Workbooks("Свод").Activate не работает).
Кроме меня этот код никто юзать не будет, а я привык с циклами работать и с кучей переменных (грешу я укрупнением).
на сколько я понял после WB лучше ещё конкретный лист задать, т.к. их в книге2 "Свод" штук 5.
...
ещё два маленьких вопросика по этой теме
1. строчку кода макроса для защиты от "дурака", т.е. если книга "Свод" случайно оказалась закрыта? (но я точно знаю до неё путь и имя этого файла не меняется по определению)
2. о чем я писал в исходном сообщении - без активации книги2 "Свод" можно реализовать данную задачу, т.к. имя книги1 "Заявка" могут поменять и тогда явное указание в коде имени книги1 "Заявка" будет вызывать ошибку на втором цикле
 
Ответить
СообщениеСпасибо, первый цикл пролетает на "Ура", а на втором затыкается. Устранил, поставив в конец цикла - Workbooks("Заявка.xls").Activate (без этого код Матраскина с Workbooks("Свод").Activate не работает).
Кроме меня этот код никто юзать не будет, а я привык с циклами работать и с кучей переменных (грешу я укрупнением).
на сколько я понял после WB лучше ещё конкретный лист задать, т.к. их в книге2 "Свод" штук 5.
...
ещё два маленьких вопросика по этой теме
1. строчку кода макроса для защиты от "дурака", т.е. если книга "Свод" случайно оказалась закрыта? (но я точно знаю до неё путь и имя этого файла не меняется по определению)
2. о чем я писал в исходном сообщении - без активации книги2 "Свод" можно реализовать данную задачу, т.к. имя книги1 "Заявка" могут поменять и тогда явное указание в коде имени книги1 "Заявка" будет вызывать ошибку на втором цикле

Автор - Shnur1979
Дата добавления - 24.12.2013 в 10:45
Shnur1979 Дата: Вторник, 24.12.2013, 10:49 | Сообщение № 12
Группа: Гости
Сейчас попробую с With
 
Ответить
СообщениеСейчас попробую с With

Автор - Shnur1979
Дата добавления - 24.12.2013 в 10:49
KuklP Дата: Вторник, 24.12.2013, 10:52 | Сообщение № 13
Группа: Проверенные
Ранг: Старожил
Сообщений: 2369
Репутация: 486 ±
Замечаний: 0% ±

2003-2010
если книга "Свод" случайно оказалась закрыта?
Можно написать код, к-рому без разницы, открыта ли книга, но без примера я этого делать не буду.


Ну с НДС и мы чего-то стoим! kuklp60@gmail.com
WM Z206653985942, R334086032478, U238399322728
 
Ответить
Сообщение
если книга "Свод" случайно оказалась закрыта?
Можно написать код, к-рому без разницы, открыта ли книга, но без примера я этого делать не буду.

Автор - KuklP
Дата добавления - 24.12.2013 в 10:52
Shnur1979 Дата: Вторник, 24.12.2013, 10:57 | Сообщение № 14
Группа: Гости
KuklP, буду очень благодарен, а в каком виде вам пример предоставить?
 
Ответить
СообщениеKuklP, буду очень благодарен, а в каком виде вам пример предоставить?

Автор - Shnur1979
Дата добавления - 24.12.2013 в 10:57
KuklP Дата: Вторник, 24.12.2013, 11:03 | Сообщение № 15
Группа: Проверенные
Ранг: Старожил
Сообщений: 2369
Репутация: 486 ±
Замечаний: 0% ±

2003-2010
Запакуйте два файла Эксель в рар или зип и выложите в теме. Мне сейчас надо уехать, буду только после обеда. Если никто до тех пор не сделает.


Ну с НДС и мы чего-то стoим! kuklp60@gmail.com
WM Z206653985942, R334086032478, U238399322728
 
Ответить
СообщениеЗапакуйте два файла Эксель в рар или зип и выложите в теме. Мне сейчас надо уехать, буду только после обеда. Если никто до тех пор не сделает.

Автор - KuklP
Дата добавления - 24.12.2013 в 11:03
Shnur1979 Дата: Вторник, 24.12.2013, 11:51 | Сообщение № 16
Группа: Пользователи
Ранг: Прохожий
Сообщений: 8
Репутация: 0 ±
Замечаний: 0% ±

Excel 2003
Вот два экселевских файлика и экспортированный модуль с "жестко"привязанным кодом (рабочий, но когда оба файла открыты и макрос запускается с активного листа "MTP" файла "Заявка").

у файла "Свод" имя остается неизменным и он размещен в корневой папке на сетевом ресурсе. у меня к нему путь J:\Свод.xls
файл "Заявка" один из сотни и может иметь разные имена и находиться где угодно на ПК, но структура файла всегда остается неизменной.

значения из файла "Заявка" должны попадать в соответствующие строки (а точнее начиная после последней заполненной ячейки столбца "B") и столбики файла "Свод".
К сообщению приложен файл: 6189656.zip (81.6 Kb)


Сообщение отредактировал Shnur1979 - Вторник, 24.12.2013, 12:00
 
Ответить
СообщениеВот два экселевских файлика и экспортированный модуль с "жестко"привязанным кодом (рабочий, но когда оба файла открыты и макрос запускается с активного листа "MTP" файла "Заявка").

у файла "Свод" имя остается неизменным и он размещен в корневой папке на сетевом ресурсе. у меня к нему путь J:\Свод.xls
файл "Заявка" один из сотни и может иметь разные имена и находиться где угодно на ПК, но структура файла всегда остается неизменной.

значения из файла "Заявка" должны попадать в соответствующие строки (а точнее начиная после последней заполненной ячейки столбца "B") и столбики файла "Свод".

Автор - Shnur1979
Дата добавления - 24.12.2013 в 11:51
KuklP Дата: Вторник, 24.12.2013, 13:34 | Сообщение № 17
Группа: Проверенные
Ранг: Старожил
Сообщений: 2369
Репутация: 486 ±
Замечаний: 0% ±

2003-2010
Прикольно. Мне, чтоб Вам помочь надо еще и защиту на ВБА проект сломать?


Ну с НДС и мы чего-то стoим! kuklp60@gmail.com
WM Z206653985942, R334086032478, U238399322728
 
Ответить
СообщениеПрикольно. Мне, чтоб Вам помочь надо еще и защиту на ВБА проект сломать?

Автор - KuklP
Дата добавления - 24.12.2013 в 13:34
SkyPro Дата: Вторник, 24.12.2013, 13:44 | Сообщение № 18
Группа: Друзья
Ранг: Старожил
Сообщений: 1206
Репутация: 255 ±
Замечаний: 0% ±

2010
Прикольно. Мне, чтоб Вам помочь надо еще и защиту на ВБА проект сломать?

Дык, вроде нет там защиты.


skypro1111@gmail.com
 
Ответить
Сообщение
Прикольно. Мне, чтоб Вам помочь надо еще и защиту на ВБА проект сломать?

Дык, вроде нет там защиты.

Автор - SkyPro
Дата добавления - 24.12.2013 в 13:44
KuklP Дата: Вторник, 24.12.2013, 13:48 | Сообщение № 19
Группа: Проверенные
Ранг: Старожил
Сообщений: 2369
Репутация: 486 ±
Замечаний: 0% ±

2003-2010
Тогда не знаю.

Сергей, у Вас не так?
К сообщению приложен файл: 9061016.gif (24.6 Kb)


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


Сообщение отредактировал KuklP - Вторник, 24.12.2013, 13:48
 
Ответить
СообщениеТогда не знаю.

Сергей, у Вас не так?

Автор - KuklP
Дата добавления - 24.12.2013 в 13:48
Матраскин Дата: Вторник, 24.12.2013, 13:50 | Сообщение № 20
Группа: Друзья
Ранг: Обитатель
Сообщений: 375
Репутация: 81 ±
Замечаний: 0% ±

20xx
Shnur1979,
[vba]
Код
    Dim wbBook As Workbook
       On Error Resume Next
       Set wbBook = Workbooks(fileName)
       If wbBook Is Nothing Then
           'MsgBox fileName & " не открыта"
       Else
           Workbooks(fileName).Close False
       End If
[/vba]
так я как то проверял открыта книга или нет, если открыта закрывал без сохранения файла
[vba]
Код
    If name & ".XLS" = Dir(path & ".XLS") Then
           Workbooks.Open fileName:=path & ".xls"
[/vba]
а так можно проверить есть ли файл по указ. пути и если он есть, то открыть
path - путь до файла
name - имя файла


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

Сообщение отредактировал Матраскин - Вторник, 24.12.2013, 13:51
 
Ответить
СообщениеShnur1979,
[vba]
Код
    Dim wbBook As Workbook
       On Error Resume Next
       Set wbBook = Workbooks(fileName)
       If wbBook Is Nothing Then
           'MsgBox fileName & " не открыта"
       Else
           Workbooks(fileName).Close False
       End If
[/vba]
так я как то проверял открыта книга или нет, если открыта закрывал без сохранения файла
[vba]
Код
    If name & ".XLS" = Dir(path & ".XLS") Then
           Workbooks.Open fileName:=path & ".xls"
[/vba]
а так можно проверить есть ли файл по указ. пути и если он есть, то открыть
path - путь до файла
name - имя файла

Автор - Матраскин
Дата добавления - 24.12.2013 в 13:50
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Присвоение значений ячейкам неактивной книги (Иное)
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск:

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