|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
20.05.2011, 12:21 | #11 |
Пользователь
Регистрация: 11.05.2011
Сообщений: 59
|
Дыры эти я закрою, потому что пока в новом отчете по этим городам прибыли нет, их в отчет и не занесли.
Ну я не знаю, думаю удобнее будет просто эту таблицу соответствий в отдельном файле хранить, чтоб открыл, исправил, сохранил и дальше работает. А если она будет в той огромной книге, где 49 листов, откуда копируются 3 листа, это её менять надо будет постоянно, и многим сотрудникам её менять на компах у себя. Это муторно и всех напрягать. А дополнительные города постоянно открываются. Так можно сделать? Как сделать? |
20.05.2011, 12:29 | #12 |
Старожил
Регистрация: 11.05.2010
Сообщений: 5,166
|
Положить таблицу в общий файл на сервере, прописать в код постоянный путь к этому файлу, брать таблицу с помощью GetObject, вот например пример:
Код:
Примерно так (в работе не проверял): Код:
webmoney: E265281470651 Z422237915069 R418926282008
Последний раз редактировалось Hugo121; 20.05.2011 в 12:33. |
23.05.2011, 11:31 | #13 |
Пользователь
Регистрация: 11.05.2011
Сообщений: 59
|
А вот в этот код:
Sub Создать_Ежедневный_Отчет() ' ' Создать_Ежедневный_Отчет Макрос ' Dim wb As Workbook Dim nsheet As Worksheet Sheets(Array("КАССА ИТОГ", "1С И ПРОЧЕЕ", "АНАЛИЗ ПРИБЫЛИ")).Copy Set wb = ActiveWorkbook ' ссылка на новую созданную книгу Dim itogWB As Workbook For Each itogWB In Workbooks ' перебирает все открытые книги If InStr(itogWB.Name, "С") Then ' находим открытую книгу с названием itogWB.Sheets("Бюджет").Copy Before:=wb.Worksheets(1) 'при совпадении копирует лист и выходим из цикла перебора With wb.Worksheets(1) .Columns("C:AH").EntireColumn.Hidde n = True ' скрываем столбцы с C:AH .Columns("AP:AY").EntireColumn.Hidd en = True ' скрываем столбцы с AP:AY End With Exit For End If Next wb.SaveAs Filename:="C:\Documents and Settings\a_safarova\Рабочий стол\ДОКУМЕНТЫ (АЛЬФИЯ)\ОТЧЕТЫ ежемесячные\БДР\Ежедневный отчет.xls", FileFormat:=xlNormal, _ Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, _ CreateBackup:=False End Sub Можно ли добавить вышепредставленный код где: Sub ПримерИспользования_GetFileName() или его отдельным модулем вставлять? |
23.05.2011, 13:22 | #14 |
Старожил
Регистрация: 11.05.2010
Сообщений: 5,166
|
Добавить то можно, но Вам точно нужен диалог выбора файла?
И я там саму функцию не привёл, т.к. речь шла только о GetObject, целиком оно так выглядит: Код:
webmoney: E265281470651 Z422237915069 R418926282008
Последний раз редактировалось Hugo121; 23.05.2011 в 13:49. |
23.05.2011, 15:23 | #15 |
Пользователь
Регистрация: 11.05.2011
Сообщений: 59
|
Ну я себе вот так представляю это:
1. Запустили макрос, нажатием на кнопку, скорировались 4 листа (3 из той книги с которой запускается макрос и один лист из другой открытой книги); 2. Вот они скопировались, теперь он обращается по назначенному пути к файлу, где соответствия городов. 3. Теперь он работает как приложенный до этого файл. То есть берет значения и подставляет их по городам в таблицу. Это наверное всё в одном коде дожно быть, мы ведь если макрос Sub Создать_Ежедневный_Отчет() запускаем, всё должно последовательно проделаться... |
23.05.2011, 15:36 | #16 |
Старожил
Регистрация: 11.05.2010
Сообщений: 5,166
|
Да в общем уже выше написал почти правильно
Если список городов на первом листе файла C:\temp\Toffifee\2\Spisok_gorodov.x ls, то берём его так: Код:
Типа Код:
Итого: Код:
webmoney: E265281470651 Z422237915069 R418926282008
Последний раз редактировалось Hugo121; 23.05.2011 в 15:45. |
24.05.2011, 09:36 | #17 |
Пользователь
Регистрация: 11.05.2011
Сообщений: 59
|
Спасибо.... Я теперь только не понимаю как вышепредставленный код соединить вот с этим кодом:
Sub Создать_Ежедневный_Отчет() ' ' Создать_Ежедневный_Отчет Макрос ' Dim wb As Workbook Dim nsheet As Worksheet Sheets(Array("КАССА ИТОГ", "1С И ПРОЧЕЕ", "АНАЛИЗ ПРИБЫЛИ")).Copy Set wb = ActiveWorkbook ' ссылка на новую созданную книгу Dim itogWB As Workbook For Each itogWB In Workbooks ' перебирает все открытые книги If InStr(itogWB.Name, "С") Then ' находим открытую книгу с названием itogWB.Sheets("Бюджет").Copy Before:=wb.Worksheets(1) 'при совпадении копирует лист и выходим из цикла перебора With wb.Worksheets(1) .Columns("C:AH").EntireColumn.Hidde n = True ' скрываем столбцы с C:AH .Columns("AP:AY").EntireColumn.Hidd en = True ' скрываем столбцы с AP:AY End With Exit For End If Next wb.SaveAs Filename:="C:\Temp\Ежедневный отчет.xls", FileFormat:=xlNormal, _ Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, _ CreateBackup:=False End Sub помогите пожалуйста.... |
24.05.2011, 21:51 | #18 |
Старожил
Регистрация: 11.05.2010
Сообщений: 5,166
|
Я тоже не очень понимаю, что Вы хотите достичь...
Если сперва заполнить данные, потом скопировать листы, то просто запускайте их последовательно. Можно для этого третий код написать: Код:
webmoney: E265281470651 Z422237915069 R418926282008
|
25.05.2011, 10:13 | #19 |
Пользователь
Регистрация: 11.05.2011
Сообщений: 59
|
Даа, можно и так. Но у меня не работает. И я поняла причину.
В этом месте кода: With [Лист1] a = .Range("B6:AM" & .Range("AM" & .Rows.Count).End(xlUp).Row - 1).Value ' диапазон столбцов с цифрами во вкладке "Бюджет" End With With [Лист47] ' переход на лист "1С и прочее" For i = 1 To UBound(a) If oDict.Exists(a(i, 1)) Then Set x = .Rows(7).Find(oDict.Item(a(i, 1)), LookIn:=xlValues, LookAt:=xlWhole, MatchCase:=False) Вот где лист 1, в коде подразумевается что данный лист есть в книге. А этот лист то из другой книги, и когда мы листы копировали, мы находили открытую книгу которая начинается на определенную букву и оттуда тянули лист. Получается здесь надо не с первого листа этой книги брать цифры, а с первого листа открытой книги, вот кусок кода из переноса листов: im itogWB As Workbook For Each itogWB In Workbooks ' перебирает все открытые книги If InStr(itogWB.Name, "С") Then ' находим открытую книгу с названием itogWB.Sheets("Бюджет").Copy Before:=wb.Worksheets(1) 'при совпадении копирует лист и выходим из цикла перебора |
25.05.2011, 10:52 | #20 |
Старожил
Регистрация: 11.05.2010
Сообщений: 5,166
|
Да, там нужно по месту отследить имена листов.
[Лист1] - это CodeName листа, но оно тоже может измениться, если в эту книгу будет скопирован лист с таким же именем, или изменится имя этого скопированного листа. Как вариант - сперва дать нужным листам оригинальные имена (вручную или кодом), тогда после копирования проблем с именами быть не должно.
webmoney: E265281470651 Z422237915069 R418926282008
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Скопировать значение из определённой ячейки ТЕКУЩЕЙ СТРОКИ в определённую ячейку другого листа | Павел-812 | Microsoft Office Excel | 12 | 12.07.2012 17:44 |
Ссылка ячеек одного листа на ячейки другого листа | n0str0m0 | Microsoft Office Excel | 10 | 31.12.2011 12:11 |
отображение данных первого листа, при активации ячейки второго листа | Akmal-Sharipov | Microsoft Office Excel | 4 | 03.12.2010 14:48 |
Формат ячейки равнялся формату ячейки из другого листа? | Alexandrone | Microsoft Office Excel | 5 | 29.10.2010 00:08 |