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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 08.12.2013, 23:05   #1
meg8639
 
Регистрация: 23.09.2011
Сообщений: 8
По умолчанию Не использовать код при отсутствии файла

Добрый день,

Передо мной стоит следующая задача - применить ряд действий к каждому отчёту в директории, но в случае отсутствия такого отчёта применить данный блок задач ( код ) к следующему файлу.

Проблема текущая: код вместо того что бы начать применять к следующему файлу аналогичные действия код сначала на текущем файле осуществит дублирование ( из блока действий предназначенных для другого файла).

Как я понял проблема в том что я не правильно обозначил диапазон если ошибка и файла в указанной директории не существует, потому что он только пропускает сообщение об ошибке а как сделать что бы он пропускал блок действий предназначенный для этого файла . Например для файла АА1 было выполнено действие , а для файла АА2 - раз его нет то и действия ( весь блок) не надо производить на открытым файлом АА1 - может его просто закрывать - не знаю.

PHP код:
ChDir "C:\Отчёты"  
    
Workbooks.Open Filename:="C:\Отчёты\Отчёт ОСАГО.xls"  
    
On Error Resume Next  
    Workbooks
.Open Filename:="C:\агенты разнесение\АА1.xls"  
    
Rows("1:10").Select  
    Selection
.Delete Shift:=xlUp  
    ActiveWorkbook
.Save  
    Rows
("1:1").Select  
    Selection
.Insert Shift:=xlDownCopyOrigin:=xlFormatFromLeftOrAbove  
    Range
("M1").Select  
    ActiveCell
.FormulaR1C1 "Да"  
    
Rows("1:1").Select  
    Selection
.AutoFilter  
    ActiveSheet
.Range("$BChDir "C:\Отчёты"  
    Workbooks.Open Filename:="
C:\Отчёты\Отчёт ОСАГО.xls"  
    On Error Resume Next  
    Workbooks.Open Filename:="
C:\агенты разнесение\АА1.xls"  
    Rows("
1:10").Select  
    Selection.Delete Shift:=xlUp  
    ActiveWorkbook.Save  
    Rows("
1:1").Select  
    Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove  
    Range("
M1").Select  
    ActiveCell.FormulaR1C1 = "
Да"  
    Rows("
1:1").Select  
    Selection.AutoFilter  
    ActiveSheet.Range("
$B$1:$M$8").AutoFilter Field:=12, Criteria1:="Да"  
    ActiveWorkbook.Save  
    Range("
C1").Select  
    ActiveCell.FormulaR1C1 = "
Смышляев А.А."  
    ActiveWorkbook.Save  
    Dim WB As Workbook, Wb2  As Workbook  
    Dim Sh1 As Worksheet, Sh2 As Worksheet  
    Dim X As Range  
    Set WB = Workbooks("
АА1.xls")  
    Set Wb2 = Workbooks("
Отчёт ОСАГО.xls")  
    Set Sh1 = WB.Worksheets(1)  
    Set Sh2 = Wb2.Worksheets(1)  
    Dim lLastRow As Long  
    lLastRow = Sh1.Cells(Sh1.Rows.Count, 12).End(xlUp).Row  
    LastRow = lLastRow  
    Dim LastiRow As Long  
    LastiRow = Sh2.Cells(Rows.Count, 12).End(xlUp).Row  
    Sh1.Range("
M1:M" & LastRow).EntireRow.Copy Sh2.Cells(LastiRow + 1, 1)  
    If Not X Is Nothing Then  
    MsgBox " 
Строка " & X.Row & " Значение " & X.Value  
    End If  
    On Error Resume Next  
    Workbooks.Open Filename:="
C:\агенты разнесение\АА2.xls"  
    Rows("
1:10").Select  
    Selection.Delete Shift:=xlUp  
    ActiveWorkbook.Save  
    Rows("
1:1").Select  
    Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove  
    Range("
M1").Select  
    ActiveCell.FormulaR1C1 = "
Да"  
    Rows("
1:1").Select  
    Selection.AutoFilter  
    ActiveSheet.Range("
$B$1:$M$8").AutoFilter Field:=12, Criteria1:="Да"  
    ActiveWorkbook.Save  
    Range("
C1").Select  
    ActiveCell.FormulaR1C1 = "
Смышляев А.А."  
    ActiveWorkbook.Save  
    Set WB = Workbooks("
АА2.xls")  
    Set Wb2 = Workbooks("
Отчёт ОСАГО.xls")  
    Set Sh1 = WB.Worksheets(1)  
    Set Sh2 = Wb2.Worksheets(1)  
    lLastRow = Sh1.Cells(Sh1.Rows.Count, 12).End(xlUp).Row  
    LastRow = lLastRow  
    LastiRow = Sh2.Cells(Rows.Count, 12).End(xlUp).Row  
    Sh1.Range("
M1:M" & LastRow).EntireRow.Copy Sh2.Cells(LastiRow + 1, 1)  
    If Not X Is Nothing Then  
    MsgBox " 
Строка " & X.Row & " Значение " & X.Value  
    End If 
Помогите пожалуйста разобраться я пытаюсь написать код при котором в случае если файла нет в заданной директории то весь код не применяется до end if, а дальше опять если данного файла нет , то не применяется весь код, предназначенный для данного файла.

жду вашего совета, спасибо большое
meg8639 вне форума Ответить с цитированием
Старый 09.12.2013, 12:27   #2
Скрипт
Форумчанин
 
Регистрация: 24.12.2012
Сообщений: 776
По умолчанию

meg8639, самая первая строка кода не нужна, если Вы в коде указываете полное имя файла (полное имя - это путь и имя файла). Например, во второй строке Вы указываете полное имя "C:\Отчёты\Отчёт ОСАГО.xls".

Первая строка имела бы смыл, если бы Вы во второй строке вот так написали:
Workbooks.Open Filename:="Отчёт ОСАГО.xls"
Скрипт вне форума Ответить с цитированием
Старый 09.12.2013, 23:07   #3
tsap
Пользователь
 
Аватар для tsap
 
Регистрация: 17.05.2008
Сообщений: 33
По умолчанию

а конструкцию if FileExists не пробовали использовать? не подойдет?
вот тут почитайте:
http://msdn.microsoft.com/en-us/libr...(v=vs.90).aspx
tsap вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как переделать код чтоб использовать RGB цвета? Gyfmod Общие вопросы .NET 0 03.12.2012 21:20
Проблема в отсутствии задержки изображения wavstd Помощь студентам 2 26.06.2011 17:35
Сравнение производительности при наличиии и отсутствии распараллеливания tumanovalex C# (си шарп) 3 20.06.2011 14:52
Зависание программы при отсутствии подключения dolphin705 Работа с сетью в Delphi 0 17.01.2011 02:05
Почему _kbhit возвращает TRUE при отсутствии нажатий? Catharsis Общие вопросы C/C++ 3 01.08.2010 17:40