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

Страницы: 1
Одна книга обрабатывается другой и данные выгружаются в файл, данные создаются, но затем перезаписываются на данные с другого листа
 
Работает. Повесил aplication.quit в workbook_beforeclose
Остался открытым вопрос о возможности вообще не открывать excel
Может есть кол vba
Изменено: jaremalex - 02.02.2016 21:27:03
Одна книга обрабатывается другой и данные выгружаются в файл, данные создаются, но затем перезаписываются на данные с другого листа
 
Остался один не понятный момент с закрытием самого экселя. Книги после завершения работы макросов закрываются. А приложение excel остается открытым. aplication.quit не работает. Что можно сделать, чтобы закрыть excel?
Или есть ли вариант отработать макросам не открывая книги и приложение excel?
Изменено: jaremalex - 01.02.2016 23:21:13
Одна книга обрабатывается другой и данные выгружаются в файл, данные создаются, но затем перезаписываются на данные с другого листа
 
Есть решение. Не верьте турку и экселю. Не понимает он прямых директив. Тупо по умолчанию отслеживает порядок листов и портит людям настроение.
Одна книга обрабатывается другой и данные выгружаются в файл, данные создаются, но затем перезаписываются на данные с другого листа
 
SaveCopyAs  не хочет вообще работать. Пишет, что медод или данные не найдены.
К тому же я сохраняю не книгу, а данные с листа. На листе они есть. В резервную копию попадают и попадают первоначально в файл, а вот при закрытии книги переписываются на другие данные с другого листа. Может срабатывает действие по умолчанию. Лист этот стоит первым в книге. Но что тогда к этому приводит?
Одна книга обрабатывается другой и данные выгружаются в файл, данные создаются, но затем перезаписываются на данные с другого листа
 
Хочу упростить и пояснить поломку. Получается очень странная работа функции saveAs
В моем случае она сохраняет данные с листа Progon в файл. Для теста дополнительно задал опцию создания копии файла.
Функция срабатывает. Файл создается. Копия создается.
Затем процедура должна закрыть книгу с листами.
При закрытии книги данные в новом созданным функцией текстовом файле перезаписываются на данные с другого листа Price.
Файл копии остается нормальным с нужными данными.
Что я делаю не так? Может путаница при передаче параметров в функции между сабами? Хоть вопрос наводящий задайте.

Но опять же есть один файл эксель.xls с листами для обработки под который все делалось и он обрабатывается хорошо. Но стоит в нем сделать любое изменение, которое приводит к запросу на пересохранение файла при закрытии и он так же перестает нормально обрабатываться. Созданный файл перезаписывается данными с другого листа. xls менял на xlsx. но разницы нет.

Код
Private Sub Workbook_Open()
Dim wrkBoook As Workbook
Dim wrkBook As Workbook
Dim strPath As String, strFile As String
    Application.ScreenUpdating = False
Set wrkBoook = ThisWorkbook
        strPath = wrkBoook.Path  '--- адрес папки где хранится рабочая книга
        strFile = strPath & "\Mat_Elem_trigger.xls"
    Set wrkBook = Application.Workbooks.Open(strFile)
        Call PriceRegion(wrkBook, strPath)
        wrkBook.Close True '--- После срабатывания этой функции все перезаписывается!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
        
        ThisWorkbook.Close True
End Sub

Sub PriceRegion(wrkBook As Workbook, strPath As String)
    
    Dim shtOld As Worksheet, shtNew As Worksheet
    Dim rngFirst1 As Range, rngLast1 As Range, rngAll1 As Range
    Dim Nrow As Long, NrowMax As Long
    
    Set shtOld = wrkBook.Worksheets("Price")
    Set shtNew = wrkBook.Worksheets("Progon")
    
    Application.ScreenUpdating = False
    
    Call ClearSheet(shtNew)
    
    Set rngFirst1 = shtOld.Range("A3")
                NrowMax = shtOld.Rows.Count
    
    Do
        Set rngAll1 = rngFirst1.CurrentRegion
                Nrow = rngAll1.Rows.Count
            Call Progon(rngAll1)
            Call ReverceList1(wrkBook, shtOld, shtNew, rngFirst1)
        Set rngLast1 = rngAll1.Cells(Nrow, 1)
        Set rngFirst1 = rngLast1.End(xlDown)
        
    Loop Until rngFirst1.Row = NrowMax

        shtNew.SaveAs Filename:=strPath & "\price" & Format(Now(), "yyyymmdd_hhnnss") & ".txt", FileFormat:=xlUnicodeText, CreateBackup:=True
End Sub
Одна книга обрабатывается другой и данные выгружаются в файл, данные создаются, но затем перезаписываются на данные с другого листа
 
Пожалуйста, помогите решить проблему. Есть две книги. Одна с листом таблицей данных и листом подстановки. Другая книга при открытии запускает процедуру (часть кода можно увидеть ниже). Эта книга берет данные с листа данных преобразовывает и выгружает на лист подстановки. Далее выгруженные данные переносятся в отдельный текстовый файл. Проводит обработку и все закрывается. Сейчас все работает, но не всегда. Одну таблицу обрабатывает. Другую большую нет. То есть сама процедура обработки и переноса в файл работает с разными данными и большими и не очень. А, закрытие обрабатываемой книги приводит к сбою, но только на одном файле с большими данными. Файл по структуре идентичен другому нормально работающему с меньшим кол-ом данных. Если запустить по F8 и сделать останов перед командой    wrkBook.Close True
То требуемый файл создается и данные там правильные. Если после останова сразу запустить процедуру, то данные обработки перезапишутся на данные с листа первичных данных. Если останов подержать некоторое значительное время, а потом продолжить процедуру, то перезаписи не произойдет.
Куда копать?
Ecxel 2013. Файлы .xls Система win7

Код
Private Sub Workbook_Open()
Dim wrkBoook As Workbook
Dim wrkBook As Workbook
Dim strPath As String, strFile As String
    
Set wrkBoook = ThisWorkbook
        strPath = wrkBoook.Path  '--- адрес папки где хранится рабочая книга

        strFile = strPath & "\El_trigger.xls"  '--- Книга в которой хранятся данные на одном листе и подставляются обработанные на другой лист

    Set wrkBook = Application.Workbooks.Open(strFile) '--- открываем книгу и передаем объект в другой sub

        Call PriceRegion(wrkBook, strPath) '--- вызов другого sub с процедурой обработки таблиц одного листа и копирования данных на другой лист
'--- в другом sub данные с промежуточного листа, куда произошла вся выгрузка обработанных этим sab данных 
             shtNew.SaveAs strPath & "\price" & Format(Now(), "yyyymmdd_hhnnss") & ".txt", xlUnicodeText  '--- эта строка взята из конца процедуры другого sub
'--- на этом этапе нормально создается файл с обработанными данными
        wrkBook.Close True '--- БЕЗ этой команды созданный файл содержит нормальные данные, но книга закрывается с запросом об сохранении изменения в созданном файле price
'--- если подтвердить сохранение, то данные переписываются на текстовые данные без форматирования, которые содержатся на листе, который нужно обработать. Если просто закрыть, то все НОРМАЛЬНО
'--- С ЭТОЙ командой закрытия создающийся файл перезаписывается автоматически. В ЧЕМ ЗДЕСЬ ПОДВОХ!!!!!!!!!!!!!!!!!!!!!!!!!
        
        ThisWorkbook.Close True  '--- файл всегда закрывается нормально
End Sub
Изменено: jaremalex - 01.02.2016 23:19:39
Как с .VBS создать .exe
 
Цитата
JeyCi написал: и скомпилировать скрипт в exe потом можно
Приветствую. Пожалуйста, подскажите можно ли этой программой из VBS исполняемого файла сделать EXE?
При компилировании и выполнении Exe внутренний код VBS нигде не светится? Просто у меня там пароль на открытие excel
Спасибо.
Страницы: 1
Наверх