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

Страницы: 1
Не переносится ширина столбцов таблицы при копировании диапазона.
 
Есть файл с таблицами и текстовыми данными.
Проблема в том, что если я копирую данные на другой лист/другую книгу, данные переносятся, но без ширины столбцов.
Пробовал:
Ctrl+C  -> Ctrl + V
Ctrl+c -> Специальная вставка -> Копировать ширину столбцов
Макросом:
Код
    dataWs.Range(Cells(1, 1), Cells(lR, lC)).Copy
    ws.Activate
    With ws.Cells(1, 1)
        .PasteSpecial xlPasteColumnWidths
        .PasteSpecial xlPasteValues
        .PasteSpecial xlPasteFormats
    End With

Данные из файла удалил, вписал рандомные числа, прикрепил к теме.
Есть идеи, как решить проблему?
Спасибо.
Из Word в Outlook (VBA), Копирование с сохранением форматирования.
 
Необходимо скопировать текст из Ворда в Outlook, сохраняя форматирование
Нагугли нечто вроде:
Код
Sub CopyBodyFromWord()

    Dim oOutApp As Object
    Dim oMailItem As Object
    Dim oWordApp As Object
    Dim oWordDoc As Object
    Dim oMailWordDoc As Object
    
    On Error GoTo CleanUp
    
    Set oWordApp = CreateObject("Word.Application")
    oWordApp.Visible = True

    Set oWordDoc = oWordApp.Documents.Open("C:\template.docx", False, True)
    
    oWordDoc.Content.Copy
    
    Set oOutApp = CreateObject("Outlook.Application")
    Set oMailItem = oOutApp.CreateItem(0)
    
    With oMailItem
        .To = "xxx@yyy.com"
        .Subject = "This email contains Word-formatted text"
        .Body = "obrashenie"
        .Display
    End With
    
    Set oMailWordDoc = oOutApp.ActiveInspector.WordEditor
    
    oMailItem.Application.Selection.Paste
     
CleanUp:
    oWordApp.Quit
    Set oMailWordDoc = Nothing
    Set oMailItem = Nothing
    Set oOutApp = Nothing
    Set oWordDoc = Nothing
    Set oWordApp = Nothing

End Sub

Но валится на шаге:
Set oMailWordDoc = oOutApp.ActiveInspector.WordEditor
Может у кого есть советы или наработки как скопировать текст из ворда в outlook?

Спасибо

Обход ориентированного графа (с циклами).
 
Есть механизм обхода графа с циклами, с условием, что прохождение циклов не более 1 раза.
Прописано это в этой строке
Код
    For i = 1 To N_NODES
         If visited(i) <= 1 And edges(node, i) = 1 Then
            VisitForTreeAndCirclesStructure i, visited, edges, Noda, stack
        End If
    Next
В файле 2 листа (для каждого из них сделал свой модуль для удобства запуска, модули идентичные).
При обработке Sheet2 я получаю следующие цепочки:
1->2->3->4->3->4->5
1->2->3->4->3->4->5->6
Т.е. точка 3 посещается большее число раз чем положено.
На листе Sheet1 такой проблемы нет.

Добавлю, что результат выводится в Immediate окно.
Может быть кто подскажет, что необходимо добавить, чтобы цепочки с форматом 3-4-3-4 не попадали в результат.
Файл прилагаю.
Спасибо.
Все возможные варианты набора цифр (комбинаторика).
 
Добрый день.
Есть набор цифр(допустим 1,2,3).
Нужно получить все варианты строк состоящих из этих цифр, встречающихся от 0 до 2 раз, например:
1
2
3
11
22
33
1233
12233
1223
112233
и тд.
Не пойму как подступиться к этой задаче.
Необходимо реализовать это на VBA
Может подскажете в какую сторону копать.
Спасибо.
Изменено: crjk - 27.10.2021 18:03:55
Быстродейственный аналог Sumifs в VBA.
 
Добрый день.
Есть таблица (табл.1) ~20к строк, где каждую строку необходимо сделать SUMIFS из таблицы (табл. 2) в ~70к строк по двум критериям.
Таких SUMIFS будет около 20 (т.е. в 20 столбцов каждой строки табл.1 нужно сделать sumifs из табл. 2)
Пытаюсь придумать наиболее производительный вариант.
Сейчас пробую сделать просто через
Код
    For i = 0 To 22417
    DoEvents
        arr(i) = WorksheetFunction.SumIfs(Worksheets("2").Range("K:K"), Worksheets("2").Range("I:I"), _
            Worksheets("1").Cells(i + 10, 4).Value)
    Next
'Вставляем массив одним действием в табл.1
[К сожалению, на один столбец уходит порядка 2 минут. Возникает вопрос, есть ли какой-то более удобный/оптимизированный вариант?

Спасибо
Настройки полей (fields) в Worde.
 
Добрый день.
Есть вордовский документ с закладками (bookmarks), на эти закладки ведут перекрестные ссылки (cross-ref).
Проблема в том, что данные в полях этих перекрестных ссылок отображаются в разном формате.
Т.е. например, у меня в форматировании ворда поле настроено как Arial 10, но при обновлении поля (F9, чтобы туда встал текст из закладки. Предположим, у меня в закладке написано "Тестовое выражение") у меня слово Тестовое пишется Arial 10, а слово Выражение пишется Times New Roman 9. Предполагаю, что как-то неверна задана настройка поля. Прошу помочь, может кто-то сталкивался.
Вот код моего поля:
{ REF ИмяЗакладки \h \* MERGEFORMAT }

Спасибо
Обновление перекрестных ссылок на Закладку с помощью VBA.
 
Добрый день, есть задача сформировать документ Word из файла Excel.
У меня есть рыба документа Word, в которой я сделал закладки (bookmarks), например [Name].
Так вот этот Name должен встречаться в word-документе несколько раз, поэтому я сделал перекрестные ссылки на него, с помощью Cross-Reference.
Затем я обновляю поля bookmarks с помощью:
Код
wd.Bookmarks.Item(markName).Range.Text = x
После этого, как я понимаю, закладки из документа убираются, в результате слетают ссылки Cross-Reference и после нажатия ctrl+A - F9 или wd.Fields.Update у меня вместо нужного Name остается Error! Reference
source not found.

Как лучше провернуть подобную операцию, чтобы все сработало?
Спасибо.
Изменено: crjk - 15.09.2020 10:53:37
Очистка книги от пользовательской Ribbon и макросов.
 
Добрый день.
Есть книга с макросами и пользовательской панелью (ribbon). После работы с файлом необходимо удалить эту панель и очистить книгу от макросов.
1. Для удаления (точнее скрытия) панели использую следующий момент:
в XML коде моего excel-файла  меня есть строка
Код
<customUI onLoad="RibbonOnLoad" xmlns="http://schemas.microsoft.com/office/2006/01/customui">
А, соответственно в модуле книги есть макрос:
Код
Public Sub ClearFileForClient(ByRef rc As IRibbonControl)
    HideMyRibbonTab
End Sub

Sub RibbonOnLoad(Ribbon As IRibbonUI)
    Set Ribn = Ribbon
End Sub

Sub HideMyRibbonTab()
    RibnTag = "HideTab"
    If Not Ribn Is Nothing Then
        Ribn.Invalidate
    End If
End Sub
С помощью этой процедуры панель успешно скрывается.

2. Для удаления кода я сохраняю файл в xlsx формате.

Но возникает проблема, что при открытии свежесозданного xlxs файла вылезает ошибка "Cannot run the macro "RibbonOnLoad", because macroses is cleared" (что логично, макросы то из книги удалены).

Может кто сталкивался с подобной задачей и знает изящные варианты ее решения?

Спасибо.
Изменено: crjk - 03.06.2020 17:50:30
Не разделяются данные на столбцы при вставке из CSV файла.
 
Добрый день.
Есть XML-файлы, из которых парсятся данные (на c#) и записываются в csv-файл. В итоге получается 50 строк с одинаковыми разделителями.
Но при вставке данных в Excel, корректно вставляются около 35, дальше почему-то разделители не срабатывают.


Может быть кто-то сможет подсказать, с чем это связано.
Спасибо.
Изменено: crjk - 12.11.2019 13:34:02
Переменный столбец в формуле СУММЕСЛИМН.
 
Добрый день.
Допустим, есть формула:
Код
=суммеслимн(Лист2!A:A;Лист2!D:D;F1)

Я хочу, чтобы, чтобы А:А можно было заменить на что-нибудь другое, указав это в какой-нибудь ячейке на техническом листе, допустим в Z1,т.е. человек указывает в Z1 номер или адрес столбца (например, G:G) и в этой формуле меняется диапазон.
Предполагаю, что надо использовать ДВССЫЛ, но как - не пойму.
Были мысли в духе
Код
=суммеслимн(Лист2!ДВССЫЛ(Z1);Лист2!D:D,F1)
, но нет.

Буду благодарен за совет.
Изменение ссылок в формулах в книге с помощью VBA.
 
Добрый день.
Есть открытая книга, в которой в формулах есть ссылки на сторонний документ в сети, вроде такой ='\path\DATA\[wsName.xlsm]Discription'!$E$13
Есть вторая открытая книга, например 1.0.xlsm.
Я хочу заменить "\path\DATA\[wsName.xlsm]" на новый путь книги.
Пытался делать так:
Код
For Each wb In Application.Workbooks 
    If wb.name Like "1.0*" Then
        newAddress = wb.path & "\[" & wb.name & "]" 'Получаем ссылку
    End If
Next

Dim ttt As String
ttt = "\\path\DATA\[wsName.xlsm]"
With ThisWorkbook.Worksheets(1).UsedRange
    .Replace What:=ttt, _
    Replacement:=newAddress, _
    LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=True, SearchFormat:=False, ReplaceFormat:=False
End With

Но не работает. Ничего не происходит.
Пытался делать так, тоже не работает:
Код
    ThisWorkbook.ChangeLink name:= _
        "path\DATA\wsName.xlsm", NewName:=newAddress _
        , Type:=xlExcelLinks

Причем, если вместо newAddress вписать путь открытой книги - все равно не работает. А если вместо newAddress вписать путь другой книги (которая не открыта), то все отработает нормально.
Поэтому предполагаю, что это связано с тем, что данная книга открыта.

Отсюда вопрос, как можно исправить ситуацию? Или может быть вы подскажете хороший способо обновить все ссылки в формулах в книге на новый путь (новый путь - путь второй открытой(!!!) книги).
Спасибо
Изменено: crjk - 06.12.2018 15:41:23
Проблема с суммированием СУММЕСЛИ, когда критерий - слишком длинное число (20+ знаков).
 
Добрый день.
Появилась проблема суммирования с помощью суммесли/суммеслимн, когда в критерии попадает число (текстовая строка из цифр) длинной в 25 символов. Видимо, в момент расчета формулы эта строка переводится в экспоненциальный вид и суммирование происходит некорректно.
Буду благодарен советам, как обойти данную проблему.
Пример с конкретикой прилагаю.
Изменено: crjk - 28.11.2017 16:06:28
ВПР по нескольким условиям.
 
Добрый день.
Была подобная тема (http://www.planetaexcel.ru/forum/index.php?PAGE_NAME=read&FID=8&TID=30214), но к сожалению она мне не до конца помогла.
Необходимо подтянуть поле "Ключ" из другой таблицы по нескольким условиям (в примере их 2, на деле будет больше).
Есть несколько условий:
1. Нельзя делать доп столбцы;
2. Колонки, которые являются критериями идут не подряд;
3. Нельзя использовать массивы (точнее можно, я сам это реализовал, но не хочется "грузить" файл и пытаюсь найти путь проще)

Пробовал функцию =БИЗВЛЕЧЬ(H2:J5;3;A3:A6&C3:C6), но, предполагаю, что "A3:A6&C3:C6" так она не работает.
Возможно, кто-то сможет подсказать более изящный вариант, нежели массив.
Файл-пример прикрепляю.

Спасибо..
Изменено: crjk - 19.10.2017 16:02:47
Проверка уникальности связки двух столбцов.
 
Добрый день.
Пользовался поиском, нашел похожую тему (http://www.planetaexcel.ru/forum/index.php?PAGE_NAME=read&FID=8&TID=24364) , но, насколько я понимаю, она не подходит для моего случая, либо я не понял до конца ее.
Итак вопрос:
Имеется таблица, к примеру, 5 колонок.
Необходимо с помощью формул реализовать следующую проверку:
Для колонки3 может быть только одно значение в колонке 1, иначе в столбце 6 должно быть сообщение об ошибке.

Т.е. если в таблице несколько раз встречается НЕТ 222 (как на строках 3 и 7), то все хорошо.
Если же встречается связка ДА 111 и НЕТ 111, то должна сработать проверка и вывестись "Ошибка".

Т.е. по номеру в колонке 3 может быть только один вариант в колонке 1.
Хорошо:
НЕТ 123
ДА    234
НЕТ  123
ДА   555

Плохо:
НЕТ 444 - ошибка
ДА 987
ДА 444 - ошибка
НЕТ 567

Простите если плохо искал или плохо сформулировал.
Спасибо за помощь.
Изменено: crjk - 08.10.2017 21:16:30
Страницы: 1
Наверх