Домашняя страница Undo Do Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Записи участника (krosav4ig) - Мир MS Excel

Результаты поиска
krosav4ig Дата: Пятница, 20.01.2017, 18:17 | Сообщение № 941 | Тема: Вывод всех возможных пересекающихся значений из 2 столбцов
Группа: Друзья
Ранг: Старожил
Сообщений: 2348
Репутация: 997 ±
Замечаний: 0% ±

Excel 2007,2010,2013
Перестановки без повторов подойдут? Если да, то как-то так можно
[vba]
Код
Function Комбинации(ParamArray ParArr() As Variant) As Variant
    Application.Volatile False
    Dim ArrA(), ArrB(), ArrC(), CountArr&, x&, i&, j&
    CountArr = UBound(ParArr): ReDim ArrB(CountArr), ArrC(CountArr)
    For i = 0 To CountArr
        ArrC(i) = ParArr(i).Count: ArrB(i) = ArrC(i)
        If i > 0 Then ArrB(i) = ArrB(i - 1) * ArrB(i)
    Next
    ReDim ArrA(ArrB(CountArr) - 1, CountArr)
    For i = 0 To ArrB(CountArr) - 1
        For j = 0 To CountArr
            x = 1: If j > 0 Then x = ArrB(j - 1)
            ArrA(i, j) = ParArr(j).Cells(Int(i / x) Mod ArrC(j) + 1)
        Next
    Next
    Комбинации= ArrA()
End Function
[/vba]
К сообщению приложен файл: combinations.xlsm (18.0 Kb)


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460

Сообщение отредактировал krosav4ig - Пятница, 20.01.2017, 18:23
 
Ответить
СообщениеПерестановки без повторов подойдут? Если да, то как-то так можно
[vba]
Код
Function Комбинации(ParamArray ParArr() As Variant) As Variant
    Application.Volatile False
    Dim ArrA(), ArrB(), ArrC(), CountArr&, x&, i&, j&
    CountArr = UBound(ParArr): ReDim ArrB(CountArr), ArrC(CountArr)
    For i = 0 To CountArr
        ArrC(i) = ParArr(i).Count: ArrB(i) = ArrC(i)
        If i > 0 Then ArrB(i) = ArrB(i - 1) * ArrB(i)
    Next
    ReDim ArrA(ArrB(CountArr) - 1, CountArr)
    For i = 0 To ArrB(CountArr) - 1
        For j = 0 To CountArr
            x = 1: If j > 0 Then x = ArrB(j - 1)
            ArrA(i, j) = ParArr(j).Cells(Int(i / x) Mod ArrC(j) + 1)
        Next
    Next
    Комбинации= ArrA()
End Function
[/vba]

Автор - krosav4ig
Дата добавления - 20.01.2017 в 18:17
krosav4ig Дата: Вторник, 17.01.2017, 17:52 | Сообщение № 942 | Тема: Формула на поиск совпадений списка слов в списке предложений
Группа: Друзья
Ранг: Старожил
Сообщений: 2348
Репутация: 997 ±
Замечаний: 0% ±

Excel 2007,2010,2013
Здравствуйте
так нужно?
Код
=ЕСЛИОШИБКА(ИНДЕКС(Вокабуляр!$B:$B;НАИМЕНЬШИЙ(ЕСЛИ(СЧЁТЕСЛИ(Текст!$A1;"*"&Вокабуляр!$A$2:$A$20&"*");СТРОКА(Вокабуляр!$A$2:$A$20));СТОЛБЕЦ(Текст!A1)));"")
К сообщению приложен файл: 9645056.xls (45.0 Kb)


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460
 
Ответить
СообщениеЗдравствуйте
так нужно?
Код
=ЕСЛИОШИБКА(ИНДЕКС(Вокабуляр!$B:$B;НАИМЕНЬШИЙ(ЕСЛИ(СЧЁТЕСЛИ(Текст!$A1;"*"&Вокабуляр!$A$2:$A$20&"*");СТРОКА(Вокабуляр!$A$2:$A$20));СТОЛБЕЦ(Текст!A1)));"")

Автор - krosav4ig
Дата добавления - 17.01.2017 в 17:52
krosav4ig Дата: Воскресенье, 15.01.2017, 05:40 | Сообщение № 943 | Тема: Excel неправильно считает формулу
Группа: Друзья
Ранг: Старожил
Сообщений: 2348
Репутация: 997 ±
Замечаний: 0% ±

Excel 2007,2010,2013
Здравствуйте
в чем загвоздка и как ее устранить?
вот тут почитайте


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460
 
Ответить
СообщениеЗдравствуйте
в чем загвоздка и как ее устранить?
вот тут почитайте

Автор - krosav4ig
Дата добавления - 15.01.2017 в 05:40
krosav4ig Дата: Суббота, 14.01.2017, 01:39 | Сообщение № 944 | Тема: Вагоны поезда Загадка.
Группа: Друзья
Ранг: Старожил
Сообщений: 2348
Репутация: 997 ±
Замечаний: 0% ±

Excel 2007,2010,2013
И уж больно похоже на метку...
неа, это машинист запомнил, был ли включен свет в вагоне, с которого начал обход
А с файлом рабочим?
А не было его, на коленке писал. Сейчас сделал, но код не оптимизировал.
К сообщению приложен файл: 3670703.xlsm (47.5 Kb)


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460

Сообщение отредактировал krosav4ig - Суббота, 14.01.2017, 01:44
 
Ответить
Сообщение
И уж больно похоже на метку...
неа, это машинист запомнил, был ли включен свет в вагоне, с которого начал обход
А с файлом рабочим?
А не было его, на коленке писал. Сейчас сделал, но код не оптимизировал.

Автор - krosav4ig
Дата добавления - 14.01.2017 в 01:39
krosav4ig Дата: Вторник, 10.01.2017, 17:43 | Сообщение № 945 | Тема: Вагоны поезда Загадка.
Группа: Друзья
Ранг: Старожил
Сообщений: 2348
Репутация: 997 ±
Замечаний: 0% ±

Excel 2007,2010,2013


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460

Сообщение отредактировал krosav4ig - Вторник, 10.01.2017, 17:58
 
Ответить
Сообщение

Автор - krosav4ig
Дата добавления - 10.01.2017 в 17:43
krosav4ig Дата: Воскресенье, 08.01.2017, 22:17 | Сообщение № 946 | Тема: Формирование подложки - из картинки на листе.
Группа: Друзья
Ранг: Старожил
Сообщений: 2348
Репутация: 997 ±
Замечаний: 0% ±

Excel 2007,2010,2013
You must select a picture

ну дык чего не понятно-то?
Ведь черным по-англиццки написано "Вы должны выделить изображение"
Выделил картинку, запустил макрос, получил выделенную картинку в подложке


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460

Сообщение отредактировал krosav4ig - Воскресенье, 08.01.2017, 22:19
 
Ответить
Сообщение
You must select a picture

ну дык чего не понятно-то?
Ведь черным по-англиццки написано "Вы должны выделить изображение"
Выделил картинку, запустил макрос, получил выделенную картинку в подложке

Автор - krosav4ig
Дата добавления - 08.01.2017 в 22:17
krosav4ig Дата: Воскресенье, 08.01.2017, 18:25 | Сообщение № 947 | Тема: Формирование подложки - из картинки на листе.
Группа: Друзья
Ранг: Старожил
Сообщений: 2348
Репутация: 997 ±
Замечаний: 0% ±

Excel 2007,2010,2013
модуль modPastePicture спёр тут

[vba]
Код
Sub Подложка()
    Dim sFile$: sFile = Environ("tmp") & "\tmp.bmp"
    Лист3.[Рисунок 1].CopyPicture xlScreen, xlBitmap
    DoEvents: SavePicture PastePicture(xlBitmap), sFile
    DoEvents: Лист3.SetBackgroundPicture sFile
    DoEvents: Kill sFile
End Sub
[/vba]
К сообщению приложен файл: 5435345-.xlsm (98.9 Kb)


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460

Сообщение отредактировал krosav4ig - Воскресенье, 08.01.2017, 18:25
 
Ответить
Сообщениемодуль modPastePicture спёр тут

[vba]
Код
Sub Подложка()
    Dim sFile$: sFile = Environ("tmp") & "\tmp.bmp"
    Лист3.[Рисунок 1].CopyPicture xlScreen, xlBitmap
    DoEvents: SavePicture PastePicture(xlBitmap), sFile
    DoEvents: Лист3.SetBackgroundPicture sFile
    DoEvents: Kill sFile
End Sub
[/vba]

Автор - krosav4ig
Дата добавления - 08.01.2017 в 18:25
krosav4ig Дата: Суббота, 07.01.2017, 06:04 | Сообщение № 948 | Тема: Локализация и как с ней бороться
Группа: Друзья
Ранг: Старожил
Сообщений: 2348
Репутация: 997 ±
Замечаний: 0% ±

Excel 2007,2010,2013
как вариант, можно в диспетчер имен воткнуть
Код
Г    =ИНДЕКС(ПОЛУЧИТЬ.РАБОЧЕЕ.ПРОСТРАНСТВО(37);19)
Код
Д    =ИНДЕКС(ПОЛУЧИТЬ.РАБОЧЕЕ.ПРОСТРАНСТВО(37);21)
Код
М    =ИНДЕКС(ПОЛУЧИТЬ.РАБОЧЕЕ.ПРОСТРАНСТВО(37);20)
а в формулу такую кракозябру
Код
=Д&Д&"."&М&М&"."&Г&Г&Г&Г


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460

Сообщение отредактировал krosav4ig - Суббота, 07.01.2017, 06:05
 
Ответить
Сообщениекак вариант, можно в диспетчер имен воткнуть
Код
Г    =ИНДЕКС(ПОЛУЧИТЬ.РАБОЧЕЕ.ПРОСТРАНСТВО(37);19)
Код
Д    =ИНДЕКС(ПОЛУЧИТЬ.РАБОЧЕЕ.ПРОСТРАНСТВО(37);21)
Код
М    =ИНДЕКС(ПОЛУЧИТЬ.РАБОЧЕЕ.ПРОСТРАНСТВО(37);20)
а в формулу такую кракозябру
Код
=Д&Д&"."&М&М&"."&Г&Г&Г&Г

Автор - krosav4ig
Дата добавления - 07.01.2017 в 06:04
krosav4ig Дата: Четверг, 05.01.2017, 03:05 | Сообщение № 949 | Тема: трехуровенный выбор без ЕСЛИ
Группа: Друзья
Ранг: Старожил
Сообщений: 2348
Репутация: 997 ±
Замечаний: 0% ±

Excel 2007,2010,2013
До кучи
Код
=ОКРУГЛ(ПРОСМОТР(A1;{0:50:151};(A1*99%-{0:50:150})*{0:8:13}%+{0:0:8});2)


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460
 
Ответить
СообщениеДо кучи
Код
=ОКРУГЛ(ПРОСМОТР(A1;{0:50:151};(A1*99%-{0:50:150})*{0:8:13}%+{0:0:8});2)

Автор - krosav4ig
Дата добавления - 05.01.2017 в 03:05
krosav4ig Дата: Среда, 04.01.2017, 01:43 | Сообщение № 950 | Тема: Суммирование по нескольким условиям
Группа: Друзья
Ранг: Старожил
Сообщений: 2348
Репутация: 997 ±
Замечаний: 0% ±

Excel 2007,2010,2013
ну, тогда так, наверно
[vba]
Код
=SUMPRODUCT(IF(MMULT(IFERROR(SEARCH(SPLIT(B9;";");'Выписка'!E:E);0);TRANSPOSE(SEARCH("*";SPLIT(B9;";"))));'Выписка'!I:I))
[/vba]


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460
 
Ответить
Сообщениену, тогда так, наверно
[vba]
Код
=SUMPRODUCT(IF(MMULT(IFERROR(SEARCH(SPLIT(B9;";");'Выписка'!E:E);0);TRANSPOSE(SEARCH("*";SPLIT(B9;";"))));'Выписка'!I:I))
[/vba]

Автор - krosav4ig
Дата добавления - 04.01.2017 в 01:43
krosav4ig Дата: Среда, 04.01.2017, 00:14 | Сообщение № 951 | Тема: Суммирование по нескольким условиям
Группа: Друзья
Ранг: Старожил
Сообщений: 2348
Репутация: 997 ±
Замечаний: 0% ±

Excel 2007,2010,2013
Здравствуйте
Нужно, чтобы суммировались только те записи, для которых выполняются все условия из ячейки?
Если да, то формула может быть такой [vba]
Код
=SUMPRODUCT(IF(MMULT(ISERR(SEARCH(SPLIT(B9;";");'Выписка'!E:E))%;TRANSPOSE(SEARCH("*";SPLIT(B9;";"))));;'Выписка'!I:I))
[/vba]


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460

Сообщение отредактировал krosav4ig - Среда, 04.01.2017, 00:16
 
Ответить
СообщениеЗдравствуйте
Нужно, чтобы суммировались только те записи, для которых выполняются все условия из ячейки?
Если да, то формула может быть такой [vba]
Код
=SUMPRODUCT(IF(MMULT(ISERR(SEARCH(SPLIT(B9;";");'Выписка'!E:E))%;TRANSPOSE(SEARCH("*";SPLIT(B9;";"))));;'Выписка'!I:I))
[/vba]

Автор - krosav4ig
Дата добавления - 04.01.2017 в 00:14
krosav4ig Дата: Понедельник, 02.01.2017, 04:09 | Сообщение № 952 | Тема: Макрос суммирования...
Группа: Друзья
Ранг: Старожил
Сообщений: 2348
Репутация: 997 ±
Замечаний: 0% ±

Excel 2007,2010,2013
как-то так можно
[vba]
Код
Option Base 1
Sub Сумма()
    Dim arr As Variant, i&, s$, d&
    With [B5].CurrentRegion
        With Intersect(.Offset(1), .Cells)
            arr = .Value
            With CreateObject("Scripting.Dictionary")
                For i = 1 To UBound(arr)
                    s = CStr(arr(i, 1))
                    d = arr(i, 3) - arr(i, 4)
                    arr(i, 5) = 0
                    If .Exists(s) Then
                        arr(.Item(s), 5) = arr(.Item(s), 5) + d
                        arr(i, 5) = 0
                    Else
                        arr(i, 5) = d
                        .Item(s) = i
                    End If
                Next i
            End With
            .Value = arr
        End With
    End With
End Sub
[/vba]
а еще можно немассивную формулу написать
для F6 формула
Код
=ЕСЛИ(СЧЁТЕСЛИ($B$5:B5;B6);"";СУММЕСЛИ($B$6:$B$14;B6;$D$6:$D$14)-СУММЕСЛИ($B$6:$B$14;B6;$E$6:$E$14))


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460
 
Ответить
Сообщениекак-то так можно
[vba]
Код
Option Base 1
Sub Сумма()
    Dim arr As Variant, i&, s$, d&
    With [B5].CurrentRegion
        With Intersect(.Offset(1), .Cells)
            arr = .Value
            With CreateObject("Scripting.Dictionary")
                For i = 1 To UBound(arr)
                    s = CStr(arr(i, 1))
                    d = arr(i, 3) - arr(i, 4)
                    arr(i, 5) = 0
                    If .Exists(s) Then
                        arr(.Item(s), 5) = arr(.Item(s), 5) + d
                        arr(i, 5) = 0
                    Else
                        arr(i, 5) = d
                        .Item(s) = i
                    End If
                Next i
            End With
            .Value = arr
        End With
    End With
End Sub
[/vba]
а еще можно немассивную формулу написать
для F6 формула
Код
=ЕСЛИ(СЧЁТЕСЛИ($B$5:B5;B6);"";СУММЕСЛИ($B$6:$B$14;B6;$D$6:$D$14)-СУММЕСЛИ($B$6:$B$14;B6;$E$6:$E$14))

Автор - krosav4ig
Дата добавления - 02.01.2017 в 04:09
krosav4ig Дата: Воскресенье, 01.01.2017, 00:42 | Сообщение № 953 | Тема: С Новым Годом!
Группа: Друзья
Ранг: Старожил
Сообщений: 2348
Репутация: 997 ±
Замечаний: 0% ±

Excel 2007,2010,2013
С новым годом! Счастья, мира, добра, любви, достатка в каждый дом! Пусть исполнятся все ваши желания!


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460
 
Ответить
СообщениеС новым годом! Счастья, мира, добра, любви, достатка в каждый дом! Пусть исполнятся все ваши желания!

Автор - krosav4ig
Дата добавления - 01.01.2017 в 00:42
krosav4ig Дата: Суббота, 31.12.2016, 16:04 | Сообщение № 954 | Тема: Размещение диаграммы на форме.
Группа: Друзья
Ранг: Старожил
Сообщений: 2348
Репутация: 997 ±
Замечаний: 0% ±

Excel 2007,2010,2013
модуль modPastePicture, спёр отсюда (файл PastePicture.zip)

в модуль листа Лист3
[vba]
Код
Public WithEvents Chrt As Chart
Private Sub Chrt_Calculate()
    UserForm1.UpdateChart
End Sub
[/vba]
в UserForm1
[vba]
Код
Private Sub UserForm_Initialize()
    Set Лист3.Chrt = Лист3.ChartObjects(1).Chart
    UpdateChart
End Sub
Public Sub UpdateChart()
    Лист3.Chrt.CopyPicture xlScreen, xlPicture, xlScreen
    Set Image1.Picture = PastePicture(xlPicture)
End Sub
[/vba]
К сообщению приложен файл: 0091065.xls (80.0 Kb)


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460

Сообщение отредактировал krosav4ig - Суббота, 31.12.2016, 16:08
 
Ответить
Сообщениемодуль modPastePicture, спёр отсюда (файл PastePicture.zip)

в модуль листа Лист3
[vba]
Код
Public WithEvents Chrt As Chart
Private Sub Chrt_Calculate()
    UserForm1.UpdateChart
End Sub
[/vba]
в UserForm1
[vba]
Код
Private Sub UserForm_Initialize()
    Set Лист3.Chrt = Лист3.ChartObjects(1).Chart
    UpdateChart
End Sub
Public Sub UpdateChart()
    Лист3.Chrt.CopyPicture xlScreen, xlPicture, xlScreen
    Set Image1.Picture = PastePicture(xlPicture)
End Sub
[/vba]

Автор - krosav4ig
Дата добавления - 31.12.2016 в 16:04
krosav4ig Дата: Суббота, 31.12.2016, 02:02 | Сообщение № 955 | Тема: Сохранение Веб-страницы
Группа: Друзья
Ранг: Старожил
Сообщений: 2348
Репутация: 997 ±
Замечаний: 0% ±

Excel 2007,2010,2013
как быть в случае, если диапазон на каждом листе разный?

можно вот так
[vba]
Код
Sub toWeb()
    Dim sh As Worksheet
    For Each sh In ThisWorkbook.Sheets
        With ThisWorkbook.PublishObjects.Add(xlSourceRange, _
            ThisWorkbook.Path & "\" & sh.Name & ".htm", sh.Name, sh.UsedRange.address, _
            xlHtmlStatic, ThisWorkbook.Name & "_" & sh.Name, "")
            .Publish (True)
            .AutoRepublish = False
        End With
    Next sh
End Sub
[/vba]


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460
 
Ответить
Сообщение
как быть в случае, если диапазон на каждом листе разный?

можно вот так
[vba]
Код
Sub toWeb()
    Dim sh As Worksheet
    For Each sh In ThisWorkbook.Sheets
        With ThisWorkbook.PublishObjects.Add(xlSourceRange, _
            ThisWorkbook.Path & "\" & sh.Name & ".htm", sh.Name, sh.UsedRange.address, _
            xlHtmlStatic, ThisWorkbook.Name & "_" & sh.Name, "")
            .Publish (True)
            .AutoRepublish = False
        End With
    Next sh
End Sub
[/vba]

Автор - krosav4ig
Дата добавления - 31.12.2016 в 02:02
krosav4ig Дата: Пятница, 30.12.2016, 01:51 | Сообщение № 956 | Тема: Вагоны поезда Загадка.
Группа: Друзья
Ранг: Старожил
Сообщений: 2348
Репутация: 997 ±
Замечаний: 0% ±

Excel 2007,2010,2013
+ тоже как-то решал уже, ЕМНИП ,в колледже на паре


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460
 
Ответить
Сообщение+ тоже как-то решал уже, ЕМНИП ,в колледже на паре

Автор - krosav4ig
Дата добавления - 30.12.2016 в 01:51
krosav4ig Дата: Среда, 28.12.2016, 23:21 | Сообщение № 957 | Тема: Массовое изменение названий (tittle) изображений макросом
Группа: Друзья
Ранг: Старожил
Сообщений: 2348
Репутация: 997 ±
Замечаний: 0% ±

Excel 2007,2010,2013
здравствуйте
для изменения свойств файла есть библиотека DSOFile
сделал пример использования на VBA
[vba]
Код
Sub ReadFromFiles()'получение свойств файлов из выбранной папки и запись на лист
    Dim strFolder$, arr() As Variant, i&, r As ListRow, c As Range
    strFolder = SelectFolder()
    If strFolder = "" Then Exit Sub
    With Application
        .ScreenUpdating = 0: .EnableEvents = 0
        Dim strFile$
        With CreateObject("DSOFile.OleDocumentProperties")
            strFile = Dir$(strFolder & "\*.jpg*")
            Do While Len(strFile)
                ReDim Preserve arr(5, i)
                arr(0, i) = strFile
                .Open strFolder & "\" & strFile, , 2
                Set ss = .SummaryProperties
                With .SummaryProperties
                    arr(2, i) = .Title
                    arr(3, i) = .Subject
                    arr(4, i) = .Keywords
                    arr(5, i) = .Comments
                End With
                .Close
                strFile = Dir$
                i = i + 1
            Loop
        End With
        With [Таблица1].ListObject
            .ListRows.Add 1
            .DataBodyRange.Delete
            .HeaderRowRange(2, 1).Resize(i, 6) = Application.Transpose(arr)
            For Each r In .ListRows
                Dim sd As ListRow
                Set c = r.Range(, 2)
                c.RowHeight = 60
                With ActiveSheet.Pictures.Insert(strFolder & "\" & c.Offset(, -1))
                    If .Width / .Height * c.RowHeight > c.Width - 2 Then
                        .Width = c.Width - 3
                    Else: .Height = c.RowHeight - 3
                    End If
                    .Top = c.Top + (c.Height - .Height) / 2
                    .Left = c.Left + (c.Width - .Width) / 2
                    .Placement = xlMoveAndSize
                End With
            Next
        End With
        .ScreenUpdating = 1: .EnableEvents = 1
    End With
End Sub
Sub Write2Files()'замена свойств файлов значениями с листа
    Dim strFolder$, r As ListRow
    strFolder = SelectFolder()
    If strFolder = "" Then Exit Sub
    With CreateObject("DSOFile.OleDocumentProperties")
        For Each r In [Таблица1].ListObject.ListRows
            .Open strFolder & "\" & r.Range(, 1), , 2
            With .SummaryProperties
                .Title = r.Range(, 7)
                .Subject = r.Range(, 8)
                .Keywords = r.Range(, 9)
                .Comments = r.Range(, 10)
            End With
            .Save: .Close
        Next
    End With
End Sub
Private Function SelectFolder$()
    With Application.FileDialog(msoFileDialogFolderPicker)
r:      If .Show Then
            SelectFolder = .SelectedItems(1)
        ElseIf MsgBox("Ничего не выбрано. Повторить?", 36, "Ну так как?") = 6 Then
            GoTo r
        Else: Exit Function
        End If
    End With
End Function
[/vba]
К сообщению приложен файл: -tittle-.xlsm (22.1 Kb)


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460

Сообщение отредактировал krosav4ig - Среда, 28.12.2016, 23:24
 
Ответить
Сообщениездравствуйте
для изменения свойств файла есть библиотека DSOFile
сделал пример использования на VBA
[vba]
Код
Sub ReadFromFiles()'получение свойств файлов из выбранной папки и запись на лист
    Dim strFolder$, arr() As Variant, i&, r As ListRow, c As Range
    strFolder = SelectFolder()
    If strFolder = "" Then Exit Sub
    With Application
        .ScreenUpdating = 0: .EnableEvents = 0
        Dim strFile$
        With CreateObject("DSOFile.OleDocumentProperties")
            strFile = Dir$(strFolder & "\*.jpg*")
            Do While Len(strFile)
                ReDim Preserve arr(5, i)
                arr(0, i) = strFile
                .Open strFolder & "\" & strFile, , 2
                Set ss = .SummaryProperties
                With .SummaryProperties
                    arr(2, i) = .Title
                    arr(3, i) = .Subject
                    arr(4, i) = .Keywords
                    arr(5, i) = .Comments
                End With
                .Close
                strFile = Dir$
                i = i + 1
            Loop
        End With
        With [Таблица1].ListObject
            .ListRows.Add 1
            .DataBodyRange.Delete
            .HeaderRowRange(2, 1).Resize(i, 6) = Application.Transpose(arr)
            For Each r In .ListRows
                Dim sd As ListRow
                Set c = r.Range(, 2)
                c.RowHeight = 60
                With ActiveSheet.Pictures.Insert(strFolder & "\" & c.Offset(, -1))
                    If .Width / .Height * c.RowHeight > c.Width - 2 Then
                        .Width = c.Width - 3
                    Else: .Height = c.RowHeight - 3
                    End If
                    .Top = c.Top + (c.Height - .Height) / 2
                    .Left = c.Left + (c.Width - .Width) / 2
                    .Placement = xlMoveAndSize
                End With
            Next
        End With
        .ScreenUpdating = 1: .EnableEvents = 1
    End With
End Sub
Sub Write2Files()'замена свойств файлов значениями с листа
    Dim strFolder$, r As ListRow
    strFolder = SelectFolder()
    If strFolder = "" Then Exit Sub
    With CreateObject("DSOFile.OleDocumentProperties")
        For Each r In [Таблица1].ListObject.ListRows
            .Open strFolder & "\" & r.Range(, 1), , 2
            With .SummaryProperties
                .Title = r.Range(, 7)
                .Subject = r.Range(, 8)
                .Keywords = r.Range(, 9)
                .Comments = r.Range(, 10)
            End With
            .Save: .Close
        Next
    End With
End Sub
Private Function SelectFolder$()
    With Application.FileDialog(msoFileDialogFolderPicker)
r:      If .Show Then
            SelectFolder = .SelectedItems(1)
        ElseIf MsgBox("Ничего не выбрано. Повторить?", 36, "Ну так как?") = 6 Then
            GoTo r
        Else: Exit Function
        End If
    End With
End Function
[/vba]

Автор - krosav4ig
Дата добавления - 28.12.2016 в 23:21
krosav4ig Дата: Вторник, 27.12.2016, 14:46 | Сообщение № 958 | Тема: Word. Подсветка кода SQL, C#, C++, Pascal, Java,RegExp
Группа: Друзья
Ранг: Старожил
Сообщений: 2348
Репутация: 997 ±
Замечаний: 0% ±

Excel 2007,2010,2013
Здравствуйте
предложения

добавить вкладку с командами на ленту, пункты в контекстное меню. Относительно легко делается через CustomUI.


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460
 
Ответить
СообщениеЗдравствуйте
предложения

добавить вкладку с командами на ленту, пункты в контекстное меню. Относительно легко делается через CustomUI.

Автор - krosav4ig
Дата добавления - 27.12.2016 в 14:46
krosav4ig Дата: Вторник, 27.12.2016, 01:44 | Сообщение № 959 | Тема: список каталогов с диска в xls(x)
Группа: Друзья
Ранг: Старожил
Сообщений: 2348
Репутация: 997 ±
Замечаний: 0% ±

Excel 2007,2010,2013
а если попробовать такой изврат?
[vba]
Код
Sub d()
    With Application.FileDialog(msoFileDialogFolderPicker)
        If .Show Then
            With Application: .ScreenUpdating = 0: .EnableEvents = 0: .DisplayAlerts = 0: End With
            CreateObject("wscript.shell").Run _
                "cmd /c dir " & .SelectedItems(1) & _
                " /AD-H-L-S | clip", 0, 1
            With ActiveSheet
                .[A1:B1] = Array("Папка", "Дата создания")
                With Intersect(.UsedRange.Offset(1), .[A:B])
                    .Cells(1, 1).Select
                    .Delete xlUp
                End With
                .PasteSpecial "Текст"
                .UsedRange
                With Intersect(.UsedRange.Offset(1), .[A:A])
                    .Columns(1).TextToColumns [A2], 2, FieldInfo:=Array( _
                    Array(0, 4), Array(10, 9), Array(36, 2)), TrailingMinusNumbers:=1
                    .Offset(, 1).Cut
                    .Insert xlToRight
                    .Offset(.Rows.Count - 3, -1).Resize(2, 2).Delete xlUp
                    .Offset(, -1).Resize(5, 2).Delete xlUp
                End With
            End With
        End If
    End With
    With Application: .ScreenUpdating = 1: .EnableEvents = 1: .DisplayAlerts = 1: End With
End Sub
[/vba]


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460
 
Ответить
Сообщениеа если попробовать такой изврат?
[vba]
Код
Sub d()
    With Application.FileDialog(msoFileDialogFolderPicker)
        If .Show Then
            With Application: .ScreenUpdating = 0: .EnableEvents = 0: .DisplayAlerts = 0: End With
            CreateObject("wscript.shell").Run _
                "cmd /c dir " & .SelectedItems(1) & _
                " /AD-H-L-S | clip", 0, 1
            With ActiveSheet
                .[A1:B1] = Array("Папка", "Дата создания")
                With Intersect(.UsedRange.Offset(1), .[A:B])
                    .Cells(1, 1).Select
                    .Delete xlUp
                End With
                .PasteSpecial "Текст"
                .UsedRange
                With Intersect(.UsedRange.Offset(1), .[A:A])
                    .Columns(1).TextToColumns [A2], 2, FieldInfo:=Array( _
                    Array(0, 4), Array(10, 9), Array(36, 2)), TrailingMinusNumbers:=1
                    .Offset(, 1).Cut
                    .Insert xlToRight
                    .Offset(.Rows.Count - 3, -1).Resize(2, 2).Delete xlUp
                    .Offset(, -1).Resize(5, 2).Delete xlUp
                End With
            End With
        End If
    End With
    With Application: .ScreenUpdating = 1: .EnableEvents = 1: .DisplayAlerts = 1: End With
End Sub
[/vba]

Автор - krosav4ig
Дата добавления - 27.12.2016 в 01:44
krosav4ig Дата: Понедельник, 26.12.2016, 03:39 | Сообщение № 960 | Тема: Размер аватара.
Группа: Друзья
Ранг: Старожил
Сообщений: 2348
Репутация: 997 ±
Замечаний: 0% ±

Excel 2007,2010,2013
можно куда-нибудь воткнуть кнопку, например, с таким кодом
[vba]
Код
<input onclick="Object.prototype.forEach=Array.prototype.slice.call(this).forEach;var a=[Math.round($('.postRankName').width()/$(window).width()*100)+'%','inline','70%'];if($('.userAvatar')[0].style.width!='') {a=['25%','',''];this.value='Сузить'} else this.value='Расширить';$('.postTdTop .postUser').parent().forEach(function(item){item.style.width=a[0]});$('.postTdInfo td').forEach(function(item){item.style.display=a[1]});$('.userAvatar').forEach(function(item){item.style.width=a[2]})" value="Сузить" type="button">
[/vba]


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460

Сообщение отредактировал krosav4ig - Понедельник, 26.12.2016, 15:27
 
Ответить
Сообщениеможно куда-нибудь воткнуть кнопку, например, с таким кодом
[vba]
Код
<input onclick="Object.prototype.forEach=Array.prototype.slice.call(this).forEach;var a=[Math.round($('.postRankName').width()/$(window).width()*100)+'%','inline','70%'];if($('.userAvatar')[0].style.width!='') {a=['25%','',''];this.value='Сузить'} else this.value='Расширить';$('.postTdTop .postUser').parent().forEach(function(item){item.style.width=a[0]});$('.postTdInfo td').forEach(function(item){item.style.display=a[1]});$('.userAvatar').forEach(function(item){item.style.width=a[2]})" value="Сузить" type="button">
[/vba]

Автор - krosav4ig
Дата добавления - 26.12.2016 в 03:39
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2025 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!