Пожалуйста помогите!!!
Создал БД в Exele, при выполнении макроса должен открываться World Документ, а точнее его Шаблон (dot)!! Open’ю документ следующим макросом:
Set W = CreateObject("Word.Application")
W.Visible = True
W.Documents.Open "C:\Documents and Settings\XXX\Рабочий стол\XXX.dot"
В реале получаю, открытие dot документа, т.е. Шаблона, а не документа который он создает (Документ1,2,3…..), т.е. получается следующее:
См. рисунок 1
[ATTACH]1195[/ATTACH]
а фактически должно:
См. рисунок 2
[ATTACH]1194[/ATTACH]
2. Технически делаю расчет дней Текущего и Будущего периодов см.файл Вариант 2 [ATTACH]1197[/ATTACH](возможно кто-то знает, кто не знает, потестите изменение дат на Листе думаю все будет понятно), не могу реализовать проект в связи с тем что не могу привести даты к единому виду (см. макрос внутри листа для кнопки РазбивкаПлатежа). Возможно, кто-то поможет в этом. И еще один вопрос.
Если взглянуть на Расчеты Даты ближайшего периода на Листе, то можно понять, что данный расчет действителен только для 2010 года, по истечении года нужно менять год «руками». Хотелось бы иметь такой макрос, учитывая текущий, который будет ставить периоды в зависимости от выбранного в календаре года.
Т.е. при выборе в календаре, например не 23.01.2009, а 23.01.2010 макрос ставил бы отчетный период 31.03.2009, а не 31.03.2010 и соответственно производил расчеты.
3.Имеется combobox-Ячейки и textbox-ФИО в зависимости от изменений в combobox’е-"Ячейки", меняется значение в textbox-ФИО. (См. файл Выриант 3)[ATTACH]1197[/ATTACH]
Например
combobox ФИО
1 Иванов Артем Олегович
2 Петров Павел Ефимович
3 Зотов Игорь Артурович-Петров Сергей Вячеславович
Вопрос!! Нужно сделать так, чтобы в зависимости от значка «-» (а именно его присутствия или отсутствия), программа выполняло следующее
Например выбрано значение 1 combobox’а
If ФИО………….НЕТ «-» then
Значение.value=2
ФИО1Кл.value=Иванов Артем Олегович
ФИО1КлСокр=Иванов А.О.
ФИО2Кл.value= « »
ФИО2КлСокр= « »
Выбрано значение 3 combobox’а
If ФИО………….ЕСТЬ «-» then
Значение.value=2 (здесь все правильно, это кол-во клиентов)
ФИО1Кл.value=Зотов Игорь Артурович
ФИО1КлСокр=Зотов И.А.
ФИО2Кл.value= Петров Сергей Вячеславович
ФИО2КлСокр= Петров С.В.
Понятно что Макрос должен выглядеть что-то типа (при выборе 3 в combobox’а)
If ФИО………….ЕСТЬ «-» then
Значение.value=3 (здесь все правильно)
ФИО1Кл.value=Зотов Игорь Артурович
Тут что-то типа,
Имя = ИмяКл1.Value
iStr = Len(Имя)
iИмя = Left(Имя, Len(Имя) - (iStr - 1))
Отч = ОтчествоКл1.Value
iStr = Len(Отч)
iОтч = Left(Отч, Len(Отч) - (iStr - 1))
ФИОсокрКл1.Value = ФИОКл1.Value & " " & iИмя & "." & iОтч & "."
но нужно сделать все в макросе не выводя на экран, но прежде как я понял, для этого нужно разделить Зотов Игорь Артурович на ФИОКл1-Зотов, ИмяКл1-Игорь, ОтчествоКл1-Артурович
и должны получить:
ФИО1КлСокр=Зотов И.А.
ФИО2Кл.value= Петров Сергей Вячеславович
Тут та же ситуация что и сверху:
ФИО2КлСокр= Петров С.В.
Else
Значение.value=2 (здесь все правильно)
ФИО1Кл.value=Зотов Игорь Артурович
Тут та же ситуация что и сверху:
ФИО1КлСокр=Зотов И.А.
ФИО2Кл.value= « »
ФИО2КлСокр= « »
[INDENT][INDENT][INDENT][INDENT][INDENT][INDENT][INDENT][INDENT][INDENT]Заранее примного благодарен!!!!![/INDENT][/INDENT][/INDENT][/INDENT][/INDENT][/INDENT][/INDENT][/INDENT][/INDENT]
HELP!!!
Модератор: Naeel Maqsudov
- EducatedFool
- Сообщения: 197
- Зарегистрирован: 06 апр 2008, 14:03
- Откуда: Россия, Урал
- Контактная информация:
Вместо
W.Documents.Open "C:\Documents and Settings\XXX\Рабочий стол\XXX.dot"
используйте
W.Documents.Add "C:\Documents and Settings\XXX\Рабочий стол\XXX.dot"
В этом случае будет происходить не ОТКРЫТИЕ документа (шаблона, в данном случае), а СОЗДАНИЕ нового документа на основе выбранного шаблона.
W.Documents.Open "C:\Documents and Settings\XXX\Рабочий стол\XXX.dot"
используйте
W.Documents.Add "C:\Documents and Settings\XXX\Рабочий стол\XXX.dot"
В этом случае будет происходить не ОТКРЫТИЕ документа (шаблона, в данном случае), а СОЗДАНИЕ нового документа на основе выбранного шаблона.
Макросы для Excel, Word, CorelDRAW. Быстро, профессионально, недорого. http://ExcelVBA.ru/
Благодарности принимаются на кошелёк WebMoney: R318574877619 и Яндекс.Деньги: 41001335672216
Благодарности принимаются на кошелёк WebMoney: R318574877619 и Яндекс.Деньги: 41001335672216
- EducatedFool
- Сообщения: 197
- Зарегистрирован: 06 апр 2008, 14:03
- Откуда: Россия, Урал
- Контактная информация:
Что именно не получается?не могу привести даты к единому виду
Кода много, и искать проблемные строки сложно.
А еще сложнее понять, что надо получить в итоге...
Кстати, зачем было изобретать такую конструкцию?
Код: Выделить всё
CDate(FormatDateTime("31.06.09", vbShortDate))
А проблемы в коде могли возникнуть из-за работы с несуществующими датами типа этой: "31.06.09"
Взгляните на календарь - не в каждом месяце 31 день...
Макросы для Excel, Word, CorelDRAW. Быстро, профессионально, недорого. http://ExcelVBA.ru/
Благодарности принимаются на кошелёк WebMoney: R318574877619 и Яндекс.Деньги: 41001335672216
Благодарности принимаются на кошелёк WebMoney: R318574877619 и Яндекс.Деньги: 41001335672216
Уважаемый EducatedFool на счет первого варианта 100% попадание, спасибо огромное.
На счет варианта 2, вы правы, даты (31.06.2009) действительно нет (это мой косяк), но я не думаю что это как таковое влияет на формулу.
"Не могу привести даты к единому виду" я имею в виду что, например при вводе дат в textbox'ы и нажатии на кнопку, начинает выполняться макрос и в итоге несовпадение идет следующее (грубо говоря):
Предположим выбрали Дату открытия 25.01.2010, в итоге получаем:
If CDate(FormatDateTime("31.03.10", vbShortDate)) <= CDate(ДатаЗаключ.Value) And CDate(ДатаЗаключ.Value) >= CDate(FormatDateTime("31.12.09", vbShortDate)) Then L = "31.03.10"
Наглядно, Я НЕ УТВЕРЖДАЮ, это скорее всего выглядит так
Если "31.03.10"<=25.01.2010 и 25.01.2010=>"31.12.09" то L=31.03.10
Т.е. как мне кажется из-за того что даты не в одном формате 31.03.2010,31.12.2009, формула нормально не функционирует, возможно я ошибаюсь. Но при выполнении макроса и остановки его из-за ошибки если навести курсор на строку с формулой:
ТекПериод.Value = L - CDate(FormatDateTime(ДатаЗаключ.Value, vbShortDate)) + 1, мы увидим, что значение L=Empy. Т.е. формула не выполняется.
Фактически мне нужно сделать то же самое что стоит на Листе в ячейке B7, только в макросе, вопрос только как?????

[INDENT][INDENT][INDENT][INDENT][INDENT][INDENT][INDENT][INDENT][INDENT][INDENT][ATTACH]1198[/ATTACH][/INDENT][/INDENT][/INDENT][/INDENT][/INDENT][/INDENT][/INDENT][/INDENT][/INDENT][/INDENT]
На счет варианта 2, вы правы, даты (31.06.2009) действительно нет (это мой косяк), но я не думаю что это как таковое влияет на формулу.
"Не могу привести даты к единому виду" я имею в виду что, например при вводе дат в textbox'ы и нажатии на кнопку, начинает выполняться макрос и в итоге несовпадение идет следующее (грубо говоря):
Предположим выбрали Дату открытия 25.01.2010, в итоге получаем:
If CDate(FormatDateTime("31.03.10", vbShortDate)) <= CDate(ДатаЗаключ.Value) And CDate(ДатаЗаключ.Value) >= CDate(FormatDateTime("31.12.09", vbShortDate)) Then L = "31.03.10"
Наглядно, Я НЕ УТВЕРЖДАЮ, это скорее всего выглядит так
Если "31.03.10"<=25.01.2010 и 25.01.2010=>"31.12.09" то L=31.03.10
Т.е. как мне кажется из-за того что даты не в одном формате 31.03.2010,31.12.2009, формула нормально не функционирует, возможно я ошибаюсь. Но при выполнении макроса и остановки его из-за ошибки если навести курсор на строку с формулой:
ТекПериод.Value = L - CDate(FormatDateTime(ДатаЗаключ.Value, vbShortDate)) + 1, мы увидим, что значение L=Empy. Т.е. формула не выполняется.
Фактически мне нужно сделать то же самое что стоит на Листе в ячейке B7, только в макросе, вопрос только как?????



[INDENT][INDENT][INDENT][INDENT][INDENT][INDENT][INDENT][INDENT][INDENT][INDENT][ATTACH]1198[/ATTACH][/INDENT][/INDENT][/INDENT][/INDENT][/INDENT][/INDENT][/INDENT][/INDENT][/INDENT][/INDENT]