Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.62/13: Рейтинг темы: голосов - 13, средняя оценка - 4.62
0 / 0 / 0
Регистрация: 30.09.2020
Сообщений: 35
1

Вставить формулу в Excel из формы

30.09.2020, 09:14. Показов 2422. Ответов 20
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Проблема смешная, конечно. Пытаюсь вставить строку с формулой во внедренный файл excel'я:
Visual Basic
1
xld1.Range("t27").Value2 = "=ЛЕВСИМВ(A1;НАЙТИ(" & Chr(34) & Chr(32) & Chr(34) & ";A1;1)+1)&" & Chr(34) & Chr(46) & Chr(34) & "&ПСТР(A1;НАЙТИ(" & Chr(34) & Chr(32) & Chr(34) & ";A1;НАЙТИ(" & Chr(34) & Chr(32) & Chr(34) & ";A1;1)+1)+1;1)&" & Chr(34) & Chr(46) & Chr(34)
Вылетает в ошибку: System.Runtime.InteropServices.COMException: "Исключение из HRESULT: 0x800A03EC"

В таком виде у меня строка сейчас, пережила уже кучку изменений: я пробовала использовать двойные кавычки, знаки точки и пробела в кавычках (" ", "."). Пробовала параметры Value, formula, formulaR1C1. На работу это не влияет.
Со вставкой формул попроще все легко. Вставлять формулу в другую ячейку - то же самое.
MS VS-2017. MS Excel 2016 (формат .xlsx).
Еще какие вводные нужны - все напишу))
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
30.09.2020, 09:14
Ответы с готовыми решениями:

Вставить формулу в ячейку Excel
Добрый день использую Microsoft.Office.Interop.Excel, нужно вставить вот такую формулу в ячейку...

Как вставить формулу из Delphi в Excel ?
Здравствуйте. Помогите пожалуйста с небольшой заковыкой. Программа на Delphi формирует отчет на...

Как в Excel вставить формулу РАЗНДАТ() 750 раз подряд?
Товарищи спасайте. Нужно посчитать возраст ... задача вроде бы элементарная, но сделать ее нужно...

Как вставить формулу в ячейки листа Excel с помощью скрипта vbs
создал файл Proba1.vbs со следующим содержимым: Dim objXL Dim objXLchart Set objXL =...

20
Наивное Существо
666 / 141 / 27
Регистрация: 09.05.2020
Сообщений: 750
Записей в блоге: 15
30.09.2020, 17:50 2
Gaechka_ya, здесь
Chr(34) & "&ПСТР(A1;НАЙТИ(" & Chr(34) & Chr
здесь после ампесанда (синего) по идее пробел.

Но лучше конкретно напишите формулу в формате эксель (без макроса) - легче проверить будет. Или что Вы желаете всё таки получить? длинная формула - тяжело анализировать....

Добавлено через 56 секунд
и предоставить оригинал таблицы (у меня *.xls).
0
371 / 269 / 93
Регистрация: 18.11.2015
Сообщений: 1,001
30.09.2020, 18:58 3
Ошибка в формуле
0
2737 / 1712 / 778
Регистрация: 23.03.2015
Сообщений: 5,423
30.09.2020, 21:10 4
Gaechka_ya,
Что у вас в ячейке А1 . И что вы хотите получить в T27
0
0 / 0 / 0
Регистрация: 30.09.2020
Сообщений: 35
01.10.2020, 10:45  [ТС] 5
Уже усовершенствовала формулу. От вылета в ошибку ушла - пишу через R1C1 (то есть использую теперь относительные ссылки).

Visual Basic
1
xld1.Range("t27").FormulaR1C1 = "=левсимв(R[-22]C[-6],найти("" "",R[-22]C[-6],1)+1)&"".""&пстр(R[-22]C[-6],найти("" "",R[-22]C[-6],найти("" "",R[-22]C[-6],1)+1)+1,1)&""."""
Но теперь проблема в другом - формула вроде вставляется как надо, но не выдает то, что я хочу (как обычно #ИМЯ?).
Если я делаю эксель видимым, выделяю формулу ячейки Т27 и просто жму энтер, то она выдает то, что должна.
Формула делает из "Иванов Иван Иванович" - "Иванов И. И.".
Я уже не знаю, что с ним делать.. Печалька уже второй день из-за такой фигни (впрочем, как это часто и бывает)
0
2737 / 1712 / 778
Регистрация: 23.03.2015
Сообщений: 5,423
01.10.2020, 10:50 6
Gaechka_ya,
Цитата Сообщение от Narimanych Посмотреть сообщение
Gaechka_ya,
Что у вас в ячейке А1 . И что вы хотите получить в T27
0
0 / 0 / 0
Регистрация: 30.09.2020
Сообщений: 35
01.10.2020, 11:15  [ТС] 7
=ЛЕВСИМВ(A1;НАЙТИ(" ";A1;1)+1)&"."&ПСТР(A1;НАЙТИ(" ";A1;НАЙТИ(" ";A1;1)+1)+1;1)&"."

Это строка из самого экселя, она работает хорошо.

Добавлено через 2 минуты
В ячейке А1 "Иванов Иван Иванович"
В Т27 должно быть "Иванов И.И."
Формула рабочая. Теперь уже вставляется в ячейку без вылета, но пишет #ИМЯ?. Если сделать файл экселя видимым и выделить формулу ячейки Т27 и нажать энтер, то отображает все как надо. В очередной раз убеждаюсь, что программер я так себе

Добавлено через 16 минут
Это уже какой-то бред... В ВБ формула с разделением запятыми (так вылета в ошибку нет). Если ставлю ; то вылетает. В экселе в качестве разделителей используются ; и эксельчик вроде как меняет запятые на ; при вставке формулы из формы. Но та же проблема остается.. #ИМЯ?. При выделении и энтере все читается как должно((( Что ж творится-то, товарищи??
0
2737 / 1712 / 778
Регистрация: 23.03.2015
Сообщений: 5,423
01.10.2020, 11:20 8
Лучший ответ Сообщение было отмечено Gaechka_ya как решение

Решение

Цитата Сообщение от Gaechka_ya Посмотреть сообщение
Иванов Иван Иванович" - "Иванов И. И.".
Обязательно формула?

Добавлено через 1 минуту
Легче записать значение.
Visual Basic
1
2
3
4
Sub MMM()
ARR = Split([a1].Value)
[Е27].Value = ARR(1) & " " & Left(ARR(2), 1) & ". " & Left(ARR(3), 1) & "."
End Sub
0
0 / 0 / 0
Регистрация: 30.09.2020
Сообщений: 35
01.10.2020, 11:20  [ТС] 9
В архиве видео для наглядности, как все происходит..
Вложения
Тип файла: rar bandicam 2020-10-01 11-18-07-009.rar (3.32 Мб, 7 просмотров)
0
2737 / 1712 / 778
Регистрация: 23.03.2015
Сообщений: 5,423
01.10.2020, 11:36 10
Gaechka_ya, Gaechka_ya,
У вас там 2 книги excel?
0
0 / 0 / 0
Регистрация: 30.09.2020
Сообщений: 35
01.10.2020, 12:36  [ТС] 11
Да, одна с данными по сотрудникам, вторая с бланком заявления.
заполняю бланк из формы
0
2737 / 1712 / 778
Регистрация: 23.03.2015
Сообщений: 5,423
01.10.2020, 13:13 12
Gaechka_ya,
В бланк можно сразу значение
0
0 / 0 / 0
Регистрация: 30.09.2020
Сообщений: 35
01.10.2020, 13:13  [ТС] 13
Спасибо Вам огромнейшее!! С Вашим кодом заработало)))) Только добавила импорт ВБ и индексы у сплита с нуля начинаются))) СПАСИБО, сенсей!))))
0
2737 / 1712 / 778
Регистрация: 23.03.2015
Сообщений: 5,423
01.10.2020, 13:14 14
Из формы.
0
0 / 0 / 0
Регистрация: 30.09.2020
Сообщений: 35
01.10.2020, 13:24  [ТС] 15
Narimanych, да всегда есть простое решение, но мы ж не ищем легких путей))) к тому же и на будущее пригодится))

Добавлено через 1 минуту
Narimanych, и правда, спасибо Вам еще раз!! Не пожалела, что на форуме зарегилась))) Постараюсь часто не писать со своими проблемами))))
0
2737 / 1712 / 778
Регистрация: 23.03.2015
Сообщений: 5,423
01.10.2020, 13:25 16
Gaechka_ya,
Рад помочь
0
0 / 0 / 0
Регистрация: 30.09.2020
Сообщений: 35
01.10.2020, 16:08  [ТС] 17
Narimanych, вот и пригодилась Ваша функция))))
Не смогла с первого раза вытащить из DateTimePicker'а месяц словом. Тут же использовала сплит для текста пикера и взяла первый его индекс)))) шикарно)))
Visual Basic
1
2
3
mm = Split(Data1.Text)
 
        xld1.Range("d20").FormulaR1C1 = mm(1)
И в очередной раз спасибо!!)) Я нарадоваться не могу прям))
0
2737 / 1712 / 778
Регистрация: 23.03.2015
Сообщений: 5,423
01.10.2020, 16:55 18
Лучший ответ Сообщение было отмечено Gaechka_ya как решение

Решение

Gaechka_ya,
Надо
xld1.Range("d20").Value = mm(1)
вместо
xld1.Range("d20").FormulaR1C1 = mm(1)
0
0 / 0 / 0
Регистрация: 30.09.2020
Сообщений: 35
01.10.2020, 17:06  [ТС] 19
Narimanych, Ну он и так кушает неплохо)))
0
2737 / 1712 / 778
Регистрация: 23.03.2015
Сообщений: 5,423
01.10.2020, 18:00 20
Gaechka_ya,
[quote="Gaechka_ya;14879523"]Ну он и так кушает неплохо)))[/quote
Когда -нибудь может аукнуться. Лучше привыкнуть сейчас писать для значений Value, для формул Local Formula
0
01.10.2020, 18:00
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
01.10.2020, 18:00
Помогаю со студенческими работами здесь

Как вставить формулу
Подскажите как можно вставить формулу или таблицу с UserForm не получается что-то...Сделайте хоть...

Как формулу вставить ?
Подскажите как вставит в таблицу формулу для подсчета суммы Добавлено через 7 минут в Word 2007

Вставить формулу с переменной
Надо просуммировать ячейки в фильтре, для этого хочу вставить в строку после фильтра промежуточные...

Как вставить формулу?
Здравствуйте! Нужно в Прайсе с цифрами добавить 10% увеличение стоимости с округлением в большую...

Как вставить формулу
Всем добрый день. Прошу помощи знающих. Сразу прошу простить: я совершенно не силён в тематике,...

Вставить формулу в перекрестный запрос
Всем привет! Есть такой запрос: TRANSFORM SUM() AS SELECT Код_группы_ВК, , , , SUM() AS FROM...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru