написал: Set myExcel = GetObject(,"Excel.Application")
Спасибо огромное! Что-то я давно не писал макросы вне одной книги
Вы правы, наверное смысла нет. Просто решил для ускорения сделать по аналогии. Перехожу с word файлов на excel шаблоны, и полностью решил продублировать код:
Код
On Error Resume Next
Set WordApp = GetObject(, "word.application")
If WordApp Is Nothing Then
Set WordApp = CreateObject("word.application")
End If
On Error GoTo 0
With WordApp
.Visible = False
.Documents.Open Filename:=sOM
End With
Он не сработал и я начал экспериментировать... наверное признаюсь в ещё одной глупости... Я нашел даже выход перед тем как писать на форуме, но всё же данный костыль не давал мне покоя. Я запускал excel через:
Добрый день! Столкнулся с проблемой, с которой раньше никогда не встречался. Я не могу не ссылаться из одной книги на другую, ни писать макросы копирующие из одной книги в другую.
Код
Workbooks(now_book_name).Sheets("Список").Range("B" & i & ":AY" & i) = Workbooks(new_book_name).Sheets("Данные").Range("B2:AY2").Value
Подобные банальные коды не работают. Всё голову сломал и не понимал почему. Позже понял, что открывается два процесса. Что делать. Как открывать книги в одном процессе через макрос. Помогите, пожалуйста. DDE запросы оключил. Не понимаю, как побороть эту беду. Сейчас делаю что-то типа:
Определить формулой количество последних дней месяца из массива, Массив 01.02.2023,05.02.2023,31.01.2023,01.02.2023,28.02.2023,05.02.2023. Как получить формулой ответ 2?
Определить формулой количество последних дней месяца из массива, Массив 01.02.2023,05.02.2023,31.01.2023,01.02.2023,28.02.2023,05.02.2023. Как получить формулой ответ 2?
Определить формулой количество последних дней месяца из массива, Массив 01.02.2023,05.02.2023,31.01.2023,01.02.2023,28.02.2023,05.02.2023. Как получить формулой ответ 2?
Определить формулой количество последних дней месяца из массива, Массив 01.02.2023,05.02.2023,31.01.2023,01.02.2023,28.02.2023,05.02.2023. Как получить формулой ответ 2?
Определить формулой количество последних дней месяца из массива, Массив 01.02.2023,05.02.2023,31.01.2023,01.02.2023,28.02.2023,05.02.2023. Как получить формулой ответ 2?
Подскажите, пожалуйста, правильно ли я объединил с формулой?
Код
=СУММПРОИЗВ((B2:B502>0)*(C2:C502<>"Пример")*1)
Получил следующее:
Код
=СУММПРОИЗВ((B2:B502>0)*(C2:C502<>"Пример")*((A2:A502=КОНМЕСЯЦА(--A2:A502;0)))*1)
или
=СУММПРОИЗВ(--(B2:B502>0);--(C2:C502<>"Пример");--((A2:A502=КОНМЕСЯЦА(--A2:A502;0))))
Определить формулой количество последних дней месяца из массива, Массив 01.02.2023,05.02.2023,31.01.2023,01.02.2023,28.02.2023,05.02.2023. Как получить формулой ответ 2?
Помогите пожалуйста. Задача посчитать строчки по определенным критериям. Критериев много. Все эти критерии легко укладываются в формулу СЧЁТЕСЛИМН. За исключением одного. Нужны данные лишь на последний день каждого месяца. Сколько не искал я даже не понял как формулой без доп столбца посчитать количество последних дней месяца из массива. Может есть у кого-то идеи?
Jack Famous написал: а что, простите, непонятного в варианте от RAN ???
Отличный вариант. Даже лучше. Просто я подумал, что он вопрос задает, а не ответ дает. Поэтому не протестировал.... RAN, спасибо Вам огромное за отличный вариант!
Также очень хотелось бы разобраться с Evaluate Очень интересное решение. В том же autoit есть подобная функция которая позволяет проделывать подобное, а не использовать более сложные методы. Называется Eval. С помощью неё можно проделывать что-то такое:
Код
znach1=15
$num_state =1
msgbox Eval ("znach"& $num_state) 'Выдаст сообщение "15"
Вот только я не могу понять как такое же сделать с VBA и с Evaluate. Можете подсказать?
Также я пробовал использовать
Код
Dim zn$, iArr&(0 To 9), i&, x
For Each x In Split(zn, "|")
iArr(i) = x
i = i + 1
Next
Но, что-то у меня плохо начало получаться, как только я перестал экспериментировать с 1|2|3|4|5. Как только стал использовать словами и предложения, подтягиваться начало только первое значение. Далее пришлось бы возиться с изменением размера массива. А как это делать, я пока не придумал. Поэтому я и подумал, что наверняка есть что-то типа "Evaluate ", которое позволит "ожить" простую конструкцию указанную в примере.
Добавил Ваши варианты в файл. С Evaluate вариант не "завелся". Почему, я не понимаю. Вариант от New простой и отличный. Работает как часы. Ещё раз за него огромное спасибо!
Как раз про с Evaluate возился. Спасибо большое. Пришел к выводу, что проблема была в том, что я запятую вместо ";" использовал. Но не успел попробовать. Вижу кроме этого нужно дополнительно кое что добавить... Подскажите, пожалуйста, для чего нужны "1, -1, 1" и фигурные скобки?
Не могу придумать, что делать. Я переношу модуль из одной книги в другую на разных компьютерах. В модуле есть код с ссылкой на определенную папку у пользователя. Папка всегда меняется и пользователь должен прописывать её сам.
Есть ли через код возможность запустить макрос с inputbox. А далее, что введенное значение из inputbox сохранилось в определенном месте в макросе или группе макросов?
То есть например, чтобы один раз и навсегда вписать zn в код через всплывшее inputbox
Код
zn= "D:\test.txt"
Open zn For Input As 1
putt = Input(LOF(1), 1)
Close 1
Сломал всю голову. Есть две ячейки с указанием пути к файлам. Файлы в pdf. Данные файлы нужно соединить в один. В наличии программы acrobat DC и PDF-XChange Viewer. Также программа PdftkXp.
Sub mergePDF() 'Объединение PDF (PDDoc)
Set PDDoc1 = CreateObject("AcroExch.PDDoc"): file1 = PDDoc1.Create
Папка = [G3]
If Папка = "" Then Папка = Application.ActiveWorkbook.Path & "\Join\"
If Right(Папка, 1) <> "\" Then Папка = Папка & "\"
If Dir(Папка & "_merge.pdf") <> "" Then Kill Папка & "_merge.pdf"
ФайлPDF = Dir(Папка & "*.pdf")
Do Until ФайлPDF = "" 'цикл по всем файлам rtf
pdf = Папка & ФайлPDF
Set PDDoc2 = CreateObject("AcroExch.PDDoc"): file2 = PDDoc2.Open(pdf)
Call PDDoc1.InsertPages(PDDoc1.GetNumPages - 1, PDDoc2, 0, PDDoc2.GetNumPages, 0): PDDoc2.Close
ФайлPDF = Dir 'следующий файл в нашей выборке
Loop
SaveMerge = PDDoc1.Save(PDSaveFull, Папка & "_merge.pdf"): PDDoc1.Close
Set PDDoc1 = Nothing: Set PDDoc2 = Nothing
End Sub
БМВ, Спасибо. То есть надо все книги открытыми держать получается... Обойти способа нет? Alemox, БМВ, верно подметил - "задача то путь к книге сделать вычисляемым, а не просто сослаться на ячейку."
Раньше как-то делал, но давно не пользовался и забыл с помощью какой формулы. И даже идеи нет что ввести в поиске, чтобы найти решение Пытаюсь сослаться на другую книгу с помощью ссылки на ячейку. Последнюю попытку делал так:
Код
=ДВССЫЛ("D:\"&A1&"\[1.xlsx]Лист1!$C$1")
Знаю как это сделать макросом, но нужно решение именно формулой. Подскажите, пожалуйста, как это можно сделать?
Все понял. Все из-за того, что фраза заканчивалась на "Enter". Как обычно 2 суток ищу решение проблемы, стоит написать на форум, и сразу ошибка становится видна
У меня вместо перезаписи все время "дописывает" значение. Подскажите, пожалуйста, как поправить?
Код
Sub del()
Filename = Sheets("Данные").Range("E1").Value
WIF "4", vbNullString, "Список", Filename 'удаляет "4", а тест оставляет...
WIF "4", "тест", "Список", Filename
End Sub
Пытался найти по поиску но не получилось, помогите, пожалуйста. Проблема в следующем: Не получается вставить в формулу типа ".FormulaR1C1" название листа. Листы имеют разные названия. Возможно, что-то не так с кавычками делаю, но я перепробовал уже все варианты:
Код
Sub aaa()
Set x1 = Application.InputBox(Prompt:="Выберите лист с Названием", Title:="Выбираем любую ячейку на нужном листе", Type:=8)
list1 = x1.Parent.Name
ActiveCell.FormulaR1C1 = "=" & list1 & "!R[2]C[1]"""
End Sub