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

Вход

Регистрация

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

 

= Мир MS Excel/Обработка одного файла вторым - Мир MS Excel

Старая форма входа
  • Страница 1 из 2
  • 1
  • 2
  • »
Модератор форума: китин, _Boroda_  
Обработка одного файла вторым
emkub Дата: Среда, 08.07.2015, 17:43 | Сообщение № 1
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 171
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Здравствуйте.
Помогите пожалуйста решить такую дилемму:
Всё началось, когда Excel-ю вздумалось иногда запускаться несколькими процессами.
Есть два файла "ПЕРВЫЙ.xlsm" и "ВТОРОЙ.csv". В "ПЕРВОМ" хранится список телефонов и макрос для удаления этих же телефонов из "ВТОРОГО". "ВТОРОЙ" каждый день создаётся заново.
Если оба файла открыты под ОДНИМ ПРОЦЕССОМ Excel, то можно запустить макрос прямо из "ВТОРОГО" файла - И ВСЁ РАБОТАЕТ!
Если они открыты в ДВУХ ПРОЦЕССАХ Excel, то во "ВТОРОМ" макрос из "ПЕРВОГО"не отображается. - Это загадка вообще из ряда вон! Никак не пойму, почему то один процесс, то два процесса. В реестре везде указано "открывать одним процессом".
При сохранении макроса в Личной книге две проблемы:
1) иногда пишет, что файл "Personal.xlsb" закрыть для редактирования (хотя оно разрешено).
2) не получается указать ПРАВИЛЬНЫЙ путь к "ПЕРВОМУ" файлу.

Установлен Office 2010. В 2013-м всё запускается одним процессом, но файлы обрабатываются в разы медленнее!
Если нужно прикрепить файлы - скажите.
Буду благодарен любой помощи.
 
Ответить
СообщениеЗдравствуйте.
Помогите пожалуйста решить такую дилемму:
Всё началось, когда Excel-ю вздумалось иногда запускаться несколькими процессами.
Есть два файла "ПЕРВЫЙ.xlsm" и "ВТОРОЙ.csv". В "ПЕРВОМ" хранится список телефонов и макрос для удаления этих же телефонов из "ВТОРОГО". "ВТОРОЙ" каждый день создаётся заново.
Если оба файла открыты под ОДНИМ ПРОЦЕССОМ Excel, то можно запустить макрос прямо из "ВТОРОГО" файла - И ВСЁ РАБОТАЕТ!
Если они открыты в ДВУХ ПРОЦЕССАХ Excel, то во "ВТОРОМ" макрос из "ПЕРВОГО"не отображается. - Это загадка вообще из ряда вон! Никак не пойму, почему то один процесс, то два процесса. В реестре везде указано "открывать одним процессом".
При сохранении макроса в Личной книге две проблемы:
1) иногда пишет, что файл "Personal.xlsb" закрыть для редактирования (хотя оно разрешено).
2) не получается указать ПРАВИЛЬНЫЙ путь к "ПЕРВОМУ" файлу.

Установлен Office 2010. В 2013-м всё запускается одним процессом, но файлы обрабатываются в разы медленнее!
Если нужно прикрепить файлы - скажите.
Буду благодарен любой помощи.

Автор - emkub
Дата добавления - 08.07.2015 в 17:43
KSV Дата: Среда, 08.07.2015, 17:54 | Сообщение № 2
Группа: Друзья
Ранг: Ветеран
Сообщений: 770
Репутация: 255 ±
Замечаний: 0% ±

Excel 2013
Проверьте, возможно он запускается не просто разными процессами, но еще и под разными пользователями (каждый процесс под своим).
Или один процесс открыт из explorer, а другой через svchost (например, из под другой программы)...

Если они открыты в ДВУХ ПРОЦЕССАХ Excel, то во "ВТОРОМ" макрос из "ПЕРВОГО"не отображается. - Это загадка вообще из ряда вон!

Это нормально, т.к. у них разные Application

[p.s.]Какая у вас операционка?[/p.s.]


KSV.VBA@gmail.com
Яндекс.Деньги: 410011921213333


Сообщение отредактировал KSV - Среда, 08.07.2015, 18:02
 
Ответить
СообщениеПроверьте, возможно он запускается не просто разными процессами, но еще и под разными пользователями (каждый процесс под своим).
Или один процесс открыт из explorer, а другой через svchost (например, из под другой программы)...

Если они открыты в ДВУХ ПРОЦЕССАХ Excel, то во "ВТОРОМ" макрос из "ПЕРВОГО"не отображается. - Это загадка вообще из ряда вон!

Это нормально, т.к. у них разные Application

[p.s.]Какая у вас операционка?[/p.s.]

Автор - KSV
Дата добавления - 08.07.2015 в 17:54
emkub Дата: Среда, 08.07.2015, 18:05 | Сообщение № 3
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 171
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
ОС - Win_7_32 bit
Проверил, оба запускаются одним пользователем (имя учётной записи). Оба файла запускаются программой nnCron.
Возможно ли из "ПЕРВОГО" запустить "ВТОРОЙ", чтобы макрос выполнялся во "ВТОРОМ"? Будут ли они в этом случае запущены ОДНИМ процессом?


Сообщение отредактировал emkub - Среда, 08.07.2015, 18:19
 
Ответить
СообщениеОС - Win_7_32 bit
Проверил, оба запускаются одним пользователем (имя учётной записи). Оба файла запускаются программой nnCron.
Возможно ли из "ПЕРВОГО" запустить "ВТОРОЙ", чтобы макрос выполнялся во "ВТОРОМ"? Будут ли они в этом случае запущены ОДНИМ процессом?

Автор - emkub
Дата добавления - 08.07.2015 в 18:05
KSV Дата: Среда, 08.07.2015, 19:54 | Сообщение № 4
Группа: Друзья
Ранг: Ветеран
Сообщений: 770
Репутация: 255 ±
Замечаний: 0% ±

Excel 2013
У вас происходит именно то, о чем я писал в пред посте.
nnCron у вас выполняется как служба, и процессы он создает через службу DcomLaunch (Модуль запуска процессов DCOM-сервера) (процесс svchost), соответственно, оба процесса будут созданы как 2 разных Excel.Application, поэтому книги открытые в них не видят друг-друга.

Возможно ли из "ПЕРВОГО" запустить "ВТОРОЙ", чтобы макрос выполнялся во "ВТОРОМ"?

Да, и так можно (хотя описанное выше, это не и первого второй, а оба из другого процесса, из крона)
Попробуйте запустить вложенный файл... Он запустится из explorer, и создаст 2 разных процесса (через svchost), и книги, открытые в этих 3-х Excel.Application, друг-друга видеть не будут. И если закрыть первый Excel (который был открыт из explorer), а затем еще раз открыть Excel (например, через ярлык), то снова создастся новый (3-й) Excel.Application, в иерархии процесса explorer, несмотря на то, что 2 процесса Excel.Application уже открыты через DcomLaunch.
К сообщению приложен файл: TestProc.xlsm (12.4 Kb)


KSV.VBA@gmail.com
Яндекс.Деньги: 410011921213333
 
Ответить
СообщениеУ вас происходит именно то, о чем я писал в пред посте.
nnCron у вас выполняется как служба, и процессы он создает через службу DcomLaunch (Модуль запуска процессов DCOM-сервера) (процесс svchost), соответственно, оба процесса будут созданы как 2 разных Excel.Application, поэтому книги открытые в них не видят друг-друга.

Возможно ли из "ПЕРВОГО" запустить "ВТОРОЙ", чтобы макрос выполнялся во "ВТОРОМ"?

Да, и так можно (хотя описанное выше, это не и первого второй, а оба из другого процесса, из крона)
Попробуйте запустить вложенный файл... Он запустится из explorer, и создаст 2 разных процесса (через svchost), и книги, открытые в этих 3-х Excel.Application, друг-друга видеть не будут. И если закрыть первый Excel (который был открыт из explorer), а затем еще раз открыть Excel (например, через ярлык), то снова создастся новый (3-й) Excel.Application, в иерархии процесса explorer, несмотря на то, что 2 процесса Excel.Application уже открыты через DcomLaunch.

Автор - KSV
Дата добавления - 08.07.2015 в 19:54
emkub Дата: Среда, 08.07.2015, 22:22 | Сообщение № 5
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 171
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Да уж...
Подскажите тогда пожалуйста, как реализовать такую схему:
"Первый" открывается стандартным планировщиком и в 12:00.00 запускает "ВТОРОЙ" файл. И во "ВТОРОМ" запускается "макрос_1", который сохранён в "ПЕРВОМ"
Надеюсь при таком раскладе, работать корректно.
 
Ответить
СообщениеДа уж...
Подскажите тогда пожалуйста, как реализовать такую схему:
"Первый" открывается стандартным планировщиком и в 12:00.00 запускает "ВТОРОЙ" файл. И во "ВТОРОМ" запускается "макрос_1", который сохранён в "ПЕРВОМ"
Надеюсь при таком раскладе, работать корректно.

Автор - emkub
Дата добавления - 08.07.2015 в 22:22
emkub Дата: Среда, 08.07.2015, 22:47 | Сообщение № 6
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 171
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Вроде разобрался... Проверяю.
 
Ответить
СообщениеВроде разобрался... Проверяю.

Автор - emkub
Дата добавления - 08.07.2015 в 22:47
KSV Дата: Среда, 08.07.2015, 23:10 | Сообщение № 7
Группа: Друзья
Ранг: Ветеран
Сообщений: 770
Репутация: 255 ±
Замечаний: 0% ±

Excel 2013
А зачем вам именно такая схема запуска?
Я бы, все-таки, сделал по-другому...
При открытии "ПЕРВЫЙ.xlsm" сразу запускал бы "макрос_1", в котором открывал "ВТОРОЙ.csv" и обрабатывал бы.
Или, если открывать "ПЕРВЫЙ.xlsm" нужно раньше, а обрабатывать "ВТОРОЙ.csv" ровно в 12:00, можно при открытии "ПЕРВЫЙ.xlsm" устанавливать таймер на запуск "макрос_1".[vba]
Код
Private Sub Workbook_Open()
      Application.OnTime #12:00:00 PM#, "макрос_1"
End Sub
[/vba]


KSV.VBA@gmail.com
Яндекс.Деньги: 410011921213333


Сообщение отредактировал KSV - Среда, 08.07.2015, 23:11
 
Ответить
СообщениеА зачем вам именно такая схема запуска?
Я бы, все-таки, сделал по-другому...
При открытии "ПЕРВЫЙ.xlsm" сразу запускал бы "макрос_1", в котором открывал "ВТОРОЙ.csv" и обрабатывал бы.
Или, если открывать "ПЕРВЫЙ.xlsm" нужно раньше, а обрабатывать "ВТОРОЙ.csv" ровно в 12:00, можно при открытии "ПЕРВЫЙ.xlsm" устанавливать таймер на запуск "макрос_1".[vba]
Код
Private Sub Workbook_Open()
      Application.OnTime #12:00:00 PM#, "макрос_1"
End Sub
[/vba]

Автор - KSV
Дата добавления - 08.07.2015 в 23:10
emkub Дата: Среда, 08.07.2015, 23:21 | Сообщение № 8
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 171
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Только что так и пытался сделать. Но при открытии "ВТОРОГО.CSV" макросом, он открывается некорректно (просто в строку через разделитель ;). А при открытии любым другим способом - нормально.
Прямо засада какая-то!
 
Ответить
СообщениеТолько что так и пытался сделать. Но при открытии "ВТОРОГО.CSV" макросом, он открывается некорректно (просто в строку через разделитель ;). А при открытии любым другим способом - нормально.
Прямо засада какая-то!

Автор - emkub
Дата добавления - 08.07.2015 в 23:21
emkub Дата: Среда, 08.07.2015, 23:27 | Сообщение № 9
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 171
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Наверное нужно поэкспериментировать с открытием-пересохранением-закрытием
 
Ответить
СообщениеНаверное нужно поэкспериментировать с открытием-пересохранением-закрытием

Автор - emkub
Дата добавления - 08.07.2015 в 23:27
KSV Дата: Среда, 08.07.2015, 23:30 | Сообщение № 10
Группа: Друзья
Ранг: Ветеран
Сообщений: 770
Репутация: 255 ±
Замечаний: 0% ±

Excel 2013
Хоть покажите, как открываете... :)
Попробуйте так:[vba]
Код
Workbooks.Open("Диск:\Полный путь\ВТОРОЙ.csv", False, True, Local:=True)
[/vba]


KSV.VBA@gmail.com
Яндекс.Деньги: 410011921213333
 
Ответить
СообщениеХоть покажите, как открываете... :)
Попробуйте так:[vba]
Код
Workbooks.Open("Диск:\Полный путь\ВТОРОЙ.csv", False, True, Local:=True)
[/vba]

Автор - KSV
Дата добавления - 08.07.2015 в 23:30
emkub Дата: Среда, 08.07.2015, 23:37 | Сообщение № 11
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 171
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Я открываю так:
[vba]
Код
Workbooks.Open Filename:="D:\6_vbn\1_Киев\базы\" & Format$(Date - 1, "mm\\dd\\dd.mm.yy") & ".csv"
[/vba]

Попробую по-вашему.


Сообщение отредактировал Manyasha - Пятница, 10.07.2015, 11:07
 
Ответить
СообщениеЯ открываю так:
[vba]
Код
Workbooks.Open Filename:="D:\6_vbn\1_Киев\базы\" & Format$(Date - 1, "mm\\dd\\dd.mm.yy") & ".csv"
[/vba]

Попробую по-вашему.

Автор - emkub
Дата добавления - 08.07.2015 в 23:37
emkub Дата: Среда, 08.07.2015, 23:46 | Сообщение № 12
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 171
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Неа, вообще не идёт...
 
Ответить
СообщениеНеа, вообще не идёт...

Автор - emkub
Дата добавления - 08.07.2015 в 23:46
KSV Дата: Среда, 08.07.2015, 23:58 | Сообщение № 13
Группа: Друзья
Ранг: Ветеран
Сообщений: 770
Репутация: 255 ±
Замечаний: 0% ±

Excel 2013
вообще не идёт

это как?
что пишет?

Может вы просто не правильный путь задаете?
логично предположить, что путь у вас: D:\6_vbn\1_Киев\базы\2015\07\08\08.07.15.csv
тогда надо так[vba]
Код
Workbooks.Open("D:\6_vbn\1_Киев\базы\" & Format$(Date - 1, "yyyy\\mm\\dd\\dd.mm.yy") & ".csv", False, True, Local:=True)
[/vba]

[p.s.]вот этот ваш файл у меня нормально разносится по столбцам[/p.s.]
К сообщению приложен файл: 08.07.15.csv (29.4 Kb)


KSV.VBA@gmail.com
Яндекс.Деньги: 410011921213333


Сообщение отредактировал KSV - Четверг, 09.07.2015, 00:23
 
Ответить
Сообщение
вообще не идёт

это как?
что пишет?

Может вы просто не правильный путь задаете?
логично предположить, что путь у вас: D:\6_vbn\1_Киев\базы\2015\07\08\08.07.15.csv
тогда надо так[vba]
Код
Workbooks.Open("D:\6_vbn\1_Киев\базы\" & Format$(Date - 1, "yyyy\\mm\\dd\\dd.mm.yy") & ".csv", False, True, Local:=True)
[/vba]

[p.s.]вот этот ваш файл у меня нормально разносится по столбцам[/p.s.]

Автор - KSV
Дата добавления - 08.07.2015 в 23:58
emkub Дата: Четверг, 09.07.2015, 14:10 | Сообщение № 14
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 171
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
У меня нет папки "2015"
Ошибка.
Пишет:
Expected:=
 
Ответить
СообщениеУ меня нет папки "2015"
Ошибка.
Пишет:
Expected:=

Автор - emkub
Дата добавления - 09.07.2015 в 14:10
AndreTM Дата: Четверг, 09.07.2015, 15:30 | Сообщение № 15
Группа: Друзья
Ранг: Старожил
Сообщений: 1762
Репутация: 500 ±
Замечаний: 0% ±

2003 & 2010
Пишет:
Expected:=

Вы уж определитесь тогда, как вы вызываете Workbooks.Open - как процедуру или как функцию.
Именованные параметры (Local:=True) можно применять только при "процедурном" вызове (без скобок), и тогда ВСЕ параметры надо вызывать как именованные - FileName:=..., ReadOnly:=True, ... Либо вы вызываете как функцию (чтобы возвратить объект - открытую книгу), и тогда в скобках надо перечислить ВСЕ параметры до необходимого последнего опционального, оставляя пропуски на местах опциональных с дефолтными значениями: ("FileName", False, True, , , , , , , , , , , True)


Skype: andre.tm.007
Donate: Qiwi: 9517375010
 
Ответить
Сообщение
Пишет:
Expected:=

Вы уж определитесь тогда, как вы вызываете Workbooks.Open - как процедуру или как функцию.
Именованные параметры (Local:=True) можно применять только при "процедурном" вызове (без скобок), и тогда ВСЕ параметры надо вызывать как именованные - FileName:=..., ReadOnly:=True, ... Либо вы вызываете как функцию (чтобы возвратить объект - открытую книгу), и тогда в скобках надо перечислить ВСЕ параметры до необходимого последнего опционального, оставляя пропуски на местах опциональных с дефолтными значениями: ("FileName", False, True, , , , , , , , , , , True)

Автор - AndreTM
Дата добавления - 09.07.2015 в 15:30
emkub Дата: Четверг, 09.07.2015, 15:46 | Сообщение № 16
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 171
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
как процедуру или как функцию.

В чём у них будет разница?

Правильно ли я понял? [vba]
Код
Workbooks.Open("D:\6_vbn\1_Êèåâ\áàçû\" & Format$(Date - 1, "mm\\dd\\dd.mm.yy") & ".csv", False, True, , , , , , , , , , , Local:=True)
[/vba]
[moder]Оформляйте коды тегами (кнопка #). И меняйте раскладку на русскую перед копированием, чтобы кодировка не слетала.
Последний раз за Вами поправляю![/moder]


Сообщение отредактировал Manyasha - Пятница, 10.07.2015, 12:23
 
Ответить
Сообщение
как процедуру или как функцию.

В чём у них будет разница?

Правильно ли я понял? [vba]
Код
Workbooks.Open("D:\6_vbn\1_Êèåâ\áàçû\" & Format$(Date - 1, "mm\\dd\\dd.mm.yy") & ".csv", False, True, , , , , , , , , , , Local:=True)
[/vba]
[moder]Оформляйте коды тегами (кнопка #). И меняйте раскладку на русскую перед копированием, чтобы кодировка не слетала.
Последний раз за Вами поправляю![/moder]

Автор - emkub
Дата добавления - 09.07.2015 в 15:46
RAN Дата: Четверг, 09.07.2015, 16:40 | Сообщение № 17
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
Не
[vba]
Код
Local:=True
[/vba] а
[vba]
Код
True
[/vba]
в нужном месте.


Быть или не быть, вот в чем загвоздка!
 
Ответить
СообщениеНе
[vba]
Код
Local:=True
[/vba] а
[vba]
Код
True
[/vba]
в нужном месте.

Автор - RAN
Дата добавления - 09.07.2015 в 16:40
emkub Дата: Четверг, 09.07.2015, 17:42 | Сообщение № 18
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 171
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Смотрите. Вот такая вот фигня:
Workbook.Open Filename:= "..." - открывает файл *.csv одним процессом, НО, в строку с ";"-разделителем ячеек
Shell Application.Paht & "\Excel.exe D:\..." - открывает файл *.csv как положено, НО, ВТОРЫМ процессом.

А нужно сделать так, чтобы он открывался как положено И одним процессом...
Прикрепляю оригинальный файл.
К сообщению приложен файл: 09.07.15.csv (29.3 Kb)
 
Ответить
СообщениеСмотрите. Вот такая вот фигня:
Workbook.Open Filename:= "..." - открывает файл *.csv одним процессом, НО, в строку с ";"-разделителем ячеек
Shell Application.Paht & "\Excel.exe D:\..." - открывает файл *.csv как положено, НО, ВТОРЫМ процессом.

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

Автор - emkub
Дата добавления - 09.07.2015 в 17:42
RAN Дата: Пятница, 10.07.2015, 12:20 | Сообщение № 19
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
Да нормально открывается
[vba]
Код
Sub qq()
Dim wb As Workbook
Set wb = Workbooks.Open("C:\Users\OFIS\Documents\ЗагрузкиMaxthon\09.07.15" & ".csv", False, True, , , , , , , , , , , Local:=True)
End Sub
[/vba]
и так тоже
[vba]
Код
Sub qq()
Dim wb As Workbook
Set wb = Workbooks.Open("C:\Users\OFIS\Documents\ЗагрузкиMaxthon\09.07.15" & ".csv", False, True, , , , , , , , , , , True)
End Sub
[/vba]


Быть или не быть, вот в чем загвоздка!

Сообщение отредактировал RAN - Пятница, 10.07.2015, 12:22
 
Ответить
СообщениеДа нормально открывается
[vba]
Код
Sub qq()
Dim wb As Workbook
Set wb = Workbooks.Open("C:\Users\OFIS\Documents\ЗагрузкиMaxthon\09.07.15" & ".csv", False, True, , , , , , , , , , , Local:=True)
End Sub
[/vba]
и так тоже
[vba]
Код
Sub qq()
Dim wb As Workbook
Set wb = Workbooks.Open("C:\Users\OFIS\Documents\ЗагрузкиMaxthon\09.07.15" & ".csv", False, True, , , , , , , , , , , True)
End Sub
[/vba]

Автор - RAN
Дата добавления - 10.07.2015 в 12:20
emkub Дата: Пятница, 10.07.2015, 12:46 | Сообщение № 20
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 171
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Перепроверю и отпишусь
 
Ответить
СообщениеПерепроверю и отпишусь

Автор - emkub
Дата добавления - 10.07.2015 в 12:46
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск:

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