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

Страницы: 1 2 3 4 След.
Word - открыть PDF проигнорировав диалоговое окно
 
Коллеги, привет!
Есть ли идеи как проигнорировать диалоговое окно при открытии PDF?


Пробовал так, но не помогло:
Код
ConfirmConversions = False
Visible = True


Код
Sub ConvertRangeToPDF_WordEngin2()
    
    Dim rng As Range
    Dim cell As Range
    Dim filesList As New Collection
    Dim i As Long
    Dim outputPath As String
    Dim wdApp As Object, wdDoc As Object, wdSel As Object
    Dim wasOpen As Boolean
    Dim fPath As String
    Dim fileExt As String
    
    ' ---- 1. Чтение путей из диапазона E7:E18 ----
    On Error Resume Next
    Set rng = ThisWorkbook.ActiveSheet.Range("E7:E18")
    On Error GoTo 0
    
    If rng Is Nothing Then
        MsgBox "Не удалось получить диапазон E7:E18", vbExclamation
        Exit Sub
    End If
    
    For Each cell In rng
        fPath = Trim(cell.Value)
        If fPath <> "" Then
            If Dir(fPath) <> "" Then
                filesList.Add fPath
            Else
                Debug.Print "Файл не найден: " & fPath
            End If
        End If
    Next cell
    
    If filesList.Count = 0 Then
        MsgBox "Нет доступных файлов в диапазоне E7:E18!", vbExclamation
        Exit Sub
    End If
    
    ' ---- 2. Настройки (только для изображений) ----
    Dim pageSize As String
    pageSize = InputBox("Выберите размер страницы для ИЗОБРАЖЕНИЙ:" & vbCrLf & vbCrLf & _
                        "1 - A4 (210 x 297 мм)" & vbCrLf & _
                        "2 - A3 (297 x 420 мм)" & vbCrLf & _
                        "3 - Letter (216 x 279 мм)" & vbCrLf & _
                        "4 - Подогнать под размер картинки" & vbCrLf & _
                        "5 - Квадрат (210 x 210 мм)", _
                        "Настройки PDF", "1")
    
    If pageSize = "" Then Exit Sub
    
    Dim orientation As String
    orientation = InputBox("Ориентация страницы для ИЗОБРАЖЕНИЙ:" & vbCrLf & vbCrLf & _
                           "1 - Книжная (портрет)" & vbCrLf & _
                           "2 - Альбомная (ландшафт)" & vbCrLf & _
                           "3 - Авто (по ориентации картинки)", _
                           "Ориентация", "3")
    
    If orientation = "" Then Exit Sub
    
    ' ---- 3. Путь сохранения ----
    outputPath = Application.GetSaveAsFilename( _
        InitialFileName:="Output.pdf", _
        FileFilter:="PDF (*.pdf), *.pdf", _
        Title:="Сохранить PDF")
    
    If outputPath = "False" Then Exit Sub
    If LCase(Right(outputPath, 4)) <> ".pdf" Then outputPath = outputPath & ".pdf"
    
    ' ---- 4. Инициализация Word ----
    Application.StatusBar = "Запуск Word..."
    On Error Resume Next
    Set wdApp = GetObject(, "Word.Application")
    wasOpen = Not (wdApp Is Nothing)
    On Error GoTo 0
    
    If wdApp Is Nothing Then
        Set wdApp = CreateObject("Word.Application")
    End If
    
    wdApp.Visible = True
    wdApp.DisplayAlerts = False
    
    Set wdDoc = wdApp.Documents.Add
    Set wdSel = wdApp.Selection
    
    ' Константы Word
    Const wdSectionBreakNextPage As Long = 3
    Const wdOrientPortrait As Long = 1
    Const wdOrientLandscape As Long = 0
    Const wdSaveFormatPDF As Long = 17
    Const wdCollapseEnd As Long = 0
    
    Dim isFirstItem As Boolean
    isFirstItem = True
    
    ' ---- 5. Обработка файлов ----
    For i = 1 To filesList.Count
        
        Application.StatusBar = "Обработка " & i & "/" & filesList.Count & "..."
        DoEvents
        
        fPath = filesList(i)
        fileExt = LCase(Right(fPath, Len(fPath) - InStrRev(fPath, ".")))
        
        ' Добавляем разрыв раздела (кроме первого элемента)
        If Not isFirstItem Then
            wdSel.InsertBreak wdSectionBreakNextPage
            wdSel.Collapse wdCollapseEnd
        End If
        isFirstItem = False
        
        ' ---- Обработка PDF ----
        If fileExt = "pdf" Then
            On Error Resume Next
            ' Используем InsertFile - вставляет содержимое напрямую
            wdSel.InsertFile Filename:=fPath
            
            If Err.Number <> 0 Then
                Debug.Print "Не удалось вставить PDF: " & fPath
                Err.Clear
            End If
            On Error GoTo 0
            
            ' Переходим в конец вставленного содержимого
            wdSel.Collapse wdCollapseEnd
        
        ' ---- Обработка Изображений ----
        ElseIf fileExt = "jpg" Or fileExt = "jpeg" Or fileExt = "png" Or _
               fileExt = "bmp" Or fileExt = "gif" Or fileExt = "tif" Or fileExt = "tiff" Then
            
            Dim inlinePic As Object
            Set inlinePic = wdSel.InlineShapes.AddPicture(Filename:=fPath, LinkToFile:=False, SaveWithDocument:=True)
            
            Dim imgW As Single, imgH As Single
            imgW = inlinePic.Width
            imgH = inlinePic.Height
            
            With wdSel.PageSetup
                .TopMargin = 0
                .BottomMargin = 0
                .LeftMargin = 0
                .RightMargin = 0
                
                ' 1. Установка размера страницы
                Select Case pageSize
                    Case "1": .PageWidth = 595.28: .PageHeight = 841.89   ' A4
                    Case "2": .PageWidth = 841.89: .PageHeight = 1190.55  ' A3
                    Case "3": .PageWidth = 612: .PageHeight = 792          ' Letter
                    Case "5": .PageWidth = 595.28: .PageHeight = 595.28    ' Квадрат
                    Case "4"
                        If imgW > 1587 Or imgH > 1587 Then
                            Dim ratio As Single
                            ratio = 1587 / IIf(imgW > imgH, imgW, imgH)
                            .PageWidth = imgW * ratio
                            .PageHeight = imgH * ratio
                            inlinePic.Width = .PageWidth
                            inlinePic.Height = .PageHeight
                        Else
                            .PageWidth = imgW
                            .PageHeight = imgH
                        End If
                    Case Else: .PageWidth = 595.28: .PageHeight = 841.89
                End Select
                
                ' 2. Установка ориентации
                If pageSize = "4" Then
                    If .PageWidth > .PageHeight Then .orientation = wdOrientLandscape
                    If .PageHeight > .PageWidth Then .orientation = wdOrientPortrait
                Else
                    If orientation = "3" Then ' Авто
                        If imgW > imgH Then
                            .orientation = wdOrientLandscape
                        Else
                            .orientation = wdOrientPortrait
                        End If
                    ElseIf orientation = "2" Then ' Альбомная
                        .orientation = wdOrientLandscape
                    Else ' Книжная
                        .orientation = wdOrientPortrait
                    End If
                End If
            End With
            
            ' 3. Масштабирование картинки
            If pageSize <> "4" Then
                Dim availW As Single, availH As Single
                availW = wdSel.PageSetup.PageWidth - wdSel.PageSetup.LeftMargin - wdSel.PageSetup.RightMargin
                availH = wdSel.PageSetup.PageHeight - wdSel.PageSetup.TopMargin - wdSel.PageSetup.BottomMargin
                
                Dim scX As Single, scY As Single, sc As Single
                inlinePic.LockAspectRatio = False
                scX = availW / imgW
                scY = availH / imgH
                sc = IIf(scX < scY, scX, scY)
                
                inlinePic.LockAspectRatio = True
                inlinePic.Width = imgW * sc
                inlinePic.Height = imgH * sc
                
                wdSel.ParagraphFormat.Alignment = 1 ' Центр
            Else
                wdSel.ParagraphFormat.Alignment = 1
            End If
            
            wdSel.ParagraphFormat.SpaceBefore = 0
            wdSel.ParagraphFormat.SpaceAfter = 0
        End If
        
    Next i
    
    ' ---- 6. Экспорт в PDF ----
    Application.StatusBar = "Сохранение PDF..."
    wdDoc.SaveAs2 Filename:=outputPath, FileFormat:=wdSaveFormatPDF
    
    wdDoc.Close SaveChanges:=False
    If Not wasOpen Then wdApp.Quit
    
    Application.StatusBar = False
    MsgBox "PDF успешно создан!" & vbCrLf & _
           "Файл: " & outputPath & vbCrLf & _
           "Обработано файлов: " & filesList.Count, vbInformation

End Sub

Изменено: evgeniygeo - 30.03.2026 13:03:03
пример RFA/RFP/ТЗ на разработку Power BI отчетов
 
Коллеги, здравствуйте!
Кто-то может поделиться примером RFA/RFP/ТЗ на разработку Power BI отчетов? Пытаюсь найти, чтобы дать в качестве примера бизнесу
WEB API или другие способы подключения к PDF Creator 24
 
Привет!
Появилась задачка в конвертации картинок в PDF и объединение их в один файл. Все это необходимо запускать из Excel.

Из разрешённого ПО есть https://www.pdf24.org/ru/. Но читая не могу найти информацию по API. Может кто-то заморачивался подобным?

Сейчас не объединяя подряд печатаю файлы (PDF, JPG, PNG) с помощью горячих клавиш и VBA.
Приемы по использованию ИИ
 
Всем привет!
Может кто-то знает ресурсы похожие на местный раздел "Приемы" или что-то вроде "Для тех кто в танке" в телеге, но только по использованию ИИ?
Уверен, что кто-то должен постить что-то интересное  :) (примеры промптов, использование моделей в различных задачах и т.д.)
Изменено: evgeniygeo - 18.08.2025 12:09:45
Ускорить обновление запроса PQ в Power BI
 
Всем привет!
Есть запрос, который обновляется ~20мин. Его необходимо ускорить.
Цена -1000р

Подробно можно обсудить в телеге.

Код
let
    Source = SharePoint.Tables("https://sup.com/", [ApiVersion = 15]),
    MainList = Source{[Id="8c"]}[Items],
    #"Удаленные столбцы2" = Table.RemoveColumns(MainList,{"Versions"}),
    // --- Один раз загружаем справочник ---
    SafetyQuestions = MyTasksIncidentsQuestions,
    KeysList = List.Buffer(Table.Distinct(SafetyQuestions, {"Key"})[Key]),

    // Парсим JSON и обрабатываем
    ExpandJSON = Table.AddColumn(#"Удаленные столбцы2", "ParsedQuestions", each try Json.Document([Questions]) otherwise null),
    ConvertToTable = Table.ExpandRecordColumn(ExpandJSON, "ParsedQuestions", KeysList),
    #"Дублированный столбец" = Table.DuplicateColumn(ConvertToTable, "MIncEq", "MIncEq2"),
    #"Дублированный столбец1" = Table.DuplicateColumn(#"Дублированный столбец", "MNEq", "MNEq2"),
    // Раскрываем списки и записи
    #"Развернуть MIncEq2" = Table.ExpandListColumn(#"Дублированный столбец1", "MIncEq2"),
    #"Развернуть MNEq2" = Table.ExpandListColumn(#"Развернуть MIncEq2", "MNEq2"),
    #"Развернутый элемент MIncEq2" = Table.ExpandRecordColumn(#"Развернуть MNEq2", "MIncEq2", {"SAP_MESSAGE", "SAP"}, {"SAP_MESSAGE (Инцидент)", "SAP (Инцидент)"}),
    #"Развернутый элемент MNEq2" = Table.ExpandRecordColumn(#"Развернутый элемент MIncEq2", "MNEq2", {"SAP_MESSAGE", "SAP"}, {"SAP_MESSAGE (Несоответствие)", "SAP (Несоответствие)"}),
    #"Развернутый элемент SAP MIncEq2" = Table.ExpandRecordColumn(#"Развернутый элемент MNEq2", "SAP (Инцидент)", {"SAP", "Title", "Manufacturer", "Model", "TypeEquipment"}, {"SAP (Инцидент)", "Название оборудования (Инцидент)", "Manufacturer (Инцидент)", "Model (Инцидент)", "TypeEquipment (Инцидент)"}),
    #"Развернутый элемент SAP MNEq2" = Table.ExpandRecordColumn(#"Развернутый элемент SAP MIncEq2", "SAP (Несоответствие)", {"SAP", "Title", "Manufacturer", "Model", "TypeEquipment"}, {"SAP (Несоответствие)", "Название оборудования (Несоответствие)", "Manufacturer (Несоответствие)", "Model (Несоответствие)", "TypeEquipment (Несоответствие)"}),

    // Функция извлечения 'name'
    GetValue = (value as any) as any =>
        if Value.Is(value, Record.Type) and Record.HasFields(value, {"name"}) then value[name]
        else if Value.Is(value, List.Type) then
            Text.Combine(
                List.Transform(
                    List.Select(value, each Value.Is(_, Record.Type) and Record.HasFields(_, {"name"})),
                    each _[name]
                ),
                "#(lf)"
            )
        else if value = null then ""
        else Text.From(value, "ru-RU"),

    ExtractNames = Table.TransformColumns(#"Развернутый элемент SAP MNEq2", List.Transform(KeysList, each {_, GetValue, Text.Type})),
    #"Замененное значение" = Table.ReplaceValue(ExtractNames,null," ",Replacer.ReplaceValue,{"SAP_MESSAGE (Инцидент)", "SAP (Инцидент)", "Название оборудования (Инцидент)", "Manufacturer (Инцидент)", "Model (Инцидент)", "TypeEquipment (Инцидент)", "SAP_MESSAGE (Несоответствие)", "SAP (Несоответствие)", "Название оборудования (Несоответствие)", "Manufacturer (Несоответствие)", "Model (Несоответствие)", "TypeEquipment (Несоответствие)"}),

    // Группируем вопросы по Key1 + Title
    FilteredKeys = Table.SelectRows(SafetyQuestions, each List.Contains(KeysList, [Key])),
    GroupedByTitle = Table.Group(FilteredKeys, {"Key1", "Title"}, {
        {"ColumnsToMerge", each List.Transform(Table.Column(_, "Key"), Text.From)}
    }),

    AddMergedColumns = List.Accumulate(
        Table.ToRows(GroupedByTitle),
        #"Замененное значение",
        (table, group) =>
            let
                Title = group{1},
                Columns = group{2},
                ExistingColumns = List.Intersect({Columns, Table.ColumnNames(table)}),
                AddColumn = Table.AddColumn(table, Title,
                    each Text.Combine(
                        List.Transform(ExistingColumns, (col) => 
                            Text.From(Record.Field(_, col), "ru-RU")
                        ), 
                        "#(lf)"
                    ),
                    Text.Type
                ),
                RemoveOld = if List.Count(ExistingColumns) > 0 then Table.RemoveColumns(AddColumn, ExistingColumns) else AddColumn
            in
                RemoveOld
    ),

MergeValues = (column as list) as text =>
    let
        CleanedList = List.Transform(List.RemoveNulls(column), Text.From),
        Result = Text.Combine(CleanedList, "#(lf)")
    in
        Result,

    // Список столбцов для объединения
    columnsToMerge = {
        "SAP_MESSAGE (Несоответствие)",
        "SAP (Несоответствие)",
        "Название оборудования (Несоответствие)",
        "Manufacturer (Несоответствие)",
        "Model (Несоответствие)",
        "TypeEquipment (Несоответствие)",
        
        "SAP_MESSAGE (Инцидент)",
        "SAP (Инцидент)",
        "Название оборудования (Инцидент)",
        "Manufacturer (Инцидент)",
        "Model (Инцидент)",
        "TypeEquipment (Инцидент)"
    },

    // Группируем по Id и объединяем значения
    GroupByIncident = Table.Group(
        AddMergedColumns,
        {"Id"},
        {
            {"AllData", each Table.FirstN(_, 1), let schema = Table.Schema(AddMergedColumns) in Table.Type}
        } & List.Transform(columnsToMerge, (col) => {col, each MergeValues(Table.Column(_, col)), Text.Type})
    ),
    #"Удаленные столбцы1" = Table.RemoveColumns(GroupByIncident,{"Id"}),

// Список полей, которые НЕ нужно раскрывать из AllData
columnsToSkip = {
    "SAP_MESSAGE (Несоответствие)",
    "SAP (Несоответствие)",
    "Название оборудования (Несоответствие)",
    "Manufacturer (Несоответствие)",
    "Model (Несоответствие)",
    "TypeEquipment (Несоответствие)",
    
    "SAP_MESSAGE (Инцидент)",
    "SAP (Инцидент)",
    "Название оборудования (Инцидент)",
    "Manufacturer (Инцидент)",
    "Model (Инцидент)",
    "TypeEquipment (Инцидент)"
},

// Получаем список всех колонок из AddMergedColumns
allColumns = Table.ColumnNames(AddMergedColumns),

// Формируем список тех, что будем раскрывать из AllData
columnsToExpandFromAllData = List.Sort(List.Difference(allColumns, columnsToSkip)),

// Раскрываем только нужные поля из AllData
#"Развернутый элемент AllData" = Table.ExpandTableColumn(#"Удаленные столбцы1", "AllData", columnsToExpandFromAllData),

    #"Добавлен пользовательский объект" = Table.AddColumn(#"Развернутый элемент AllData", "LocationDepartmentRegion", each Text.From([LocationId]) & "/" & Text.From([DepartmentId]) & "/" & Text.From([RegionId])),
    #"Условный столбец добавлен" = Table.AddColumn(#"Добавлен пользовательский объект", "HashTag", each if Text.StartsWith([Title], "Несоответствие") then "#несоответствие_техобслуживание_" & Text.From([Id]) else [Id]),
    #"Измененный тип" = Table.TransformColumnTypes(#"Условный столбец добавлен",{{"DateIncidents", type date}, {"DateIncidents2", type date}}),
    #"Объединенные запросы" = Table.NestedJoin(#"Измененный тип", {"Id"}, MyTasks5Way, {"IncidentId"}, "MyTasks5Way", JoinKind.LeftOuter),
    #"Развернутый элемент MyTasks5Way" = Table.ExpandTableColumn(#"Объединенные запросы", "MyTasks5Way", {"Id", "Type5Way", "Корневые причины"}, {"Id5Why", "Type5Way", "Корневые причины"})
in
    #"Развернутый элемент MyTasks5Way"
Изменено: evgeniygeo - 11.08.2025 19:07:44
Подключение iqy файла в Power BI
 
Коллеги, всем привет!
У меня есть портал на базе Sharepoint. Для анализа данных использую Power BI подключая к спискам, но проблема в ограничении 255 символов в ячейке.
Есть вариант использовать REST API, но есть нереальные сложности с одобрением, поэтому рассматриваю альтернативы.
Как идея, Sharepoint дает выгружать из списка iqy файл, который если открыть, то ты получаешь обновляемую таблицу из необходимого мне списка и без ограничений по символам (не учитывая ограничения самого excel).
Можно ли как-то получать эти же данные подключаясь напрямую к iqy файлу, а не к эксельке?
Изменено: evgeniygeo - 25.06.2025 21:59:31
Аналог MS Project в Excel
 
Всем привет!
Гуглю, но пока ничего стоящего не могу найти. Посоветуйте пожалуйста аналог MS Project в Excel
Сервис для создания Userform
 
Всем привет!
Подскажите пожалуйста, кто-то встречал какую-нибудь ИИ, которая может сама отрисовать Userform?
Сейчас максимум могу написать в чат gpt запрос на создание Userform и он будет создавать ее каждый раз кодом, что сами понимаете, имеет кучу проблем.
Блок схемы на проблемы в "помощнике"
 
Всем привет!
Я работаю на производстве и часто случаются какие-то проблемы. Для многих из них придумали планы реагирования в виде блок-схем. Кто-то рисует в Excel, а кто-то в Visio. Пример прикладываю. Таких десятки штук.
Я бы хотел сделать некого "помощника", в excel или в каком-то другом инструменте, чтобы пользователь выбирал проблему и отвечая на вопросы "да" или "нет" доходил до логического конца согласно блок схем.
Сейчас у меня 365 офис.

Может быть есть что-то интересное и готовое? Пусть даже платное
Изменено: evgeniygeo - 29.08.2024 12:45:59
PQ Одинаковые строки сделать заголовками столбцов
 
Очень глупый вопрос, но видимо пятница дает о себе знать.
Подскажите пожалуйста, как сделать из одинаковых значений строк заголовки, чтобы развернуть часть таблицы.

Пример с желаемым результатом во вложении, т.к. думаю, что с описанием у меня тоже - пятница....
Изменено: evgeniygeo - 02.08.2024 16:37:05
Календарь аудитов
 
Всем привет!
На днях прилетела задача найти решение для удобного ведения календаря аудитов в компании.
Ранее пробовали вести все это в excel, но оказалось не очень удобно из-за большого количества пользователей и рук его создателя)))

Используем 365 офис, поэтому решил посмотреть в стороны фич для Teams'a. Нашел самый простой вариант - создать список и к нему календарь, но оказалось, что руководству нужен овервью в календаре по кварталу или хотя бы году, а максимальный вариант в тимсе - месяц.

Возможно, кто-то находил другие бесплатные варианты?
VBA Word - Проверить выходят ли за границы картинки и таблицы
 
Всем привет!
Недавно я собирал большое количество документов в Word с сайта с помощью скрипта. К сожалению, некоторые картинки и таблицы вышли за границы документов. Я бы хотел проверить все документы на данный баг, а исправить уже вручную.
Пример файла с картинкой, которая выходит за границы выложил на файлообменник из-за большого веса:
https://transfiles.ru/08dwe
Вариант, который предложил GPT, но работает очень странно:
Код
Изменено: evgeniygeo - 03.07.2024 08:49:21
Предложение по послаблению правил при создании первых 3 тем
 
Всем привет!
Наверняка что-то подобное уже поднималось, но все же. Мое предложение - не драконить новых участников форума за плохое название темы или описание, отсутствие файла примера и т.д. хотя бы для первых 3 тем.
В большей части, это касается модераторов, но и других участников тоже. Мне кажется, это поможет слегка популяризировать форум, т.к. после закрытия первых двух тем, не очень хочется даже пытаться создавать новую.
Изменено: evgeniygeo - 18.04.2024 08:01:12
Информация о защищенности листов книг с помощью PQ
 
Всем привет!
Возник вопрос - можно ли в PQ получить информацию о блокировке каждого листа из книг?
Понимаю, как это сделать через VBA или различные надстройки, но интерес именно к PQ.
Открыть файл по ссылке в Sharepoint, а не скачивать его
 
Всем привет!
У меня есть реестр в excel файлов в папке Teams, я создаю ссылки собирая данные из ячеек:
Код
ГИПЕРССЫЛКА("https://sharepoint.com/:w:/r/teams/msteams_555/Shared Documents/General/Миграция/Клин/Документы/"&B4&"/"&B4&".doc";B4&".doc")

Но при открытии данной ссылки, документ скачивается, а хотелось бы открывать его в браузере. Это возможно?
Изменено: evgeniygeo - 26.03.2024 17:07:12
Workbook_Open() в Excel Online
 
Всем привет!
Есть ли возможность написать в excel online код, который будет выводить сообщение или форму при открытии файла?
Код
Private Sub Workbook_Open()
MsgBox "sdsdaDAS"
End Sub
Power Query Данные из несколько десятков файлов
 
Всем привет!
Не так часто работаю с Power Query, но в этот раз появилась необходимость. И я собрал данные из 80+ файлов с помощью запроса ниже. Но сразу встрял на тормоза в обновлении запроса. Подскажите пожалуйста, как можно ускорить?
Код
let
    Источник = SharePoint.Files("https://sharepoint.com/teams/EastSupplyTeam", [ApiVersion = 15]),
    #"Строки с примененным фильтром" = Table.SelectRows(Источник, each not Text.Contains([Name], "~$")),
    #"Строки с примененным фильтром1" = Table.SelectRows(#"Строки с примененным фильтром", each Text.Contains([Folder Path], "02 VPO оценка колонн")),
    #"Строки с примененным фильтром2" = Table.SelectRows(#"Строки с примененным фильтром1", each Text.Contains([Folder Path], "/2024/")),
    #"Строки с примененным фильтром3" = Table.SelectRows(#"Строки с примененным фильтром2", each not Text.Contains([Folder Path], "Солодовня")),
    #"Вставленный текст между разделителями" = Table.AddColumn(#"Строки с примененным фильтром3", "Завод", each Text.BetweenDelimiters([Folder Path], "/", "/", 8, 0), type text),
    #"Вставленный текст перед разделителем" = Table.AddColumn(#"Вставленный текст между разделителями", "Колонна", each Text.BeforeDelimiter([Name], "."), type text),
    #"Добавлен пользовательский объект" = Table.AddColumn(#"Вставленный текст перед разделителем", "Files", each Excel.Workbook([Content])),
    #"Другие удаленные столбцы" = Table.SelectColumns(#"Добавлен пользовательский объект",{"Завод", "Колонна", "Files"}),
    #"Развернутый элемент Files" = Table.ExpandTableColumn(#"Другие удаленные столбцы", "Files", {"Name", "Data", "Item", "Kind", "Hidden"}, {"Name", "Data", "Item", "Kind", "Hidden"}),
    #"Обрезанный текст" = Table.TransformColumns(#"Развернутый элемент Files",{{"Item", Text.Trim, type text}}),
    #"Строки с примененным фильтром5" = Table.SelectRows(#"Обрезанный текст", each ([Kind] = "Sheet")),
    #"Строки с примененным фильтром4" = Table.SelectRows(#"Строки с примененным фильтром5", each [Item] = Number.ToText(Excel.CurrentWorkbook(){[Name="Month"]}[Content]{0}[Месяц])),
    #"Добавлен пользовательский объект1" = Table.AddColumn(#"Строки с примененным фильтром4", "Data_new", each Table.Skip(Table.PromoteHeaders([Data]),1)),
    #"Переименованные столбцы" = Table.RenameColumns(#"Добавлен пользовательский объект1",{{"Name", "Месяц"}}),
    #"Измененный тип" = Table.TransformColumnTypes(#"Переименованные столбцы",{{"Месяц", Int64.Type}}),
    #"Другие удаленные столбцы1" = Table.SelectColumns(#"Измененный тип",{"Завод", "Колонна", "Месяц", "Data_new"}),
    #"Развернутый элемент Data_new" = Table.ExpandTableColumn(#"Другие удаленные столбцы1", "Data_new", {"KEY", "Блок", "Вопрос", "Оценка", "Рекомендации по проверке", "Комментарии", "Brewing", "Soft Drinks", "Packaging", "Technical Services", "Utilities", "Logistics", "Quality", "Environment", "Среднее по заводу", "People", "Contractors", "Safety", "ES"}, {"KEY", "Блок", "Вопрос", "Оценка", "Рекомендации по проверке", "Комментарии", "Brewing", "Soft Drinks", "Packaging", "Technical Services", "Utilities", "Logistics", "Quality", "Environment", "Среднее по заводу", "People", "Contractors", "Safety", "ES"}),
    #"Удаленные столбцы" = Table.RemoveColumns(#"Развернутый элемент Data_new",{"KEY"})
in
    #"Удаленные столбцы"
 Ссылкам на хорошие статьи также буду очень благодарен.
Изменено: evgeniygeo - 05.03.2024 06:34:58
Начали умирать все файлы excel расположенные на сервере
 
Всем привет!
С недавних пор очень большое количество файлов excel размещенных на сервере компании начали умирать. При попытке их сохранить всегда выходит ошибка:

При упорных попытках сохранить файл на рабочий стол выходит следующее:



При этом все файлы с макросами (на других пока не замечал). Файлы между собой никак не связаны. Макросы и пользователи абсолютно разные.
Пока что помогает восстановить предыдущую версию, но проблема повторяется повторно через несколько дней.
Также, запрашивал инфу у IT отдела, но с серверами ничего не делали.

Не знаю связано или нет, но недавно прилетело обновление офиса, по которому вышел небольшой баг: тема тут
Изменено: evgeniygeo - 31.01.2024 09:33:01
"Этот тип файлов не поддерживается в режиме защищенного просмотра" - появляется при открытии любого файла
 
Всем привет!
Прилетело обновление офиса и стала появляться ошибка при каждом открытии любого файла. Далее нажимаю "ок" и файлы открываются без проблем.
В настройках все также. Возможно, кто-то встречался с данным недочетом.


Изменено: evgeniygeo - 30.01.2024 07:06:39
Power BI План факт
 
Всем привет!
Видимо я сильно туплю, т.к. не могу понять, как сделать подобное в Power BI.
Подскажите пожалуйста, есть ли подобная возможность?
Идеи использования ИИ на производстве
 
Всем привет!
Мне прилетела задача о необходимости помечтать о том, как мы на производстве (логистика, качество, охрана труда, экология, техобслуживание, отчетность, упрощение работы с SAP, управление проектами, поиск экономий, увеличение производительности и т.д.) могли бы использовать ИИ (Иску́сственный интелле́кт).

Как пример, то, что пока родилось в голове:
1) на производстве в случае появления проблемы, поломки и т.д. операторы проводят анализ 5Почему для выявления корневой причины. Зачастую проблемы повторяются между предприятиями, т.к. оборудование схоже и было бы круто если бы ИИ мог помочь в поиске корневой причины, составлении действий, чтобы эта проблема больше не возникала и т.д. на основе исторических данных и информации из интернета.
2) ИИ камеры, которые будут следить за безопасным поведением сотрудников и оповещать руководителей в случае отклонений

Возможно, у кого-то уже на работе что-то реализовано.
Всем спасибо за участие и ваши мечты  ;)

P.S. даже самые нереальные мечты принимаются  :D
Изменено: evgeniygeo - 29.09.2023 08:22:56
Количество слов/символов в Word по списку документов в Excel
 
Всем привет!
У меня есть Excel файл со списком полных путей к документам Word в столбце. Для анализа мне необходимо понять количество символов или слов в каждом документе.
Я попытался реализовать это с помощью ComputeStatistics, но получаю ошибку. Возможно есть другие варианты?
Код
Sub qwerty()
    Dim WD
    lLastRow = Cells(Rows.Count, 1).End(xlUp).Row
    For n = 1 To lLastRow
        Set WD = CreateObject("Word.Application")
        WD.Visible = True
        WD.Application.WindowState = 1
        WD.Documents.Open Filename:=Range("A" & n).Value
        WD.Activate
        MsgBox WD.Range.ComputeStatistics(Statistic:=wdStatisticWords, IncludeFootnotesAndEndnotes:=True)
        Range("B" & n) = a
    Next
End Sub

пробовал так, но тоже ошибка
Код
WD.Words.Count  
Изменено: evgeniygeo - 13.09.2023 10:17:47
ELMA 365 - Интересует мнение народа
 
Всем привет!
Интересует мнение по ELMA 365 и возможно, кто-то сталкивался?
Сейчас в основном работаем с SharePoint и Power Apps, с использованием потоков Power Automate, но поступило предложение реализации (перенос бумажной рутины менеджмента в электронный вид) на ELMA 365.
Интересно следующее:
-интеграция с продуктами Microsoft 365 (Word, Excel, Outlook, Teams и т.д.). Слышал, что лучше работает с Р7.
-на сколько сложна самостоятельная реализация небольших вещей
-на текущий момент, большое кол-во вещей администрируется кей юзерами без опыта программирования, возможно ли это с ней
Изменено: evgeniygeo - 11.09.2023 17:29:19
Отправить письмо через Outlook WEB
 
Всем привет!
Ранее поднимал тему, в которой Дмитрий(The_Prist) Щербаков помог разобраться.
Но вот незадача, оказалось, что у большого количества сотрудников лицензия F3 и нет Outlook Desktop, и они пользуются браузерной версией, используя Edge или Chrome. Возможно, кто-то сталкивался с подобным и есть варианты как отправить сообщение из Outlook Web?
Изменено: evgeniygeo - 05.09.2023 13:42:42
Проблема со вставкой таблицы с форматированием в письмо Outlook
 
Всем привет!
Много лет пользовался кодом из статьи Дмитрий(The_Prist) Щербаков: https://www.excel-vba.ru/chto-umeet-excel/vstavit-v-pismo-outlook-tablicu-excel-s-formatirovaniem/
Но на днях все русские слова в таблице начали превращаться в крокозябры при вставке в письмо.
Язык в настройках windows - русский + проблема на всех рабочих компах, где проверял.

Есть идеи?
Изменено: evgeniygeo - 24.08.2023 12:16:49
Экспорт из Visio в Excel с иерархией
 
Всем привет!
На просторах интернета набрел на экспорт из VISIO в EXCEL.
Но, к сожалению, там очень странный принцип дерева. Подскажите пожалуйста, можно ли сделать дерево для дальнейшей обработки в excel?)))

ссылка на visio документ

Код
Option Explicit

Dim i As Integer


Public Sub ExportShapeDatasToExcel()

Dim ex As Excel.Application
Dim exDoc As Excel.Workbook
Dim exSheet As Excel.Worksheet

    Set ex = New Excel.Application
    Set exDoc = ex.Workbooks.Add
    Set exSheet = exDoc.Worksheets(1)
    
    i = 1
    
Dim shp As Visio.Shape
    
    For Each shp In Visio.Application.ActivePage.Shapes
        FillShpData exSheet, shp, 1
    Next shp
    
    ex.Visible = True
    
End Sub


Private Sub FillShpData(ByRef exSheet As Excel.Worksheet, ByRef shp As Visio.Shape, ByVal colNum As Integer)
'    exSheet.Range("A" & i).Value = shp.Name
    exSheet.Cells(i, colNum).Value = shp.Text
    i = i + 1
    
    If shp.Shapes.Count > 0 Then
        For Each shp In shp.Shapes
            FillShpData exSheet, shp, colNum + 1
        Next shp
    End If
    
    
End Sub
Изменено: evgeniygeo - 17.07.2023 11:52:32
Блок схемы для решения типичных проблем
 
Всем привет!
Основная суть: бывает, что случаются типичные проблемы с оборудованием. Для их разрешения делают карту реагирования в виде банальной блок схемы:
"Что сломалось"
Вопрос1 ->
Да - вопрос1.1
Нет - вопрос1.2
и так до решения в зависимости от ответов

Сейчас рисуют в экселе отдельный файл для каждой проблемы и очень тяжело их найти.
Из вариантов в голове чат бот, но с удобным наполнением его данными, т.к. это должны делать люди без опыта программирования.
Но возможно есть что-то другое. Поделитесь опытом

Установлен 365 офис.
Изменено: evgeniygeo - 13.07.2023 14:23:12
VBA Отследить вставку изображения на лист
 
Добрый день!
Мой вопрос без конкретной задачи. Просто стало интересно, можно ли отследить вставку изображения на лист средствами VBA и если да, то как?

Worksheet_SelectionChange не справляется(((
Изменено: evgeniygeo - 05.04.2023 07:33:51
Преобразование выгрузки из 1С в плоскую
 
Всем привет!
Пытаюсь использовать код господина Msi2102 из этой темы для преобразования выгрузки из 1с в плоскую таблицу, и в 365 офисе все ок, но коллеги запускали в 2013 и 2016 и он зависает на цикле 14-16 строчки

Код
Sub Макрос1()
Dim arr As Variant, arr1 As Variant, n As Long, m As Integer
arr1 = Selection.Columns("A:A")
ReDim arr(1 To UBound(arr1), 1 To 1)
Set Dict = CreateObject("System.Collections.ArrayList")
For Each r In Selection.Rows
    n = n + 1
    If Not Dict.contains(r.OutlineLevel) Then
        Dict.Add r.OutlineLevel
        If Dict.Count > 1 Then ReDim Preserve arr(1 To UBound(arr), 1 To UBound(arr, 2) + 1)
    End If
    arr(n, Dict.LastIndexOf(r.OutlineLevel) + 1) = arr1(n, 1)
    If Dict.LastIndexOf(r.OutlineLevel) + 1 > 1 And n > 1 Then
        For m = Dict.LastIndexOf(r.OutlineLevel) To 1 Step -1
            arr(n, m) = arr(n - 1, m)
        Next
    End If
Next
Columns(1).Resize(, Dict.Count).Insert Shift:=xlToRight
Selection(1).Resize(UBound(arr), UBound(arr, 2)).NumberFormat = "@"
Selection(1).Resize(UBound(arr), UBound(arr, 2)) = arr
End Sub
Изменено: evgeniygeo - 18.11.2022 20:36:24
Пропала тема
 
Всем привет!
Сегодня утром получил уведомление в почте о том, что был добавлен новый комментарий в теме, на которую я подписан, но при переходе по ссылке пишет, что данная тема не найдена.
Для меня это не так важно, но возможно, проблема не только с этой темой, а я очень люблю данный форум  ;)
http://planetaexcel.ru/forum/index.php?PAGE_NAME=message&FID=1&TID=151426&MID=1210401
Страницы: 1 2 3 4 След.
Наверх