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

Страницы: 1 2 След.
Как GetObject заставить открывать в Excel файлы с не стандартным расширением?
 
The_Prist,
А чем плох
Код
.DisplayAlerts = Falsе

?
Изменено: fejdraus - 19.04.2017 04:21:10
Как GetObject заставить открывать в Excel файлы с не стандартным расширением?
 
The_Prist,
спасибо за вариант с
Код
  .ActiveWorkbook.Close False

но на практике оказалось что он срабатывает не всегда, в отличии от
Код
.DisplayAlerts = False

Спасибо всем в поисках решения, сейчас все работает идеально.
Как GetObject заставить открывать в Excel файлы с не стандартным расширением?
 
The_Prist,
Спасибо за ответ, но как это делать в vba я знаю, и в нем у меня проблем нет с кодом, меня интересовало именно в vbs и ответ я нашел только что, нужно перед .Quit отключить запрос

Код
   .DisplayAlerts = False
   .Quit


Теперь все работает как нужно.
:)  Спасибо за помощь
Как GetObject заставить открывать в Excel файлы с не стандартным расширением?
 
The_Prist,
Передать в Excel параметр получилось, и выполняется макрос правильно, но когда макрос закрывает сам рабочую книгу, скрипт выдает ошибку. На сколько я понимаю нужно vbs дать возможность самому закрыть книгу без сохранения и закрыть Excel. Уже несколько часов гуглю Close но не как не выходит.

Спасибо всем кто помог, очень хорошие советы, и примеры хорошие, но видимо просто я туплю уже.

Тему можно закрыть, приношу извинения что уже потянул ее не в том направлении, просто тут появились люди которые хорошо знают код и мне хотелось бы узнать пока они тут.

The_Prist, ZVI, Максим Зеленский,   спасибо Вам за помощь!
Как GetObject заставить открывать в Excel файлы с не стандартным расширением?
 
Подскажите, как закрыть файл Excel без сохранения изменений после выполнения скрипта vbs?
Как GetObject заставить открывать в Excel файлы с не стандартным расширением?
 
The_Prist,
Вот мой vbs

Код
Set WshShell = CreateObject("WScript.Shell")
filebase = WshShell.CurrentDirectory & "\base.ottb"
fileOTA = "D:\WorkDrive\Квартальный отчет\2016\Макрос отчет 2 квартал\Testfile\ota110.ottb"
With  CreateObject("Excel.Application")
  .Visible = True
  .Workbooks.Open fileOTA,,,,"Passw0rd"
  .Run "ImportBase", filebase
End With
Изменено: fejdraus - 13.04.2017 11:08:42
Как GetObject заставить открывать в Excel файлы с не стандартным расширением?
 
The_Prist,
К сожалению когда я запускаю без указания названия модуля, у меня пишет что не может найти макрос такой
Как GetObject заставить открывать в Excel файлы с не стандартным расширением?
 
ZVI, но в Excel же нужно указать имя модуля где находится макрос, как его вписать?
И вопрос по коду который в "Эта книга", он запуститься при таком выполнении? Если да, то мжно как то не дать запуститься ему если выполняется макрос запущенный Вашим vbs скриптом?
Изменено: fejdraus - 18.04.2017 08:54:37
Как GetObject заставить открывать в Excel файлы с не стандартным расширением?
 
The_Prist,
А можно передать значение переменной из vbs в переменную макроса excel, и что бы макрос уже подхватил его и выполнял дальше excel?
на подобии
Код
CloseWorkBook.temp = ActiveWorkBook.temp
Нужно передать значение полного пути в котором работает vbs скрипт. Путь знаю, но как передать его напрямую в макрос Excel?

P.S.: Сам файл excel при этом находится не в одной папке с vbs скриптом.
Изменено: fejdraus - 12.04.2017 17:31:54
Как GetObject заставить открывать в Excel файлы с не стандартным расширением?
 
ZVI,
Подскажите, а можно ли с vbs запустить при открытии файла определенный макрос а не тот что в "Эта книга"?
Точнее, что бы vbs при определенном событии открывал файл и запускал определенный макрос.
Изменено: fejdraus - 12.04.2017 14:28:23
Как GetObject заставить открывать в Excel файлы с не стандартным расширением?
 
Всем спасибо!
Решил переписать код под Workbooks.Open.
Теперь смог еще и поставить пароль на открытие файла, который ледит в vbs скрипте, а скрипт запакован в exe.
Изменено: fejdraus - 12.04.2017 14:23:49
Как GetObject заставить открывать в Excel файлы с не стандартным расширением?
 
The_Prist,
Все эти три способа делаю, и страница с инструкцией, и скрпытие всех листов, и видео записывал - не помогает, им просто лень читать и смотреть, просто лень и не как не заставить их
У менея больше 300 строк только защиты от дураков, опечаток, лишних пробелов, запятых. Правда, ужас просто, потому так и изголяюсь
Изменено: fejdraus - 11.04.2017 18:33:48
Как GetObject заставить открывать в Excel файлы с не стандартным расширением?
 
Максим Зеленский,
Пробовал так же но с excel.application, та же ошибка, так и не смог её побороть.
Теоретические должно работать, судя по документации, но не работает
Изменено: fejdraus - 11.04.2017 18:27:51
Как GetObject заставить открывать в Excel файлы с не стандартным расширением?
 
А можно открыть файл с применением пароля с помощу CreateObject в скрипте vba?
Как GetObject заставить открывать в Excel файлы с не стандартным расширением?
 
Андрей VG, переименование расширение нужно по той причине что vbs скрипт запакованый в exe запускает excel файл, а что бы работники по ошибке не запустили сам excel файл. Просто на работе есть люди которые не знают что такое макросы, и им я год не могу вдолбить что нужно их включить, а они все от меня за сотни километров я не могу им включить, а ,vbs скрипт запускает им файл excel с включенными макросами независимо от настроек безопасности в excel

The_Prist, вариант с паролем очень хороший, я и не подумал про это сразу. В таком случаи можно оставить стандартное расширение файла с базой данных, а открывать файл с помощу vbs скрипта в котором будет командла запуска с использованием пароля скомпилированым в exe файл
Как GetObject заставить открывать в Excel файлы с не стандартным расширением?
 
Максим Зеленский, The_Prist, Андрей VG,  открытие файла таким образом я знаю, но интересует именно через getobject можно ли это сделать

Сложность состоит в том что я запускают файл через vbs скрипт который excel открывает игнорируя настройки безопасности макроса, включая их, при этом окно excel скрыто но видно открывающиеся формы в excel. При открытии файла зпускается макрос, который запускает ещше макросы с модулей других, импортируя базу из другого файла и используя базу производит пересчет в таблицах макросами, так же делает проверку базы на ошибки. Потом когда все выполнено файл переименовывает файл с донорной базой а сам берёт его имя в той папке где лежит файл донор. После всего этого vbs файл удаляет файл который это все делал. Vbs скрипт и файл excel скомпилированы в exe файл. Все работает с файлами стандартного расширения, но если сделать его не стандартным, типа ottb то GetObject работать откпзщывпется. По причине такой работы и скрпытости работы именно такой метод подходит, а workbook.open не совсем подходит
Как GetObject заставить открывать в Excel файлы с не стандартным расширением?
 
The_Prist, переименование не подходит.
Dima S, отключение обновления экрана у меня и так применено
Как GetObject заставить открывать в Excel файлы с не стандартным расширением?
 
Максим Зеленский,
тогда файл откроется, а нужно что бы он был в фоне, не видимый как это в GetObject.
Или это вообще не возможно с помощью GetObject сделать?
Изменено: fejdraus - 11.04.2017 14:57:41
Как GetObject заставить открывать в Excel файлы с не стандартным расширением?
 
Как GetObject заставить открывать в Excel файлы с не стандартным расширением?
Код
        Dim objCloseBook As Object
        Set objCloseBook = GetObject("C:\Base\base.ottb")

Это файл с макросами но расширение было изменено в целях безопасности использования.
Нужно что бы макрос открывал в фоне файл base.ottb ( он же base.xlsm) через GetObject и брал с него данные.
При стандартном расширении все работает, а если его изменить - нет.
Переименовывать файл перед открытием нет смысла.
Изменено: fejdraus - 11.04.2017 14:49:36
Поиск и скрытие повторяющихся строк, Можно ли сделать код быстрее?
 
heso, спасибо, стало еще быстрее, теперь просто мгновенно работает :)
Поиск и скрытие повторяющихся строк, Можно ли сделать код быстрее?
 
Тема закрыта. Всем спасибо, особенно heso,
Поиск и скрытие повторяющихся строк, Можно ли сделать код быстрее?
 
heso,  спасибо большее, очень сильно помогли. Ваш код работает безупречно и быстро.
Я не много подправил его и получил то что нужно было. Теперь он выполняет все за 1.1 секунду, это просто фантастика. Спасибо!
Код
Public Sub Макрос()
    Условие = "18.02.2017"
    t = Timer
    With Sheets("Закупки с учетом корректировок")
        lrow = .Cells(.Rows.Count, 1).End(xlUp).Row
        arrNew = .Range("a3:Z" & lrow)
         
        Set col = CreateObject("Scripting.Dictionary")
        nrows = ""
        For i = 1 To UBound(arrNew, 1)
            For j = 1 To UBound(arrNew, 1)
                If arrNew(j, 1) = arrNew(i, 1) Then
                    If (CDate(Условие) < arrNew(j, 26)) Or (CDate(Условие) > arrNew(j, 26)) And (arrNew(j, 26) < arrNew(i, 26)) Then col.Item(j + 2) = j + 2
                End If
            Next
        Next
        Dim mass As Range
        For Each r In col
            If mass Is Nothing Then
                    Set mass = .Rows(r)
                Else
                    Set mass = Union(mass, .Rows(r))
                End If
        Next
    End With
    mass.EntireRow.Hidden = True
    MsgBox Timer - t
End Sub 
Изменено: fejdraus - 16.02.2017 13:33:38
Поиск и скрытие повторяющихся строк, Можно ли сделать код быстрее?
 
heso, в Вашем коде скорость возросла просто феноменально, менее одной секунды, я даже на такое и не мог рассчитывать. Единый нюанс вот с этим "условным" урезанием таблицы перед скрытием старых повторов.
Поиск и скрытие повторяющихся строк, Можно ли сделать код быстрее?
 
heso,условие таково:
1) в таблице строки с датами до текущего дня (предположим сегодня 19.02.2017). Нужно сначала таблицу сделать такой что бы она была до условно дня, допустим сегодня 19.02.2017, а нужно работать с таблицей с датой до 17.02.2017 (другими словами от начала века до 17.02.2017). То есть сделать так что бы следующий макрос не знал что таблица на самом деле до 19 числа.
2) убрать старые варианты строк у которых первая строка одинаковая (уже в таблице которая была урезана до 17.02.2017)
Изменено: fejdraus - 16.02.2017 13:12:45
Поиск и скрытие повторяющихся строк, Можно ли сделать код быстрее?
 
heso,  при добавлении в мой изначальный код  фильтрует правильно, но как я говорил - медленно
Код
Public Sub Массив()
    Application.ScreenUpdating = False
    Dim LastLine As Variant, Условие As Date
    Dim x As Variant, y As Variant, t As Variant
    t = Timer
    LastLine = Лист5.Cells(Лист5.Rows.Count, 1).End(xlUp).Row
    x = LastLine - 2
    y = 26
    Условие = "17.02.2017"
    arrNew = Лист5.Range("a3:Z" & LastLine)
    For s = 1 To x
        For l = 2 To x - 1
            If arrNew(s, 1) = arrNew(l, 1) Then
                If Условие < arrNew(s, 26) Then
                    Лист5.Rows(s + 2).Hidden = True
                ElseIf Условие > arrNew(s, 26) Then
                    If arrNew(s, 26) < arrNew(l, 26) Then Лист5.Rows(s + 2).Hidden = True
                    ElseIf arrNew(s, 26) > arrNew(l, 26) Then Лист5.Rows(l + 2).Hidden = True
                End If
            End If
        Next l
    Next s
    Erase arrNew
    Application.ScreenUpdating = True
    MsgBox Timer - t
End Sub
Поиск и скрытие повторяющихся строк, Можно ли сделать код быстрее?
 
heso, теперь фильтрует но не учитывая "Условие" :)
Поиск и скрытие повторяющихся строк, Можно ли сделать код быстрее?
 
heso, к сожалению нечего не работает даже после применения этой строки  :(
Поиск и скрытие повторяющихся строк, Можно ли сделать код быстрее?
 
heso, этот вариант у меня фильтрует половину столбцов но не фильтрует то что надо
Изменено: fejdraus - 16.02.2017 12:12:09
Поиск и скрытие повторяющихся строк, Можно ли сделать код быстрее?
 
heso,спасибо, код заработал в два раза быстрее, с 11 секунд до 4.
Пробовал не много добавить в код условие, что бы фильтровалось еще если нужно сначала убрать строки до установленной даты, а после нее произвести все остальные скрытия. У меня выдает ошибку, не могу сам разобраться.
Код
Public Sub Макрос()
    Условие = "17.02.2017"
    t = Timer
    With Sheets("Закупки с учетом корректировок")
        lrow = .Cells(.Rows.Count, 1).End(xlUp).Row
        arrNew = .Range("a3:Z" & lrow)
        Dim col As New Collection
        nrows = ""
        For i = 1 To UBound(arrNew, 1)
            For j = 1 To UBound(arrNew, 1)
                If arrNew(j, 1) = arrNew(i, 1) Then
                    If Условие < arrNew(j, 26) Then col.Add j + 2
                    ElseIf arrNew(j, 26) < arrNew(i, 26) Then col.Add j + 2
                End If
            Next
        Next
        Dim mass As Range
        For Each r In col
            If mass Is Nothing Then
                    Set mass = .Rows(r)
                Else
                    Set mass = Union(mass, .Rows(r))
                End If
        Next
    End With
    mass.EntireRow.Hidden = True
    MsgBox Timer - t
End Sub
Изменено: fejdraus - 16.02.2017 11:19:25
Поиск и скрытие повторяющихся строк, Можно ли сделать код быстрее?
 
Цитата
Михаил Лебедев написал:
Макрос делать - нет смысла (решается формулой). Смотрите столбец АА
Михаил Лебедев, нужно именно создание макроса, так как это только часть того что должно выполнится, всего в действии будет 10 модулей запускаться поочередно и отключенным обновлением экрана. Все модули остальные выполняются довольно быстро и используются столбцы до 45 включительно (с 22 по 45 как дополнительные с промежуточными данными).
В связи с тем что в файле будет система обновления (импорт и экспорт листов с данными в новую версию файла) применение формул на листе возможно только через ввод формул с помощью макроса.
Сортировку использовать нельзя так как нужно что бы сохранялась последовательность позиций, а новые добавляются внизу.
Изменено: fejdraus - 16.02.2017 08:12:29
Страницы: 1 2 След.
Наверх