Выбрать дату в календареВыбрать дату в календаре

Страницы: 1
Как открыть excel книги в одном процессе?, не работают макросы по переносу данных из-за того, что книги открыты в разных процессах.
 
Добрый день! Столкнулся с проблемой, с которой раньше никогда не встречался.
Я не могу не ссылаться из одной книги на другую, ни писать макросы копирующие из одной книги в другую.
Код
 Workbooks(now_book_name).Sheets("Список").Range("B" & i & ":AY" & i) = Workbooks(new_book_name).Sheets("Данные").Range("B2:AY2").Value
Подобные банальные коды не работают. Всё голову сломал и не понимал почему. Позже понял, что открывается два процесса.
Что делать. Как открывать книги в одном процессе через макрос.
Помогите, пожалуйста. DDE запросы оключил. Не понимаю, как побороть эту беду. Сейчас делаю что-то типа:
Код
Set myExcel = CreateObject("Excel.Application")
    Set myWorkBook = myExcel.Workbooks.Open(sOM)
    new_book_name = myWorkBook.Name
   ' MsgBox new_book_name
   ' MsgBox now_book_name
    myExcel.Visible = True
    Workbooks(now_book_name).Sheets("Список").Range("B" & i & ":AY" & i) = Workbooks(new_book_name).Sheets("Данные").Range("B2:AY2").Value

    myWorkBook.Save
    myWorkBook.Close
Определить формулой количество последних дней месяца из массива, Массив 01.02.2023,05.02.2023,31.01.2023,01.02.2023,28.02.2023,05.02.2023. Как получить формулой ответ 2?
 
Добрый день!

Помогите пожалуйста.
Задача посчитать строчки по определенным критериям. Критериев много. Все эти критерии легко укладываются в формулу СЧЁТЕСЛИМН. За исключением одного. Нужны данные лишь на последний день каждого месяца.
Сколько не искал я даже не понял как формулой без доп столбца посчитать количество последних дней месяца из массива.
Может есть у кого-то идеи?
Указать список значений для ComboBox, Как переделать 1|2|3|4|5 в Array("1", "2", "3", "4", "5", "6")
 
Добрый вечер.

Имею  в наличии список значений в формате 1|2|3|4|5
Создал ComboBox Насколько я знаю в него значения заносятся следующим образом
Код
ComboBox4.List = Array("1", "2", "3", "4", "5", "6")
Попытался занести имеющиеся у меня списки таким образом:
Код
ComboBox4.List = Array("")
zn = Replace(zn, "|", """, """) 
zn = """" & zn & """"
ComboBox4.List = Array(zn)
ComboBox4.ListIndex = 0
Список не получился. Что делаю не так?
Вписать переменную в код VBA через inputbox
 
Добрый день!

Не могу придумать, что делать. Я переношу модуль из одной книги в другую на разных компьютерах. В модуле есть код с ссылкой на определенную папку у пользователя. Папка всегда меняется и пользователь должен прописывать её сам.

Есть ли через код возможность запустить макрос с inputbox. А далее, что введенное значение из inputbox сохранилось в определенном месте в макросе или группе макросов?

То есть например, чтобы один раз и навсегда вписать zn в код через всплывшее inputbox
Код
zn= "D:\test.txt"
Open zn For Input As 1
putt = Input(LOF(1), 1)
Close 1
Сцепить pdf из excel
 
Добрый день!

Сломал всю голову. Есть две ячейки с указанием пути к файлам. Файлы в pdf. Данные файлы нужно соединить в один.
В наличии программы acrobat DC и PDF-XChange Viewer. Также программа PdftkXp.

Пробовал так:
Код
Sub pdfxx3()

folderPDFexe = "C:\Program Files (x86)\PDFtk\bin\PdftkXp.exe"
folderPDFout = "D:\1\temp\CCPPF20190701696.pdf"
folderPDFin = "D:\1\*.pdf"

folderPDFin2 = "D:\1\temp\"

folderPDFexe = """" & folderPDFexe & """"
folderPDFout = """" & folderPDFout & """"
folderPDFin = """" & folderPDFin & """"


    cmdStr = folderPDFexe & " " & folderPDFin & " cat output " & folderPDFout
               
     
    Shell cmdStr, vbHide

sFolder = "D:\1\temp\"


End Sub

и так:
Код
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

Не получается. Помогите, пожалуйста.
Расчет с использованием ссылки
 
Добрый день!

Раньше как-то делал, но давно не пользовался и забыл с помощью какой формулы. И даже идеи нет что ввести в поиске, чтобы найти решение  :)
Пытаюсь сослаться на другую книгу с помощью ссылки на ячейку. Последнюю попытку делал так:
Код
=ДВССЫЛ("D:\"&A1&"\[1.xlsx]Лист1!$C$1")
Знаю как это сделать макросом, но нужно решение именно формулой. Подскажите, пожалуйста, как это можно сделать?
Название листа в формуле типа ".FormulaR1C1", Не получается вставить в формулу типа ".FormulaR1C1" название листа.
 
Добрый день!

Пытался найти по поиску но не получилось, помогите, пожалуйста.
Проблема в следующем: Не получается вставить в формулу типа ".FormulaR1C1" название листа. Листы имеют разные названия.
Возможно, что-то не так с кавычками делаю, но я перепробовал уже все варианты:
Код
Sub aaa()
Set x1 = Application.InputBox(Prompt:="Выберите лист с Названием", Title:="Выбираем любую ячейку на нужном листе", Type:=8)
list1 = x1.Parent.Name
ActiveCell.FormulaR1C1 = "=" & list1 & "!R[2]C[1]"""
End Sub
Не работает глобальная переменная
 
Добрый день!

Давно не пользовался глобальными переменными и, видимо, подзабыл какой-то нюанс работы с ними. Подскажите, пожалуйста, что делаю не правильно?

Хочу задать на форме переменную, которая действовала бы во всех макросах, которые есть в книге. Например задать i=1. И при запуске любого макроса i уже было бы равно 1.

В примерt форма. При установке галочки нажитии на кпопку "Пуск", хочу получить значение переменной, но у меня всегда показывает 0. В чем ошибка?
Применить формат ячейки
 
Добрый день!

Я собственного развития, меня заинтересовал следующий вопрос: "Как применить формат к ячейке?"
Если взять ячейку, сметить ей формат с числового на текстовый, то изменения вступят в силу, только если я выбираю ячейку и нажимаю "enter"

Тоже самое с макросом:
Код
Range("A2").NumberFormat = "@"
Формат установится, но по факту, он останется тем, которым был до этого (например числовым) до того пока ячейка не будет изменена.

Подскажите, пожалуйста, кто-нибудь знает как это обойти? Особенно интересно для диапазона ячеек.
Изменено: Юрий - 25.05.2016 15:57:21
Узнать имя Shape при запуске из него макроса, Определить имя объекта при нажатии на назначенный на него макроса
 
Добрый день!
Обычно я определяю имя интересующего объекта так.
Код
n = Selection.ShapeRange.Name
Сейчас пытаюсь определить имя объекта при нажатии на назначенный на него макроса.Подскажите, пожалуйста, каким образом можно это сделать?

Ещё очень интересует, есть ли возможность назначить один и тот же макрос на все объекты на листе не ручным способом?
Проблема с имитацией клавиш
 
Добрый вечер.

Я написал макрос, который должен имитировать нажатия клавиш. Конкретно он должен копировать ячейки и вставлять значения из них, например, в блокнот. Почему-то он на разных компьютерах работает по-разному, но есть одно общее – никогда не производит все действия корректно. Подскажите, пожалуйста, в чем может быть причина?
Поиск по критерию, ... и вставка найденных значений через разделитель в выбранную ячейку
 
Добрый день.

Пытаюсь переделать под себя макрос для поиска определенных значений по критерию и вставление найденных значений через разделитель в выбранную ячейку. Не могу понять, как сделать, чтобы вставка осуществлялась в одну ячейку. Как это проделать с выделенным диапазоном, я разобрался в приложенном примере есть код (Click), но как объединить эти макросы что-то не могу сообразить. Подскажите, пожалуйста, как доработать код
Выбор диапазона для обработки, Не работает добавление "формы выбора диапазона" (Application.InputBox(Type:=8))
 
Добрый день.

Подскажите, пожалуйста, в чем ошибка. Нашел макрос для работы с примечаниями. Пытаюсь его заставить работать с "формой выбора диапазона". Основная проблема - скрестить два указанных ниже фрагмента:
Код
 Set rFormulasRng = Application.InputBox("Выделите мышкой диапазон с формулами", "Укажите диапазон с формулами", , , , , , Type:=8)
    If rFormulasRng Is Nothing Then Exit Sub

Код
 Set iRangeComments = .rFormulasRng.SpecialCells(xlComments) 

Я абсолютно не имею понятия, как это сделать. Варьировал и так и этак, но знаний в этой области нет, поэтому безуспешно.

Объясните мне, пожалуйста, разницу между Range=Range и Range=.Range и подскажите, как указать переменную, чтобы код работал. (Например, так не работает:
Код
 z =Range("H8:H10")
Set iRangeComments = .z.SpecialCells(xlComments) 
)

PS добавленный код для наглядности отчертил "--------------------------------"
Изменено: Юрий - 11.02.2013 13:15:28
Изменение textbox при изменении ячейки, Изменение textbox в реальном времени (не закрывая форму) при изменении ячейки
 
Добрый вечер.

Подскажите, пожалуйста, как сделать, чтобы в реальном времени (не закрывая форму) происходило при изменение textbox при изменении ячейки. Допустим я написал:
Код
Private Sub UserForm_Initialize()
TextBox1.Text = Range("A1").Value
End Sub
Если я в А1 введу значение, то в TextBox1 оно появится, только после перезагрузки формы. Можно ли как-то сделать чтобы значение в форме обновлялось без её перезагрузки в реальном времени? Можно ли аналогично делать с ComboBox и др. объектами?
Имя листа через переменную, Код аналогичный Range("a" & i) для Sheets("название")
 
Добрый день.

Подскажите, пожалуйста, ответ на мой глупый вопрос :) . Для ячейки можно использовать команду Range("a" & i). Как будет выглядеть в таком стиле код для Sheets("название")? Нужно не выбор через номер, а именно через имя.
Т.е. код ниже не подходит:

sub 1()
dim i
i=1
Sheets(i).select
end sub
Удаление OLEObjects в определенном диапазоне
 
Добрый день.  
 
подскажите, пожалуйста, что нужно добавить, чтобы команда:  
ActiveSheet.OLEObjects.Delete  
удаляла в определенном диапазоне.  
 
 
В качестве примера можно использовать выделенный диапазон(selection).
Сложение диапазонов макросом (Range+Range).
 
Добрый день,  
 
Подскажите, пожалуйста, возможно ли сложение диапазонов макросом без использования цикла?  
 
Макрос образца, указанного ниже, выдает ошибку:  
 
Sub aМакрос1()  
'  
Range("A1:A2") = Range("A1:A2") + Range("A1:A2")  
End Sub  
 
До этого выходил из ситуации так:  
Sub Макрос2()  
'  
   Range("A1:A2").Copy  
   Range("A1").PasteSpecial Paste:=xlPasteAll, Operation:=xlAdd  
End Sub
Замена цвета границ
 
Добрый день.  
 
Подскажите, жалуйста, как заменить с помощью макроса цвет границ и заливки ячеек.  
Я абсолютно без понятия как применять одновременно IF и with.  
 
Допустим    
   If With Selection.Borders  
       .Color = -16776961  
       .TintAndShade = 0  
       .Weight = xlHairline  
   End With  
tnen........  
 
Прикладываю пример файла. В нем нужно заменить все красное на синее.
Заполнение ячейки справо в зависимости от введенного текста в ячейке слева.
 
Добрый день.  
 
Написал макрос. Без цикла он работал, не могу заставить работать его с циклом. Смысл макроса: Макрос находит на листке "значение" в ячейке, копирует значение с право от него и заносит это значаение рядом с "значение2". Коряво получилось объяснить...  
 
Например в какой-то ячейке стоит слово ПРИМЕР. Справо от него значение 5. Нужно чтобы макрос нашел ПРИМЕР2 и вставил справо от него 5.  
Подскажите, пожалуйста, в чем ошибка моего макроса
Выбрать открытую книгу для редактирования из другой книги
 
Добрый день.  
 
Подскажите, пожалуйста, как можно выбрать открытую книгу для редактирования из другой книги.  
 
Например я создал 2 книги ( книга1 и книга2). Нужно в книга1 написать макрос, который выберет книга2. Собираюсь применять так: Открываю две книги. Из одной открытой книги переношу значения в другую открытую книгу.  
 
Пробовал так: Workbooks("Книга2").Sheets("Лист1").Range("A1").Select  
     
и так Workbooks("Книга2").Sheets("Лист1").Activate  
 
Подскажите, какую нужно использовать команду. Открываемая книга не должна быть привязана к пути.
Проблема с вставление данный из textbox в ячейку.
 
Добрый день  
 
Столкнулся со следующими проблемами при вставление данный из textbox в ячейку excel:  
Когда вставляю текст в textbox он отображается нормально, но когда перехожу в ячкйку, чтобы проверить как вставилось, то весь текст получается с лишними строчками, тоесть отображается вместо:    
1. пример1  
2. пример2  
 
1. пример1  
 
2. пример2  
 
Подскажите, пожалуйста, как убрать лишние "Enter"ы.  
 
Также хотелось бы узнать: Можно ли в textbox с помощтю макроса сразу создавать нумерованный список, как в word?
Как протянуть ActiveX листе с изменением LinkedCell
 
Добрый день.  
 
Подскажите, пожалуйста, как во время работы с ActiveX листе:  
 
1)Как протянуть ActiveX листе с изменением LinkedCell? Например, я вставил в A1 CheckBox, LinkedCell прописал равным A1. Как протянуть допустим до A27, чтобы LinkedCell тоже менялся. То есть если выбрать свойства CheckBox в ячейке A8, то LinkedCell будет равна A8.  
 
2) Как быстро удалить все лишние  ActiveX с листа? Допустим я протянул ячейку с CheckBox C A1 до A30, а мне нужно только до A20. Как быстро удалить лишние 10 CheckBox(Я сейчас кликаю на каждый и удаляю.).
Цикл с условием
 
Добрый вечер,  
 
Подскажите, пожалуйста, как можно задать такой цикл:  
В ячейке А1 стоит число. В B2 тоже стоит число, умножив которое на некую величину получим число, равное числу в ячейке A1. Как должен выглядеть код макроса, чтобы начиная с А2 в столбец. А вставлялись числа, равные B2, пока их сумма не станет равной числу в ячейку А1.  
 
Проблема в том, что я абсолютно не знаю, как выглядит сумма в VBA и как задать цикл соответствующий определенному условию, а не номеру ячейки.
Корректная вставка макросом из excel в word
 
Добрый вечер.  
 
Имеется в наличии макрос, который вставляет данные из excel  в word. Пример что получается во вложении. Можно ли все, что не очерчено видимой таблицей заменить на пробелы.  
 
Есть также макрос в word(пранирую заускать из excel), который заменяет границы на пробелы:  
Sub ConvertTablesToText()  
Dim TablesAmount As Long  
 
   With ActiveDocument.Tables      'с таблицами в активном документе Word'  
       If .Count = 0 Then  
           MsgBox "В документе " & ActiveDocument & " нет таблиц Excel и Word."  
       Else  
           TablesAmount = .Count 'запомнили, сколько таблиц было в документе до преобразования их в текст'  
             
           Do  
           .Item(1).ConvertToText vbTab 'преобразует первую таблицу (из имеющихся) в текст,'  
                                                        'разделяя бывшие колонки символами табуляции'  
           TablesAmount = TablesAmount - 1  
           Loop Until TablesAmount = 0 'выходим; теперь все таблицы преобразованы в текст'  
             
       End If  
   End With  
     
End Sub  
 
 
End Sub  
 
Не знаю, как заставить его оставить выделенные поля нетронутыми (документы всегда разные получаются).
Макрос выборочного обновления связий
 
Добрый день,  
 
Очередной раз стакнулся с проблемой, которую не могу решить самостоятельно.  
 
У меня есть некий файл, который имеет ссылки на другие 40-50 файлов. При запуске я нажимаю обновить связи....Проблема в том, что не все файлы, с которыми стоит связь, оказываются в папке одновременно. Поэтому приобновлении ссылок надо выбирать файлы, которые уже есть в папке и нажимать обновить.  
 
Недавно попытался написать макрос на обновление связей:  
Sub dv()  
Application.DisplayAlerts = False  
ActiveWorkbook.UpdateLink (ActiveWorkbook.LinkSources(xlOLELinks))  
End Sub  
 
Но если каких=то файлов в папке нет, то он выдает ошибку.    
 
Как можно сделать, чтобы макрос обновлял связи со всеми файлами присудствующими в папке, а которых в папке еще нет не обновлял?  
Файл обновления перемещается вмести с обновляемыми файлами. Поэтому     ActiveWorkbook.UpdateLink Name:=  - не подходит.
Выпадающий список (проверка значения) и макрос
 
Добрый день,  
 
У меня возникла такая проблема: Есть книга с выпадающим списком и есть макрос, который взависимости от выбранного значения из списка выполняет ту, или иную функцию.  
 
Проблема в том, что чтобы макрос заработал, нужно после выбранного из списка значения нажать enter(т.е. как бы ввести данные в ячейку). Можно ли как-то сделать, чтобы при выборе значения из списка макрос начинал "считать" без нажатия enter
Range("C1:X1"), чтобы вместо 1 была "i".
 
Добрый день,  
 
Подскажите, пожалуйста, как правильно записать в макросе  формулу Range("C1:X1"), чтобы вместо 1 была "i", где i- любое заданное мной число. Я написал макрос для одной ячейки. Подскажите, пожалуйста, переделать его для диапазона.
Макрос отправки Outlook из excel от имени (From)
 
Добрый день.  
 
Подскажите есть следующий макросдял отправки сообщения через excel:  
 
Sub SendMail2()  
   Dim OutApp As Object  
   Dim OutMail As Object  
   Dim cell As Range  
         
   Application.ScreenUpdating = False  
   Set OutApp = CreateObject("Outlook.Application")  
   OutApp.Session.Logon  
   On Error GoTo cleanup  
   Set OutMail = OutApp.CreateItem(0)  
   On Error Resume Next  
         
   With OutMail  
       .To = Range("A13").Value    
       .Subject = Range("A25").Value    
       .Attachments.Add Range("A22").Value    
       .Body = Range("A17").Value            
.Display  
   End With  
   
   On Error GoTo 0  
   Set OutMail = Nothing  
   
cleanup:  
   Set OutApp = Nothing  
   Application.ScreenUpdating = True  
End Sub  
 
Подскажите, пожалуйста, как сделать. Чтобы при отправки outlook выбирал адрес с которого отправлять сообщения.
Макрос для сохранение в подпапку той же папки, в которой находится файл
 
Добрый день, мне нужна Ваша помощь.  
Я написал макрос который копирует данные из excel в word, и сохроняет их в определенное место. Проблема в том, что путь сохранения строго указан. А файл может перемещаться, и соответственно путь сохранения будет тоже меняться. Нужно сделать так, чтобы макрос сохранял документ word в подпапку той же папки, в которой находится файл.(Например Файл с макросом находится в папке С:\File\январь\ и сохраняет word в С:\File\январь\1\. Если переместить excel в С:\File\февраль\, надо чтобы он сохранял файл в С:\File\февраль\1\).  
 
Подскажите, пожалуйста, как это реализовать.  
 
 
Может тогда кто-нибудь подскажет как сделать, чтобы word сохранял файл в путь указанный в ячейке excel. Вот макрос который я написал(сохранение не работает):  
Sub Макрос1()  
'  
' Макрос1 Макрос  
Sheets("Лист1").Select  
Columns("E:J").Select  
Selection.Copy  
Set Word = CreateObject("Word.Application")  
 
Word.Visible = True  
 
Set Doc = Word.Documents.Add()  
 
Doc.Activate  
Word.Selection.PasteExcelTable False, False, False  
Word.ActiveDocument.SaveAs Filename:=Range("A1"), FileFormat:=wdFormatXMLDocument, _  
LockComments:=False, Password:="", AddToRecentFiles:=True, WritePassword _  
:="", ReadOnlyRecommended:=False, EmbedTrueTypeFonts:=False, _  
SaveNativePictureFormat:=False, SaveFormsData:=False, SaveAsAOCELetter:= _  
False  
 
End Sub
Страницы: 1
Наверх