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

Страницы: 1
Как отследить открытие другой книги VBA
 
Уважаемые форумчане! Подскажите пожалуйста! Есть книга (телефонный справочник), лежит на общем ресурсе, прав на изменения её у пользователей нет. Каждый раз при открытии книги я открываю определенную страницу, раскрываю группировку, и ctrl +f открываю окно поиска. Хотел автоматизировать, но не получается. Событие при открытии книги (сохраненное в общей книге макросов!) не срабатывает. Вопрос - как увидеть открытие книги из уже открытого приложения excel
Код
?Private Sub Workbook_Open()
    ' Если открыт телефонный справочник, открыть страницу КЭ, развернуть группировку
    If ActiveWorkbook.Name = Тел - справ.xls Then
            Sheets("КЭ").Select
            ActiveSheet.Outline.ShowLevels RowLevels:=3
    End If
End Sub
После копировании-вставки подряд более 30 строк код сильно тормозит, Application.CutCopyMode = False не помогает
 
Здравствуйте, уважаемые форумчаене!
Подскажите пожалуйста, как можно устранить проблему:  после копирования - всавки больше 30 строк, код выполняется значительно медленнее и чем дальше тем медленнее.
Копирую шаблонную строку с формулами и форматированием. Обновление экрана и пересчет формул отключены.
Код
                .Rows(iRow_Sd).Copy
                .Rows(iRow_Sd).Insert Shift:=xlDown
                Application.CutCopyMode = False
                Application.StatusBar = "Добавлена строка: " & iRow_Sd
Подсчитать одной формулой количество частей текста, в продолжение темы "Распилить строку формулой"
 
Здравствуйте, помогите пожалуйста собрать формулу, для подсчета количества кусочков строки разделенной ";"
В прошлый раз для распила строки vikttur  предложил =СЖПРОБЕЛЫ(ПСТР(ПОДСТАВИТЬ("-"&$A1;"-";ПОВТОР(" ";50));50*(СТОЛБЕЦ(A1)-1)+50;50)) '
пробовал на основе её сделать массив, вложив в СЧЕТЗ, {=СЧЁТЗ(СЖПРОБЕЛЫ(ПСТР(ПОДСТАВИТЬ(";"&A$2;";";ПОВТОР(" ";300));300*(СТРОКА(A2)-СТРОКА($A$2))+300;300)))}  получаетс всегда 1. В файле пример, как сейчас решаю, каждую ячейку одельно, а у меня болше сотни таких )))
Открыть книгу открытую другим пользователем VBA
 
Здравствуйте, для получения данных (лист отчета целиком) из другой книги собрал код, но он не работает :) не хочет рботать с открытой книгой. Общий доступ делать нельзя. Может нужно указать, что открыть только для чтения? 'Open Workbooks(Адрес6) For Input As #1 Но ошибка "subscript out of range"


Для проверки состояния книги позаимствовал функцию http://www.excel-vba.ru/chto-umeet-excel/kak-proverit-otkryta-li-kniga/ но она всегда выдает true, и при закрытой книге ??  пока не понял.
Код
Function IsBookOpen(wbFullName As String) As Boolean
    Dim iFF As Integer
    iFF = FreeFile
    On Error Resume Next
    Open wbFullName For Random Access Read Write Lock Read Write As #iFF
    Close #iFF
    IsBookOpen = Err
End Function
Код
Public Sub Получить6()
    Dim Адрес6 As String
    Dim Прграмма As Workbook
    Dim Прил6 As Workbook
    'On Error GoTo lable_1
    Application.ScreenUpdating = False    ' Отключаем “мерцание” окна
    Set Прграмма = ThisWorkbook
    Адрес6 = K:\Отчеты 1,2,3,4 кв\*.xls*"
    If IsBookOpen(Адрес6) Then
        Set Прил6 = Workbooks(Адрес6)
        'Open Workbooks(Адрес6) For Input As #1
        Else: Set Прил6 = Workbooks.Open(Адрес6)
    End If
    Application.DisplayAlerts = False
    Прил6.Sheets("филиал 1").Copy After:=Прграмма.Worksheets(Прграмма.Worksheets.Count)
    Application.DisplayAlerts = True
    Прграмма.Sheets("Ожидаемые").Activate
    Прил6.Close (False)
    Application.ScreenUpdating = True ' Возвращаем режим обновления экрана при изменении
    Exit Sub
    
    MsgBox "Нет связи с базой данных," & Chr(13) _
    & "возможно файл перемещен," & Chr(13) _
    & "обратитесь к Андрею ))!!!", vbOKOnly + vbCritical
End Sub

Пока писал, додумался до макререкордера  :)
вот что получилось:
Код
Public Sub Получить6()
    Dim Адрес6 As String
    Dim Прграмма As Workbook
    Dim Прил6 As Workbook
    'On Error GoTo lable_1
    Application.ScreenUpdating = False    ' Отключаем “мерцание” окна
    Set Прграмма = ThisWorkbook
    Адрес6 = Прграмма.Worksheets("Const").Cells(1, 2) 'здесь должна быть маска K:\Отчеты 1,2,3,4 кв\*.xls*
    Workbooks.Open Filename:=Адрес6, UpdateLinks:=0, Notify:=False
    Set Прил6 = ActiveWorkbook
    Прил6.Sheets("филиал 1").Copy After:=Прграмма.Worksheets(Прграмма.Worksheets.Count)
    Прграмма.Sheets("Ожидаемые").Activate
    Прил6.Close (False)
    Application.ScreenUpdating = True ' Возвращаем режим обновления экрана при изменении
    Exit Sub
    
    MsgBox "Нет связи с базой данных," & Chr(13) _
    & "возможно файл перемещен," & Chr(13) _
    & "обратитесь к Андрею ))!!!", vbOKOnly + vbCritical
End Sub
Но и здесь проблема, если указать полный адрес, тогда все работае (только задает вопрос, типа Здесь уже работают, продолжить?), а если маску (файлы время от времени меняют, известно что в этой папке он один), то предупреждает что "файл открыт, попробуйте позже" и дальше ошибка на строчке Workbooks.Open Filename:=Адрес6, UpdateLinks:=0, Notify:=False

И как её открыть . если адрес указан маской? (для чтения и без вопросов [продолжить?])
 
Распилить строку формулой на составные, Укоротить формулу
 
Здравствуйте! Есть строка 12-41-102-2-55, нужно её на части (без "-") в отдельные ячейки, для дальнейшей работы со справочниками.
В принципе решение есть и формулой (во вложении) и макросом, но как-то аккуратнее хочется, но как?  :)
Код
Sub РасшифороватьКод()
    Dim Лесхоз As String
    Dim Лесничство As String
    Dim Квартал As String
    Dim Выдел As String
    Dim Делянка As String
    Dim ДлиннаСтроки As Integer
    Dim Код As String
    
    Код = "12-41-102-2-55" 'может содержать строковые, маска "*-*-*-*-*"
    ДлиннаСтроки = Len(Код)
    Лесхоз = Left(Код, InStr(Код, "-") - 1)
    Код = Right(Код, ДлиннаСтроки - InStr(Код, "-"))
    ДлиннаСтроки = Len(Код)
    Лесничство = Left(Код, InStr(Код, "-") - 1)
    Код = Right(Код, ДлиннаСтроки - InStr(Код, "-"))
    ДлиннаСтроки = Len(Код)
    Квартал = Left(Код, InStr(Код, "-") - 1)
    Код = Right(Код, ДлиннаСтроки - InStr(Код, "-"))
    ДлиннаСтроки = Len(Код)
    Выдел = Left(Код, InStr(Код, "-") - 1)
    Код = Right(Код, ДлиннаСтроки - InStr(Код, "-"))
    Делянка = Код
End Sub
Ближайшее значение по нескольким критериям
 
Здравствуйте! Помогите, пожалуйста "собрать" формулу для поиска ближайшего значения по 4 критериям. Нужно по вычисленному объему найти ближайший из перечисленных и получить диаметр при соблюдении еще 3 условий (вариант справочника, разряд высот, порода)  Нашел в архиве похожий пример , http://www.planetaexcel.ru/forum/index.php?PAGE_NAME=message&FID=8&TID=30350&TITLE_SEO=30350&MID=316745#message316745 но не смог переделать под свой пример. Пока боролся с формулой, начал набирать макрос с таким запросом ( "SELECT  max(ОбъемСтвола) FROM [ТСпр$] where Вариант= 2 AND Порода='С' AND РазрВысот= '3' AND ОбъемСтвола <= 0.674662791") , но он выдает ближайшее в одну сторону (меньшую или большую, зависит от знака), к тому-же, пока не получилось добавить к выбору (в селект) столбец (диаметр). В любом случае нужна формула, чтоб пересчитывалась при изменении аргументов "на лету".
Куда вводить текст в веб форме., Как понять (из html кода) как указать адрес нужного текстбокса на веб форме.
 
Здравствуйте! Прошу помочь разобраться.
Нужно получать инф. из корпоративного телефонного веб справочника в excel, Нашел много примеров как можно ввести информацию (логи, пароль, дата...) пробовал применить на практике, например такой от Doober
Код
    Set Web1 = CreateObject("InternetExplorer.Application")      
    Web1.Visible = True
    Web1.navigate "http://fssprus.ru/iss/ip/"
 
    Do While Not (Web1.ReadyState = 4)
      DoEvents
    Loop
    Set he = Web1.Document.body.all("is[last_name]")
    he.Value = "Пупкин"
    Set he = Web1.Document.body.all("is[first_name]")
    he.Value = "Василий"
 
    Set he = Web1.Document.body.all("is[patronymic]")
    he.Value = "Иванович"
    Set he = Web1.Document.body.all("is[date]")
    he.Value = "01.01.1914"
     
    Set he = Web1.Document.body.all("is[region_id][0]")
    he.Value = "41" 'Камчатка
     
    Set he = Web1.Document.body.all("sub_fiz")
    he.Focus
    he.Click
и такой Set oHTMLCollection = oDocument.getElementsByTagName("input")
но, ничего не выходит.
открывал переменную he или oHTMLCollection  в окне Watch ничего не нашел.
в лучшем случае  Set he = Web1.Document.body.all() в переменной he я увидел item (4 штуки) но там input не было
предполагаю что из html кода можно понять - как указать этот инпутбокс, сделал скрин, прикрепил, может кто направить меня на путь истинный)))
Страницы: 1
Наверх