Страницы: 1
RSS
Как наладить связь книг в сетевой папке
 
Есть книга в сетевой папке, мы сейчас открываем 2 файла, один из которых Общая.xlsb, тогда формула работает.
=ЕСЛИ(C2="";ЕСЛИ(G5="";G4;ОКРУГЛ(G5*C3;2));ДВССЫЛ(АДРЕС(ПОИСКПОЗ(C2;[Общая.xlsb]Клиенты'!C:C;0);32;1;1;"[Общая.xlsb]Клиенты");ИСТИНА))

или проще
=ПОИСКПОЗ(C2;[Общая.xlsb]Клиенты'!C:C;0)

Как мне путь к книге прописать в макросе, чтобы использовать его в формуле?
По факту путь примерно такой: \\WinPC\Share\Общая.xlsb

Вопрос удален [МОДЕРАТОР]
Изменено: Dex - 28.11.2015 02:47:44
 
В прикрепленной книге посмотрите модуль ЭтаКнига, в этом модуле находится макрос и комментарий
 
Макрос посмотрел, я так понял она задает переменную равную книге, как мне ее в формуле применять? Напиши пример, с указанием листа Общей Книги.
 
Цитата
Dex написал: Пока хочу прописать макросом тупо открытие Общая при открытии другой книги
Вам и дали этот макрос для "тупо открытие". Вместо пути в файлу в нем надо указать свой путь.
Код
'Здесь укажите путь и имя общей книги
Const strFileName As String = "C:\Users\User\Desktop\Общая.xlsx"
Какую формулу Вы теперь от людей просите?
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
А почему тогда просто не
Код
Workbooks.Open(C:\Users\User\Desktop\Общая.xlsx)

Цитата
The_Prist написал: Какую формулу Вы теперь от людей просите?
Поэтому я и не понял что это за макрос такой, я подумал можно в формуле как то прописать...

Человек же не написал на какой вопрос он отвечает.
 
Цитата
Dex написал: Человек же не написал на какой вопрос он отвечает.
Понятно. Это человек теперь виноват. А Вы свое первое сообщение прочитайте и скажите - а был выбор на какой отвечать?
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Цитата
Dex написал:
А почему тогда просто не
можно просто сделать без переменной. Переменная нужна, чтобы управлять открытой книгой. Например, с помощью переменной можно закрыть книгу:
Код
bk.Close
 
Цитата
The_Prist написал: Понятно. Это человек теперь виноват. А Вы свое первое сообщение прочитайте и скажите - а был выбор на какой отвечать?
Да, заголовок темы с вопросом. А человек не виноват, я просто не понял о чем макрос, ответа никакого не было, просто написано
Цитата
Karataev написал:
В прикрепленной книге посмотрите модуль ЭтаКнига, в этом модуле находится макрос и комментарий
Он просто предлагает посмотреть, на вопрос не отвечает, а я чайник и мне пока тяжело по макросу точно понять для чего он и я никого не обвинял.
И если у Вас плохое настроение и Вы модератор, это не значит что можно придираться к словам и обвинять кого либо. Тут вполне вежливый разговор, просто налаживание коммуникации между людьми, один другого не понял, классическая ситуация, в ней нет ничего особенного, что могло бы дать повод учить меня общению. У Вас слишком ВЫСОКОМЕРНЫЙ форум. А вот советы полезные.
 
Цитата
Karataev написал: Переменная нужна, чтобы управлять открытой книгой. Например, с помощью переменной можно закрыть книгу:
Вот теперь понятно. Т.е. просто для удобства дальнейшего использования этой книги. Спасибо. Может тогда подскажите как мне при ее открытии вернуться назад к файлу в котором макрос.
Код
Windows("2.Общая.xlsb").Activate
не помогает :(
может с переменной поможет?
 
Цитата
Karataev написал:
можно просто сделать без переменной. Переменная нужна, чтобы управлять открытой книгой. Например, с помощью переменной можно закрыть книгу:
Сам макрос такой:
Код
Private Sub Workbook_Open()
    'Здесь укажите путь и имя общей книги
    Const strFileName As String = "C:\Users\User\Desktop\Общая.xlsx"
    Dim bk As Workbook
    Set bk = Workbooks.Open(strFileName)
End Sub

Вот мне не понятно, переменная не указана здесь... Точнее указанно что она открывает, т.е. bk = открытие книги, соответственно bk.close не заработает... или я что не так понимаю?
 
Ответ на пост #10.
Если макрос находится внутри какой-то книги, то можно использовать слово "ThisWorkbook". Оно означает книгу, в которой находится макрос.
Код
Private Sub Workbook_Open()
    'Здесь укажите путь и имя общей книги
    Const strFileName As String = "C:\Users\User\Desktop\Общая.xlsx"
    Dim bk As Workbook
    Set bk = Workbooks.Open(strFileName)
    ThisWorkbook.Activate
End Sub
Изменено: Karataev - 27.11.2015 12:00:58
 
Цитата
Dex написал: Вот мне не понятно, переменная не указана здесь...
не понятен Ваш вопрос, т.к. переменная "bk" указана. Переформулируйте Ваш вопрос.
 
Цитата
Dex написал: У Вас слишком ВЫСОКОМЕРНЫЙ форум
Во как...А мы и не в курсе. Это пятница так влияет?
Как скажите. Вы умеете четко и понятно задавать вопросы, чтобы потом вопрошать на какой из них был дан ответ. Мы высокомерные, потому что:
Цитата
The_Prist написал: Какую формулу Вы теперь от людей просите?
Удачи с подобным подходом.
Цитата
Dex написал: тогда подскажите как мне при ее открытии вернуться назад к файлу
Код
ThisWorkbook.Activate
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Цитата
The_Prist написал:
Во как...А мы и не в курсе. Это пятница так влияет?
Как скажите. Вы умеете четко и понятно задавать вопросы, чтобы потом вопрошать на какой из них был дан ответ. Мы высокомерные, потому что:
Вот, эти слова только подтверждают мои!
Цитата
Во как...А мы и не в курсе
- попытка юмора.
Цитата
Это пятница так влияет?
- не вижу связи.
Цитата
Как скажите. Вы умеете четко и понятно задавать вопросы, чтобы потом вопрошать на какой из них был дан ответ.
- сарказм и не уважение. Вопросы четко поставлены, их просто два.
Цитата
1. Как наладить связь книг в сетевой папке, Колхозный вариант есть, нужен человеческий
2. Пока хочу прописать макросом тупо открытие Общая при открытии другой книги, подскажите макрос?

Мы высокомерные, потому что, не вникнув в вопрос, даете ответ, причем адресованный другому человеку.
Изначально
Цитата
JayBhagavan написал:
2.6. Один вопрос - одна тема. Не следует в открываемой теме обозначать и задавать сразу несколько вопросов.
Соответственно тема и вопрос:
Цитата
Как наладить связь книг в сетевой папке, Колхозный вариант есть, нужен человеческий
Мой косяк, что не удалил второй вопрос сразу... Но человек уже ответил, я подумал что он ответил именно на первый вопрос (потому что я чайник и макросы пока читать не могу), от того и уточнял.  Все предельно ясно, причем человека я не обвинял, а просто задал вопрос.
Изменено: Dex - 27.11.2015 12:28:29
 
Цитата
The_Prist написал: 1ThisWorkbook.Activate
Спасибо!
 
Ну, это дело Ваше. Не буду дальше попытаться до Вас донести как Ваше первое сообщение читается и какой вопрос там на ум больше приходит - первый или второй. Считаете, что правильно - дело личное.

P.S. Именно поэтому я был против того, чтобы можно было редактировать свои сообщения более чем через 2 минуты после написания...Потому что становится непонятно кто чего когда написал и где чего исправил. Тема была создана больше недели назад, а последние правки в первое сообщение внесены менее часа назад...Это неправильно.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Цитата
The_Prist написал: Не буду дальше попытаться до Вас донести как Ваше первое сообщение читается и какой вопрос там на ум больше приходит - первый или второй.
Так вот JayBhagavan, донес предельно ясно. Правда по хорошему, нужно было отредактировать мое сообщение и вопрос сделать зачеркнутым

Цитата
The_Prist написал: Именно поэтому я был против того, чтобы можно было редактировать свои сообщения более чем через 2 минуты после написания...
По мне, не совсем правильное решение... Лучше Вам советую чтобы все изменения после 2-х минут сохранялись (серым цветом например) в теле сообщения, чтобы было видно, что и на что меняли.
Цитата
The_Prist написал: Тема была создана больше недели назад, а последние правки в первое сообщение внесены менее часа назад...Это неправильно.
Я правки то внес из-за неразберихи с вопросами... Поэтому это очень правильно... :)

З.Ы. Всем великодушно простите, я устроил из темы флуд... Честно, не специально... Наверно, все таки, пятница...
Изменено: Dex - 28.11.2015 02:46:32
 
Цитата
Karataev написал: Если макрос находится внутри какой-то книги, то можно использовать слово "ThisWorkbook".
Доходчиво, я понял, спасибо!

Цитата
The_Prist написал: ThisWorkbook.Activate
Блин, не работает... Открывается новая книга, и остается активной...  
 
Цитата
The_Prist написал:
ThisWorkbook.Activate
Блин, не работает... Открывается новая книга, и остается активной...  
 
Цитата
Dex написал:Это пятница так влияет?
- не вижу связи.
Цитата
Dex написал: Наверно, все таки, пятница...
:D
There is no knowledge that is not power
 
Цитата
Dex написал: Открывается новая книга, и остается активной
Приведите код полностью. Скорее всего эта строка записана не там, где должна быть.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Цитата
The_Prist написал: Приведите код полностью.
Код
Private Sub Workbook_Open()
On Error Resume Next
Application.ScreenUpdating = False
Sheets("График 1").Visible = False
Sheets("График 2").Visible = False
Sheets("График 3").Visible = False
Sheets("ПАРАМЕТРЫ").Protect Password:=2299, UserInterfaceOnly:=True, _
        DrawingObjects:=True, Contents:=True, Scenarios:=True, _
        AllowFiltering:=True, AllowFormattingColumns:=True, AllowFormattingRows:=True, _
        AllowSorting:=True
Dim wbeBook As Workbook
For Each wbeBook In Workbooks
    If wbeBook.Name = "3.Общая.xlsb" Then
        OpenFl = True
    End If
Next wbeBook
If OpenFl = True Then
'   MsgBox "База открыта"
Else
    U = MsgBox("База не обнаружена, открыть?", vbYesNo, "Проверка")
    If U = vbNo Then Exit Sub
    If U = vbYes Then Workbooks.Open ("\\WinPC\общая\3.Общая.xlsb")
End If
ThisWorkbook.Activate
End Sub
Изменено: Dex - 28.11.2015 02:43:29
 
Цитата
Johny написал: Наверно, все таки, пятница...
:D  :D  :D
 
Видимо, нужна задержка. Т.к. книга открывается с сетевого диска - есть вероятность, что запрос на открытие уже прошел в VBA, но книга не открылась.
Попробуйте так:
Код
Private Sub Workbook_Open()
On Error Resume Next
Application.ScreenUpdating = False
Sheets("График 1").Visible = False
Sheets("График 2").Visible = False
Sheets("График 3").Visible = False
Sheets("ПАРАМЕТРЫ").Protect Password:=2299, UserInterfaceOnly:=True, _
        DrawingObjects:=True, Contents:=True, Scenarios:=True, _
        AllowFiltering:=True, AllowFormattingColumns:=True, AllowFormattingRows:=True, _
        AllowSorting:=True
Dim wbeBook As Workbook
For Each wbeBook In Workbooks
    If wbeBook.Name = "3.Общая.xlsb" Then
        OpenFl = True
    End If
Next wbeBook
If OpenFl = True Then
'   MsgBox "База открыта"
Else
    U = MsgBox("База не обнаружена, открыть?", vbYesNo, "Проверка")
    If U = vbNo Then Exit Sub
    If U = vbYes Then Workbooks.Open ("\\WinPC\общая\3.Общая.xlsb")
End If
Application.OnTime now+timevalue("00:00:02"), "ActMe"
End Sub

В стандартный модуль(не в ЭтаКнига!) поместить такой код:
Код
Sub ActMe()
ThisWorkbook.Activate
End Sub
Подробнее про модули: Что такое модуль? Какие бывают модули?
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
О, да! Работает!
Спасибо за решение!

P.S. Правда тема не о том :)
Изменено: Dex - 28.11.2015 02:42:58
 
Цитата
Dex написал: Правда тема не о том
Тут тонкая грань. Одна проблема очень тесно связана с другой и чтобы понять надо было все равно эту тему читать :)
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Страницы: 1
Наверх