Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.03.2012, 00:24   #1
S_Brodsky
Пользователь
 
Аватар для S_Brodsky
 
Регистрация: 15.02.2012
Сообщений: 14
По умолчанию Создание выпадающего списка из другой закрытой книги

Доброго времени суток всем! Помогите решить задачу. Есть некий файл отчёта, в котором отображаются ежедневные продажи товаров. В этом файле есть список товаров, модели мобильных терминалов, тв и интернет продукция. Когда приходит новая модель необходимо добавить в список новый товар. Список со всеми наименованиями находится в другой книге. Есть ли возможность создать выпадающий список с добавлением новых элементов из другой закрытой книги? Если есть подскажите пожалуйста как реализовать.
S_Brodsky вне форума Ответить с цитированием
Старый 13.03.2012, 00:53   #2
R Dmitry
Форумчанин
 
Регистрация: 07.03.2010
Сообщений: 796
По умолчанию

Цитата:
Сообщение от S_Brodsky Посмотреть сообщение
Доброго времени суток всем! Помогите решить задачу. Есть некий файл отчёта, в котором отображаются ежедневные продажи товаров. В этом файле есть список товаров, модели мобильных терминалов, тв и интернет продукция. Когда приходит новая модель необходимо добавить в список новый товар. Список со всеми наименованиями находится в другой книге. Есть ли возможность создать выпадающий список с добавлением новых элементов из другой закрытой книги? Если есть подскажите пожалуйста как реализовать.
Через ADO, например.
Логика?!.... она где то рядом... E_mail: dg_rusak@mail.ru Если спасибо мало: Яндекс . Деньги - 41001731366021 WM R269866874234
R Dmitry вне форума Ответить с цитированием
Старый 13.03.2012, 02:04   #3
S_Brodsky
Пользователь
 
Аватар для S_Brodsky
 
Регистрация: 15.02.2012
Сообщений: 14
По умолчанию

если можно силами Excel
S_Brodsky вне форума Ответить с цитированием
Старый 13.03.2012, 03:27   #4
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

стандартными средствами екесель - интересующие данные из другого источника в текущую книгу можно получить запросом.
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 13.03.2012, 09:26   #5
tae1980
Форумчанин
 
Регистрация: 02.02.2009
Сообщений: 842
По умолчанию

Цитата:
Сообщение от S_Brodsky Посмотреть сообщение
если можно силами Excel
Самое простое решение: при открытие книги полностью копировать в неё лист из другой книги и брать данные из этого листа. Или каждый раз при открытии книги загружать данные из текстового файла. Я использую и тот и другой способ.
С уважением, Алексей.
tae1980 вне форума Ответить с цитированием
Старый 14.03.2012, 01:40   #6
S_Brodsky
Пользователь
 
Аватар для S_Brodsky
 
Регистрация: 15.02.2012
Сообщений: 14
По умолчанию

Цитата:
Сообщение от IgorGO Посмотреть сообщение
стандартными средствами екесель - интересующие данные из другого источника в текущую книгу можно получить запросом.
к файлу со списком наименований товаров должны иметь доступ несколько пользователей одновременно. Возможно ли это реализовать и как? Если нет готового решения, прошу уважаемый IgorGO хотябы натолкнуть на мысль как всё реализовать. Поверьте мне это очень важно. Заранее спасибо.
Цитата:
Сообщение от tae1980
Самое простое решение: при открытие книги полностью копировать в неё лист из другой книги и брать данные из этого листа. Или каждый раз при открытии книги загружать данные из текстового файла. Я использую и тот и другой способ.
подскажите пожалуйста каким образом реализовать это простое решение. В экселе не совсем хорошо разбираюсь, по стольку по скольку. Если есть готовые примеры, прикрепите пожалуйста к посту. Буду рад любой посильной помощи. Заранее спасибо за то что откликнулись.
S_Brodsky вне форума Ответить с цитированием
Старый 14.03.2012, 07:48   #7
Snekich
Форумчанин
 
Аватар для Snekich
 
Регистрация: 19.11.2011
Сообщений: 128
По умолчанию

Цитата:
Сообщение от S_Brodsky Посмотреть сообщение
подскажите пожалуйста каким образом реализовать это простое решение. В экселе не совсем хорошо разбираюсь, по стольку по скольку. Если есть готовые примеры, прикрепите пожалуйста к посту. Буду рад любой посильной помощи. Заранее спасибо за то что откликнулись.
Наиболее быстрый способ получить помощь/подсказку - это прикрепить свои файлы (если они громоздкие, то примеры этих файлов), что бы другие могли посмотреть и представить хотя бы как это выглядит, какие таблицы и т.д.

Пока вижу простое (не самое оптимальное) решение, которое уже предлагали:
1) создаешь страну, назовем ее "Temp"
2) импортируешь на нее данные из другого файла (через вкладку данные в 2007 офисе)
3) берешь из нее нужный тебе перечень (копируешь на другую страницу или записываешь в переменную)
4) удаляешь/скрываешь страницу "Temp"

(все это делаешь макросом естественно)
Нет ничего невозможного, главное верить в это.
Snekich вне форума Ответить с цитированием
Старый 14.03.2012, 09:38   #8
alex77755
Форумчанин
 
Аватар для alex77755
 
Регистрация: 14.02.2009
Сообщений: 753
По умолчанию

Вот такой пример у меня в запасниках. Возможно поможет:
Цитата:
В VBA не существует метода получения значения из закрытого файла рабочей
книги. Однако вы можете воспользоваться возможностью управления ссылками на
файлы, которая предоставляется в Excel. В настоящем разделе описана функция VBA
(GetValue, показанная ниже), которая получает значение из закрытой книги.
Эта задача выполняется в результате вызова макроса XLM.
Код 1

Private Function GetValue(path, file, sheet, ref)
Dim arg As String
If Right(path, 1) <> "\" Then path = path & "\"
If Dir(path & file) = "" Then
GetValue = "Файл не найден"
Exit Function
End If
arg = "'" & path & "[" & file & "]" & sheet & "'!" & _
Range(ref).Range("A1").Address(, , xlR1C1)
GetValue = ExecuteExcel4Macro(arg)
End Function

Функция GetValue имеет четыре аргумента:
¦ path – путь к закрытому файлу (например, "d:\files");
¦ file – название рабочей книги (например, "budget.xls");
¦ sheet – название рабочего листа (например, "Лист1");
¦ ref – ссылка на ячейку (например, "C4").
Следующая процедура демонстрирует, как используется функция GetValue.
В этой процедуре отображается значение ячейки А1 листа Лист1 файла 99Budget.xls
(папка XLFiles\Budget на диске c:.
Код 1
Sub TestGetValue()
p = "c:\XLFiles\Budget"
f = "99Budget.xls"
s = "Лист1"
a = "A1"
MsgBox GetValue(p, f, s, a)
End Sub

Ниже приведен еще один пример. Эта процедура считывает 1200 значений
(100 строк и 12 столбцов) из закрытого файла и помещает эти значения на активный
рабочий лист.
Код 1

Sub TestGetValue2()
p = "c:\XLFiles\Budget"
f = "99Budget.xls"
s = "Sheet1"
Application.ScreenUpdating = False
For r = 1 To 100
For c = 1 To 12
a = Cells(r, c).Address
Cells(r, c) = GetValue(p, f, s, a)
Next c
Next r
Application.ScreenUpdating = True
End Sub
помогу решить контрольные VB6, VBA (недорого)
Alex77755@mail.ru
alex77755 вне форума Ответить с цитированием
Старый 14.03.2012, 15:34   #9
tae1980
Форумчанин
 
Регистрация: 02.02.2009
Сообщений: 842
По умолчанию

Цитата:
Сообщение от S_Brodsky Посмотреть сообщение
подскажите пожалуйста каким образом реализовать это простое решение. В экселе не совсем хорошо разбираюсь, по стольку по скольку. Если есть готовые примеры, прикрепите пожалуйста к посту. Буду рад любой посильной помощи. Заранее спасибо за то что откликнулись.
Вот одна из возможных процедур, но он копирует не целый лист, а только указанное в ячейки "A1" количество строк. Почему-то мне было так нужно, зачем уже не помню. Где Книга_Шаблоны - имя книги откуда берем данные, книга должна быть открыта (у меня это глобальная константа).
Открыть книгу можно так:
Workbooks.Open Filename:=Книга_Шаблоны, ReadOnly:=True
А так книгу можно закрыть, когда она уже не нужна:
Workbooks(Книга_Шаблоны).Close SaveChanges:=False
Код:
Sub Copy_Справочник()
'При открытии книги копируем из Справочника шаблона в Справочник активной книги

    tab_name = "Справочник"              'Имя листа от куда/куда вставлять.
    'Имя листа книги с шаблоном.
    Set шаблон = Workbooks(Книга_Шаблоны).Worksheets(tab_name)
    x_sh = 1                             'Номер строки в шаблоне.
    размер = 0                           'Размер (высота) переносимой части из шаблона.
    x_tab = 1                            'Номер сроки куда вставляем строки
    Set СправочникАктив = ActiveWorkbook.Worksheets("Справочник")
   
    'Берем количество строк для копирования.
    размер = шаблон.Range(шаблон.Cells(1, 1), шаблон.Cells(1, 1))
    'Копируем строки списка
    Application.DisplayAlerts = False          'Отключаем запрос на подтверждение.
    шаблон.Range(шаблон.Cells(x_sh, 2), шаблон.Cells(x_sh + размер - 1, 6)).Copy СправочникАктив.Cells(x_tab, 2)
    Application.DisplayAlerts = True
    Calculate
End Sub
С уважением, Алексей.

Последний раз редактировалось tae1980; 14.03.2012 в 15:42.
tae1980 вне форума Ответить с цитированием
Старый 14.03.2012, 23:26   #10
S_Brodsky
Пользователь
 
Аватар для S_Brodsky
 
Регистрация: 15.02.2012
Сообщений: 14
По умолчанию

Цитата:
Сообщение от Snekich Посмотреть сообщение
Наиболее быстрый способ получить помощь/подсказку - это прикрепить свои файлы
Прошу прощения за мою оплошность, совсем забыл приложить файлы примера. Excel 2003
пример.zip

Последний раз редактировалось S_Brodsky; 14.03.2012 в 23:30.
S_Brodsky вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Создание выпадающего списка Anastasia666 Microsoft Office Access 2 04.09.2011 17:57
создание выпадающего списка с добавлением в него новых строчек reznik Microsoft Office Excel 3 26.02.2010 22:34
Большой выпадающий список с данными из другой закрытой книги Excel. agregator Microsoft Office Excel 72 17.02.2010 00:19
Выпадающий список с данными из другой (закрытой) книги metnek Microsoft Office Excel 9 30.01.2010 19:45
СУММЕСЛИ из закрытой книги Sha Microsoft Office Excel 1 16.12.2009 17:09