Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.02.2013, 15:04   #11
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

причин может быть много, что происходит (должно было происходить) в макросе Блок_2 никто, кроме Вам не знает.

начнем с того, что может не корректно работать обращение к ячейкам.
макрос
Код:
Sub Test()
  MsgBox Range("a1")
End Sub
будет показывать содержимое ячейки А1 АКТИВНОГО ЛИСТА, сделайте активным другой лист, выполните макрос, получите новое сообщение.
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 15.02.2013, 15:08   #12
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Ещё возможно такое - у Вас Лист4.Блок_2, а у меня Sheet4.Блок_2
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 15.02.2013, 15:34   #13
Nicolas_46
Пользователь
 
Регистрация: 13.09.2012
Сообщений: 53
По умолчанию

вот код который запускает макросы.

Код:
Sub Расчетное_исследование()
On Error Resume Next

    Range("N3").Select
    Selection.Copy
    Range("M8").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    
Call Лист4.Замена_значения_LZ 'этот запуск работает нормально.
Kill ThisWorkbook.Path & "\rez02.re"

Shell Chr(34) & ThisWorkbook.Path & "\saprks3.exe" & Chr(34)


    Dim fs As Object, fileEx As Boolean, t!
    t = Timer
    Set fs = CreateObject("Scripting.FileSystemObject")
    Do While Not fileEx
        fileEx = fs.FileExists(ThisWorkbook.Path & "\rez02.re")
        DoEvents
        If Timer - t > 5 Then GoTo Аварийное_завершение
    Loop

    Call Лист4.Блок_2  

    Exit Sub
    
Аварийное_завершение:
msgbox "файл результата отсутствует!"
End Sub
вот этот код не срабатывает, точнее не срабатывает удаление пустых строк и строки по условию, считывание из файла работает нормально.

Код:
Sub Блок_2()
On Error Resume Next
Application.ScreenUpdating = False
Dim strFileName As String
Dim strFileTitle As String
strFileTitle = "REZ02.re"
strFileName = ThisWorkbook.Path & "\REZ02.re"
If Dir(strFileName) <> "" Then
Else: GoTo meeee
End If

Set fso = CreateObject("Scripting.FileSystemObject")
Set ts = fso.OpenTextFile(ThisWorkbook.Path & "\rez02.re", 1)
arrstr = Split(ts.ReadAll, vbCrLf)    'массив строк текста целиком
ts.Close

Set outFile = fso.CreateTextFile(ThisWorkbook.Path & "\rez02.re")
For i = 0 To UBound(arrstr)
    If Len(Trim(arrstr(i))) > 0 Then
        If Trim(arrstr(i)) <> "ZAPAS<1 ,УCЛOBИE KOЭФФИЦИEHTOB ЗAПACA HE BЫПOЛHEHO" Then
           outFile.WriteLine arrstr(i)
        End If
    End If
Next

outFile.Close

Sheets("Блок 2").Visible = True
Sheets("Блок 2").Select

Dim TextLine
i = 1
Open ThisWorkbook.Path & "\rez02.re" For Input As #1
Do While Not EOF(1)
Line Input #1, TextLine

If i = 10 Then
    Range("C11").Select
    ActiveCell.FormulaR1C1 = Mid(TextLine, 28, 8)
End If
If i = 10 Then
    Range("D11").Select
    ActiveCell.FormulaR1C1 = Mid(TextLine, 42, 8)
End If
If i = 10 Then
    Range("E11").Select
    ActiveCell.FormulaR1C1 = Mid(TextLine, 58, 8)
End If

If i = 12 Then
    Range("C12").Select
    ActiveCell.FormulaR1C1 = Mid(TextLine, 28, 8)
End If
If i = 12 Then
    Range("D12").Select
    ActiveCell.FormulaR1C1 = Mid(TextLine, 42, 8)
End If
If i = 12 Then
    Range("E12").Select
    ActiveCell.FormulaR1C1 = Mid(TextLine, 58, 8)
End If
 
If i = 14 Then
    Range("C13").Select
    ActiveCell.FormulaR1C1 = Mid(TextLine, 28, 8)
End If
If i = 14 Then
    Range("D13").Select
    ActiveCell.FormulaR1C1 = Mid(TextLine, 42, 8)
End If
If i = 14 Then
    Range("E13").Select
    ActiveCell.FormulaR1C1 = Mid(TextLine, 58, 8)
End If




i = i + 1
Loop
Close #1
Exit Sub
meeee:
msgbox "Результат расчета №2 отсутствует"
End Sub
Nicolas_46 вне форума Ответить с цитированием
Старый 15.02.2013, 17:14   #14
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Проверил - да нет, всё что задано удаляет...

Вы ведь точно скопировали код из http://www.programmersforum.ru/showt...ZAPAS%26lt%3B1
Путь только подменили.

Нужно видеть текстовый файл - может там нет больше разделителя строк vbCrLf
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 16.02.2013, 15:03   #15
Nicolas_46
Пользователь
 
Регистрация: 13.09.2012
Сообщений: 53
По умолчанию

Скопировал все верно, если запускать макрос с кнопки, все работает, но если макрос запускается в ходе выполнения первого кода то не работает удаление строк. Не понимаю почему так происходит(
Nicolas_46 вне форума Ответить с цитированием
Старый 16.02.2013, 16:06   #16
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Получается что не срабатывает строка
Код:
Set outFile = fso.CreateTextFile(ThisWorkbook.Path & "\rez02.re")
Не вижу причины - раз считывание происходит, то и создание нового файла должно происходить.
Или оно пишет на выход все строки - проверьте, срабатывает ли строка
Код:
 outFile.WriteLine arrstr(i)
Если да - то нужно смотреть, что там в файле, что в пустых с виду строках и в той, которая должна выкидываться. Думаю, там что-то изменилось.
webmoney: E265281470651 Z422237915069 R418926282008

Последний раз редактировалось Hugo121; 16.02.2013 в 16:41.
Hugo121 вне форума Ответить с цитированием
Старый 16.02.2013, 17:21   #17
Nicolas_46
Пользователь
 
Регистрация: 13.09.2012
Сообщений: 53
По умолчанию

А может быть такой вариант, что какие-нибудь запушенные функции первого кода не дают запускаться функциям из второго.

потому что когда програмно последовательно запускаю оба макроса то работает нормально.
Код:
Call Лист4.Расчетное_исследование
Call Лист4.Блок_2
сам файл проверил, он в порядке.
Nicolas_46 вне форума Ответить с цитированием
Старый 16.02.2013, 17:31   #18
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Попробуйте заменить outFile на ts
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Время запуска программы Larboss Общие вопросы Delphi 5 06.01.2012 23:44
Кнопка запуска программы Vitalya_1993 Помощь студентам 1 14.12.2011 10:48
макрос для запуска ряда других макросов caute Microsoft Office Word 4 19.09.2011 14:12
Логирование запуска программы Dima DDM Общие вопросы Delphi 0 05.08.2011 15:48
Не срабатывает макрос... Busine2009 Фриланс 6 14.08.2009 10:14