Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Запустить процедуру в другом документе - Мир MS Excel

Регистрация · Логин: · Пароль: · · Забыли пароль?
Страница 1 из 11
Модератор форума: _Boroda_, Pelena, Manyasha, SLAVICK 
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Запустить процедуру в другом документе (Макросы/Sub)
Запустить процедуру в другом документе
ant6729 Дата: Понедельник, 12.02.2018, 18:53 | Сообщение № 1
Группа: Проверенные
Ранг: Обитатель
Сообщений: 414
Репутация: -6 ±
Замечаний: 60% ±

Excel 2010
Всем привет! Вроде, знаю как, было похожее, но не понимаю, почему не происходит выполнение процедуры. Вот мой кот

[vba]
Код
Sub Dailyreport()
    Dim wb_ As Workbook
    Application.ScreenUpdating = False
    fp_ = "\\Вася\Петя\Катя\1\"
    fn_ = Dir(fp_ & "*.xls*", vbNormal)
    On Error Resume Next
    Do While fn_ <> ""
        Set wb_ = GetObject(fp_ & fn_)
    With wb_.Sheets("Sheet1")
        Call luboi ' здесь не понимаю, почему процедура запускается на листе, из которого я запускаю процедуру. А не в файлах той директории, которую я указываю.
        wb_.Close False
        fn_ = Dir()
    Loop
End Sub
[/vba]

Еще момент, документ, на котором должен запускаться код с 97-2003 года (динозавр какой-то) и выгружается из 1с7 в виде, где нет листа. То есть, если "залезть в vba " то он там есть, как лист1(sheet1)
Но в самой книге не видно. Что за ересь...

Подозреваю, что метод не тот, типа... GetObject а мне просто нужно Open
Не знаю, прошу подсказать


Сообщение отредактировал ant6729 - Понедельник, 12.02.2018, 18:53
 
Ответить
СообщениеВсем привет! Вроде, знаю как, было похожее, но не понимаю, почему не происходит выполнение процедуры. Вот мой кот

[vba]
Код
Sub Dailyreport()
    Dim wb_ As Workbook
    Application.ScreenUpdating = False
    fp_ = "\\Вася\Петя\Катя\1\"
    fn_ = Dir(fp_ & "*.xls*", vbNormal)
    On Error Resume Next
    Do While fn_ <> ""
        Set wb_ = GetObject(fp_ & fn_)
    With wb_.Sheets("Sheet1")
        Call luboi ' здесь не понимаю, почему процедура запускается на листе, из которого я запускаю процедуру. А не в файлах той директории, которую я указываю.
        wb_.Close False
        fn_ = Dir()
    Loop
End Sub
[/vba]

Еще момент, документ, на котором должен запускаться код с 97-2003 года (динозавр какой-то) и выгружается из 1с7 в виде, где нет листа. То есть, если "залезть в vba " то он там есть, как лист1(sheet1)
Но в самой книге не видно. Что за ересь...

Подозреваю, что метод не тот, типа... GetObject а мне просто нужно Open
Не знаю, прошу подсказать

Автор - ant6729
Дата добавления - 12.02.2018 в 18:53
_Igor_61 Дата: Понедельник, 12.02.2018, 20:37 | Сообщение № 2
Группа: Проверенные
Ранг: Обитатель
Сообщений: 268
Репутация: 47 ±
Замечаний: 20% ±

Excel 2007
если "залезть в vba " то он там есть, как лист1(sheet1)
Но в самой книге не видно

Посмотрите в редакторе VBA в свойствах листа - Visible
 
Ответить
Сообщение
если "залезть в vba " то он там есть, как лист1(sheet1)
Но в самой книге не видно

Посмотрите в редакторе VBA в свойствах листа - Visible

Автор - _Igor_61
Дата добавления - 12.02.2018 в 20:37
Pelena Дата: Понедельник, 12.02.2018, 20:45 | Сообщение № 3
Группа: Модераторы
Ранг: Местный житель
Сообщений: 12335
Репутация: 2715 ±
Замечаний: 0% ±

Excel 2010, 2016 & Mac Excel
Но в самой книге не видно

почитайте здесь


"Черт возьми, Холмс! Но как??!!"
ЯД 41001765434816
 
Ответить
Сообщение
Но в самой книге не видно

почитайте здесь

Автор - Pelena
Дата добавления - 12.02.2018 в 20:45
ant6729 Дата: Понедельник, 12.02.2018, 21:11 | Сообщение № 4
Группа: Проверенные
Ранг: Обитатель
Сообщений: 414
Репутация: -6 ±
Замечаний: 60% ±

Excel 2010
Спасибо) _Igor_61, Pelena!

Вообщем)

Подобрался я близко, но

[vba]
Код
Sub hhh ()

Dim wb As Workbook
Dim myPath As String
Dim myFile As String
Dim myExtension As String
Application.ScreenUpdating = False
Application.EnableEvents = False
Application.Calculation = xlCalculationManual

myPath = "G:\1\"
myExtension = "*.xls*"
myFile = Dir(myPath & myExtension)
  
  Do While myFile <> ""
      
Set wb = Workbooks.Open(Filename:=myPath & myFile)
      
wb.Worksheets(1).Select

On Error Resume Next

wb.Worksheets(1).Cells(3, 5).Value = 345
Call aaa
wb.Close SaveChanges:=True
      
myFile = Dir

Loop

ResetSettings:
    Application.EnableEvents = True
    Application.Calculation = xlCalculationAutomatic
    Application.ScreenUpdating = True

End Sub
[/vba]

Постоянно открывает и закрывает? файлы из директории...не сохраняя с результатами... хотя же вроде... [vba]
Код
wb.Close SaveChanges:=True
[/vba]
Подскажите, пожалуйста, как.. дожать...


Сообщение отредактировал ant6729 - Понедельник, 12.02.2018, 21:15
 
Ответить
СообщениеСпасибо) _Igor_61, Pelena!

Вообщем)

Подобрался я близко, но

[vba]
Код
Sub hhh ()

Dim wb As Workbook
Dim myPath As String
Dim myFile As String
Dim myExtension As String
Application.ScreenUpdating = False
Application.EnableEvents = False
Application.Calculation = xlCalculationManual

myPath = "G:\1\"
myExtension = "*.xls*"
myFile = Dir(myPath & myExtension)
  
  Do While myFile <> ""
      
Set wb = Workbooks.Open(Filename:=myPath & myFile)
      
wb.Worksheets(1).Select

On Error Resume Next

wb.Worksheets(1).Cells(3, 5).Value = 345
Call aaa
wb.Close SaveChanges:=True
      
myFile = Dir

Loop

ResetSettings:
    Application.EnableEvents = True
    Application.Calculation = xlCalculationAutomatic
    Application.ScreenUpdating = True

End Sub
[/vba]

Постоянно открывает и закрывает? файлы из директории...не сохраняя с результатами... хотя же вроде... [vba]
Код
wb.Close SaveChanges:=True
[/vba]
Подскажите, пожалуйста, как.. дожать...

Автор - ant6729
Дата добавления - 12.02.2018 в 21:11
_Igor_61 Дата: Понедельник, 12.02.2018, 21:31 | Сообщение № 5
Группа: Проверенные
Ранг: Обитатель
Сообщений: 268
Репутация: 47 ±
Замечаний: 20% ±

Excel 2007
Может, надежней сразу в макросе "ааа" добавить: "ActiveWorkbook.Save" ?
 
Ответить
СообщениеМожет, надежней сразу в макросе "ааа" добавить: "ActiveWorkbook.Save" ?

Автор - _Igor_61
Дата добавления - 12.02.2018 в 21:31
ant6729 Дата: Понедельник, 12.02.2018, 21:54 | Сообщение № 6
Группа: Проверенные
Ранг: Обитатель
Сообщений: 414
Репутация: -6 ±
Замечаний: 60% ±

Excel 2010
Да, не...цикл все равно опять открывает и выполняет процедуру aaa пока не нажмешь escape

Я не понимаю с[vba]
Код
<> ""
[/vba]

Почему-то по кругу идет...

Вообщем, у меня как всегда...

Заделал я так, с циклом do не понял...
А так хоть что-то[vba]
Код


Sub AttachFile_test()
Filenames = GetFilePath()
End Sub
Function GetFilePath(Optional ByVal Title As String = "", _
Optional ByVal InitialPath As String = "\", _
Optional ByVal FilterDescription As String = "", _
Optional ByVal FilterExtention As String = "*.*") As String
On Error Resume Next

With Application.FileDialog(msoFileDialogOpen)
.ButtonName = "Âûáðàòü": .Title = Title:
.InitialFileName = GetSetting(Application.Name, "GetFilePath", "folder", InitialPath)
.Filters.Clear: .Filters.Add FilterDescription, FilterExtention
.AllowMultiSelect = True

If .Show <> -1 Then Exit Function

For Each vrtSelectedItem In .SelectedItems

folder$ = Left(.SelectedItems(1), InStrRev(.SelectedItems(1), "\"))
SaveSetting Application.Name, "GetFilePath", "folder", folder$

Set wb = Workbooks.Open(vrtSelectedItem)
wb.Worksheets(1).Select
On Error Resume Next
Call ob
wb.Close SaveChanges:=True

Next vrtSelectedItem

End With
End Function
[/vba]
Потом надо будет додумать...как время будет


Сообщение отредактировал ant6729 - Понедельник, 12.02.2018, 22:02
 
Ответить
СообщениеДа, не...цикл все равно опять открывает и выполняет процедуру aaa пока не нажмешь escape

Я не понимаю с[vba]
Код
<> ""
[/vba]

Почему-то по кругу идет...

Вообщем, у меня как всегда...

Заделал я так, с циклом do не понял...
А так хоть что-то[vba]
Код


Sub AttachFile_test()
Filenames = GetFilePath()
End Sub
Function GetFilePath(Optional ByVal Title As String = "", _
Optional ByVal InitialPath As String = "\", _
Optional ByVal FilterDescription As String = "", _
Optional ByVal FilterExtention As String = "*.*") As String
On Error Resume Next

With Application.FileDialog(msoFileDialogOpen)
.ButtonName = "Âûáðàòü": .Title = Title:
.InitialFileName = GetSetting(Application.Name, "GetFilePath", "folder", InitialPath)
.Filters.Clear: .Filters.Add FilterDescription, FilterExtention
.AllowMultiSelect = True

If .Show <> -1 Then Exit Function

For Each vrtSelectedItem In .SelectedItems

folder$ = Left(.SelectedItems(1), InStrRev(.SelectedItems(1), "\"))
SaveSetting Application.Name, "GetFilePath", "folder", folder$

Set wb = Workbooks.Open(vrtSelectedItem)
wb.Worksheets(1).Select
On Error Resume Next
Call ob
wb.Close SaveChanges:=True

Next vrtSelectedItem

End With
End Function
[/vba]
Потом надо будет додумать...как время будет

Автор - ant6729
Дата добавления - 12.02.2018 в 21:54
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Запустить процедуру в другом документе (Макросы/Sub)
Страница 1 из 11
Поиск:

Яндекс цитирования
© 2010-2018 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!