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

Страницы: 1 2 3 След.
Application.Onkey с использованием ALT
 
Цитата
Alemox написал:
Зачем вам именно ALT?
По сути из-за привычки.
Alt+Tab - переключение между окнами.
Ctrl+Tab - переключение между книгами
Alt + ` - переключение между листами книги
Интересно, что сочетания с ALT работают при скрытии ленты
Код
Application.ExecuteExcel4Macro "SHOW.TOOLBAR(""Ribbon"",False)"
Так же в сети нашел способ отвязки alt от ленты через реестр:

[HKEY_CURRENT_USER\Software\Policies\Microsoft\office\16.0\excel\disabledshortcutkeyslist]"KeyMod1"="18,16"

но проверить его работоспособность не могу, т.к. нет админских прав на рабочем пк, а сам дома использую mac.
Если кто сможет простировать и после этого проверить возможность привязки клавиш с ALT - буду признателен. Появится повод докопаться до сисадмина :)  
Application.Onkey с использованием ALT
 
При попытке повесить макрос на ALT + *любая клавиша* (например, Application.OnKey "%a", "Macro1") активируется лента Excel (всплывающие подсказки). На другом ПК сочетания клавиш с alt работали  корректно. Подскажите, как можно решить данную проблему?
Ошибка Applicaton.Onkey при выборе русской раскладки
 
Были перенесены макросы на новый ПК под управлением Windows 10 и с Office 2016. При открытии каждой новой книги используется метод Apllication.Onkey. Каждый раз когда раскладка не соответствует английской Excel выдает ошибку "Method 'OnKey' of Object '_Application' failed". Как можно это можно обойти?

Пример: Application.OnKey "^`", "test"
Размножить таблицу на строки другой таблицы
 
Всем огромное спасибо!

casag, МатросНаЗебре, можно ли сделать более универсальный макрос, с возможностью выбора диапазонов каждой из таблиц и помещения результатов слияния на новый лист? Количество столбцов и строк как в первой таблице так и во второй может варьироваться.

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

Имеются две таблицы: первая со списком поставщиков, вторая со списком товаров. Каждый поставщик из первой таблицы осуществляет поставки товаров из второй таблицы. Необходимо свести таблицы так, чтобы итоговая таблица содержала распределение поставляемых товаров по поставщикам. Т.е. необходимо произвести копирование списка товаров вниз по строкам столько раз сколько содрежиться поставщиков в списке первой таблицы и напротив каждой вновь скопированной таблицы проставить поставщика.

Буду благодарен за готовый макрос.
Изменено: neqkeet - 11.11.2019 13:50:44
Окно FileDialog на передний план
 
Есть следующий код, открывающий диалоговое окно выбора файлов.
Проблема в том, что при открытии диалоговое окно не выводится на передний план, а открывается "под окнами Outlook". Приходится каждый раз использовать Alt-tab для выбора файлов.
Каким образом можно вывести окно выбора на передний план?


Код
Sub AttachTenderFiles()
    Dim objOutApp As Object, objMail As Object
    Dim myItem As Outlook.MailItem
    Dim myAttachments As Outlook.Attachments
    
    Set myItem = Application.ActiveInspector.CurrentItem
    Set myAttachments = myItem.Attachments
    With Excel.Application

        Dim oFD As FileDialog
        Dim x, lf As Long
        Set App = Excel.Application
        Set oFD = App.FileDialog(msoFileDialogFilePicker)
        With oFD 
            .AllowMultiSelect = True
            .Title = "Test" 
            .Filters.Clear 
            '.FilterIndex = 2
            .InitialFileName = "%APPDATA%\Microsoft\Windows\Recent\" 
            .InitialView = msoFileDialogViewList
            .oFD.Show
        End With
    End With
     
    Dim sInputFile As Variant
    For Each sInputFile In oFD.SelectedItems
    myAttachments.Add sInputFile, 1
    Next sInputFile
    myAttachments.Add ("P:\Test.xlsx")

End Sub

Переход к письму outlook по гиперссылке в Excel
 
Прошу помочь с кодом.

Необходимо чтобы по клику на гиперссылку происходил переход (его выбор в папке) к письму в Outlook, либо открытие этого письма
В гиперссылке будет зашит EntryId. Сами письма будут находится в архивной папке:
Folders("Архивы").Folders("Inbox").Folders("Ребрендинг")

Код
Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink)

*Код, выбирающий письмо в папке*

End Sub

Пример файла приложил.Temp.xlsx (8.76 КБ)  
Изменено: neqkeet - 29.11.2018 18:22:51
Транспонирование и группировка таблицы
 
Имеется 2 столбца с данными. Первый столбец содержит повторяющиеся значения, второй уникальные. Необходимо преобразовать данные в таблицу, шапка которой будет состоять из значений первого стобца (без дубликатов), а значениями под этими столбцами будут данные из второго столбца. Пример во вложении.
Пустая строка в таблице при использовании функции RangeToHtml
 
Актуально  :oops:  
Пустая строка в таблице при использовании функции RangeToHtml
 
Казанский, не подскажите как будет выглядеть код для замены такого куска?
Пустая строка в таблице при использовании функции RangeToHtml
 
Проблема как раз в этих строчках
Код
<![if supportMisalignedColumns]> 
  <tr height=0 style='display:none'>
  <td width=76 style='width:57pt'></td>
  <td width=216 style='width:162pt'></td>
  <td width=113 style='width:85pt'></td>
  <td width=120 style='width:90pt'></td>
  <td width=56 style='width:42pt'></td>
 </tr>
 <![endif]>
Однако удалить через Replace их не получается. Пытаюсь удалить строчки <![if supportMisalignedColumns]> и <![endif]> и все что между ними следующим кодом.
Код
RangetoHTML = Replace(RangetoHTML, "<![if supportMisalignedColumns]>*<![endif]>", _
                          "")
Не получается.

Так же интересно как будет выглдяеть код для замены строк:
 
Код
<tr height=0 style='display:none'>  
<td width=76 style='width:57pt'></td>
Например, на
 
Код
<tr height=0 style='display:none'>   
<td width=20 style='width:30pt'></td>
Т.е. не совсем понятно как заменять текст между двух кусков и как быть в случае, если текст, который необходимо заменить содержит несколько строк.
Пустая строка в таблице при использовании функции RangeToHtml
 
Казанский,

Вот так определяется диапазон, который используется функцией.
Код
Set rng = ActiveSheet.UsedRange.SpecialCells(12)
Пустая строка в таблице при использовании функции RangeToHtml
 
При массовой рассылке писем КА использую функцию RangeToHtml by Ron de Bruin.
Проблема в том, что при копировании таблицы в тело письма код добавляет пустую строчку без видимых границ в конец таблицы.
При прорисовке сетки выглядит это примерно так: Скрин

При просмотре HTML кода нашел следующие строчки:
Код
<![if supportMisalignedColumns]>
 <tr height=0 style='display:none'>
  <td width=76 style='width:57pt'></td>
  <td width=216 style='width:162pt'></td>
  <td width=113 style='width:85pt'></td>
  <td width=120 style='width:90pt'></td>
  <td width=56 style='width:42pt'></td>
 </tr>
 <![endif]>
Пытался удалить через Replace, эффекта нет.
Код
RangetoHTML = Replace(RangetoHTML, "<![if supportMisalignedColumns]>*<![endif]>", _
                          "")

Возможно ли каким-либо образом удалить лишнюю строчку?

Стандартный код функции RangeToHtml :
Скрытый текст
Прикрепить несколько вложений через пользовательскую форму
 
Ниндзя... Большое спасибо :)
Прикрепить несколько вложений через пользовательскую форму
 
Прошу помочь с кодом. Пытаюсь через пользовательскую форму добавить несколько файлов и прикрепить их к новому письму.
Пока получилось сделать рабочий код только с одним файлом.

Вызов формы
Код
Sub Main_macro()
UserForm3.Show
End Sub

Кнопка выбора файлов
Код
Private Sub CommandButton1_Click()
Dim myfilepath As String
myfilepath = Application.GetOpenFilename
TextBox1.Text = myfilepath
End Sub

Кнопка создания письма с выбранным файлом
Код
Private Sub CommandButton2_Click()
mypath = TextBox1.Text
Call send_Test(mypath)
End Sub

Создание письма на основе выбранных файлов
Код
Sub send_Test(ByVal mypath)
Dim objOutApp As Object, objMail As Object, wb As Workbook, mass()
Set objOutApp = CreateObject("Outlook.Application")
Set objMail = objOutApp.CreateItem(0)


    With objMail
    .display
   .attachments.Add (mypath)

  Set objMail = Nothing
End With
Set objOutApp = Nothing
End Sub


Изменено: neqkeet - 03.07.2018 10:54:06
Изменение формата текста в пользовательских формах
 
Только список адресатов. Через Outlook это полностью в него код поместить и обращаться к файлу?
Изменение формата текста в пользовательских формах
 
Рассылка происходит из excel по контрагнетам в таблице.
Изменено: neqkeet - 01.07.2018 20:23:38
Изменение формата текста в пользовательских формах
 

Пытаюсь сделать дружелюбный в использовании макрос для массовой рассылки писем из excel. Для этих целей была создана пользовательская форма, наподобие такой:

http://pichost.org/images/2018/07/01/ScreenShot2018-07-01at17.32.18.png

Проблема с полем message(тело сообщения), куда можно вставлять только текст без форматирования. Хотелось бы иметь возможность редактировать формат текста (цвет, заливка, размер и т.д.) прямо в форме, используя панель инструментов как в Word. Может кто стакливался с подобным?

Изменено: neqkeet - 01.07.2018 20:18:41
Исключить из фильтра выделенные значения
 
Вынужден вернуться к данной теме...

Макрос Ігор Гончаренко, не работает при наличии фильтрации в соседних столбцах таблицы (см. файл с примером). Вернее код пытается сопоставлять значения во всем столбце, без учета скрытых соседним фильтром строк
Код
Sub AAA()
  Dim cl As Range, rng As Range, rg As Range, f$
  Set rng = Selection.SpecialCells(xlCellTypeVisible)
  Set rg = Cells(2, 3).Resize(ActiveSheet.UsedRange.Rows.Count - 1, 1)
    For Each cl In rg
    If rng.Find(cl, , xlValues, xlWhole) Is Nothing Then f = f & Chr(9) & cl.Text
  Next cl
  Range("A1").AutoFilter Field:=3, Criteria1:=Split(Right(f, Len(f) - 1), Chr(9)), Operator:=xlFilterValues
End Sub
Ограничение в виде
Код
Set rg = Cells(2, 3).Resize(ActiveSheet.UsedRange.Rows.Count - 1, 1).SpecialCells(xlCellTypeVisible)
приводит к ошибке: Invalid procedure call or argument.

Код мсье  RAN, упорно фильтруются по шапке столбца.

К сожалению, не хватает знаний чтобы переделать ни тот ни другой код. Прошу помочь.
Изменено: neqkeet - 03.04.2018 12:16:02
Исключить из фильтра выделенные значения
 
У меня данный код фильтруется по шапке столбца  :)
Макрос Игоря умирает на больших массивах данных, либо вовсе отказывается работать  :(  
Изменено: neqkeet - 27.02.2018 10:48:28
Исключить из фильтра выделенные значения
 
Цитата
RAN написал:
Почему не корректно? Как написан, так и работает.
Проблема с таблицей в примере 3 действительно была в данных. Заменил ячейки "Специалист" и "Региональный менеджер", заново прописав их вручную и все заработало. Если предложите более простой способ, буду рад.

Цитата
RAN написал:
Вот только с самого утра понять не могу, что сей макрос вообще делать должен? И по каким критериям и событиям?
Критериев и событий нет. Макрос для исключения ненужных значений из фильтра. Гораздо удобнее забиндить данный код на доп. кнопку мыши, чем выкликивать ненужные значения в выпадающем списке. Особенно если значений много.
Исключить из фильтра выделенные значения
 
Извиняюсь, если задолбал  :)  Почему в следующем примере код работает некорректно?  
Исключить из фильтра выделенные значения
 
Спасибо! Но макрос работает только если ячейки, которые необходимо скрыть из фильтра уникальные. Это как-то можно обойти? Попробуйте отфильроваться по ячейкам (C8:C9) из примера 2.  
Исключить из фильтра выделенные значения
 
Ёк-Мок, спасибо, но нужен вариант именно через фильтр.
Ігор Гончаренко, код будет использоваться в модуле общей книги макросов. Не совсем понял на что нужно заменить в этом случае "Me". Так же хотелось бы иметь возможность фильтроваться по значениям ячеек, которые находятся вне столбца 3.
Изменено: neqkeet - 26.02.2018 09:41:35
Исключить из фильтра выделенные значения
 
Так тоже пробовал. В этом случае он фильтруется только по нижнему последнему значению. Т.е. если выделить ячейки "СПБ" и "Тюмень", макрос отфильтрует только по Тюмени. То же самое если через ctrl выбирать. Выбираем Москву, Иркутск и Красноярску - отфильтровывает только Красноярск. Пример с макросом добавил.
Изменено: neqkeet - 26.02.2018 00:13:06
Исключить из фильтра выделенные значения
 
Пробовал. Ошибка "Type mismatch".
Исключить из фильтра выделенные значения
 
Есть следующая конструкция:
Код
Sub AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA()
    Dim cl As Range, rng As Range, filterValues() As Variant
    Set rng = Selection.SpecialCells(xlCellTypeVisible)
    ReDim filterValues(1 To rng.Count)
    i = 0
    For Each cl In rng
        i = i + 1
        filterValues(i) = cl.Text
    Next cl
    Range("A1").AutoFilter Field:=3, Criteria1:=filterValues, Operator:=xlFilterValues
End Sub

В текущем варианте макрос фильтруетcя по выделенным значениям. А необходимо чтобы он эти значения исключал. Прошу помочь.
Суммирование итогов в динамичной таблице
 
Прошу помочь с макросом.

Есть выгрузка таблицы с продажами товаров по филиалам. По каждому филиалу необходимо посчитать сумму продаж по всем товарам. Так же необходимо найти общум сумму по всем филиалам.
  • Количество товаров в каждом филиале всегда выгружается разное.
  • Количество филиалов тоже динамичное, однако не может быть больше 9
Как вижу логику решения задачи
Результат = Сумма([Предыдущий]Результат.Offset(1,0) : Результат.Offset(-1,0))
Код получился такой:

Код
Set range1 = Range("D3", Range("D65000").End(xlUp).Offset(-1)).SpecialCells(xlCellTypeVisible)
  For Each cell In range1
       cell.Formula = "=SUM(" & [Previous].cell.offset(1,0).Address(False, False) & ":" & cell.Offset(-1, 0).Address(False, False) & ")" 
  Next cell

Непонятно
  • как описать offset(1,0) предыдущей ячейки в цикле. В коде обозначил как "[Previous].cell.offset(1,0).Address(False, False)" для наглядности
  • как с первой ячейкой в цикле
  • Каким образом суммировать общий результат, если количество филиалов всегда разное.
Изменено: neqkeet - 15.12.2017 15:14:46
Объединение двух таблиц в одну
 
Все еще актуально.
Объединение двух таблиц в одну
 

Z,  спасибо за ответ. Не совсем понял причем здесь сопоставление/сравнение/и соответствие. Я приложил пример (как раз по пункту правил 2.3) и указал исходные данные и то что должно быть в итоге. Видимо логика преобразования не совсем понятна и наглядна. В связи с этим поправил первый пост (в том числе подпилил пример для наглядности) и добавил письменное описание задачи.
Что касается приемов, я так и не понял, как это мне поможет при решении моей задачи. В одной теме описано как свести несколько таблиц из разных файлов, так чтобы было понятно к какому файлу (городу) относится кусок данных. Во втором примере прием со сравнением таблиц. Мне сравнивать ничего не нужно.

Изменено: neqkeet - 13.12.2017 16:13:16
Страницы: 1 2 3 След.
Наверх