Есть книга в сетевой папке, мы сейчас открываем 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
The_Prist написал: Понятно. Это человек теперь виноват. А Вы свое первое сообщение прочитайте и скажите - а был выбор на какой отвечать?
Да, заголовок темы с вопросом. А человек не виноват, я просто не понял о чем макрос, ответа никакого не было, просто написано
Цитата
Karataev написал: В прикрепленной книге посмотрите модуль ЭтаКнига, в этом модуле находится макрос и комментарий
Он просто предлагает посмотреть, на вопрос не отвечает, а я чайник и мне пока тяжело по макросу точно понять для чего он и я никого не обвинял. И если у Вас плохое настроение и Вы модератор, это не значит что можно придираться к словам и обвинять кого либо. Тут вполне вежливый разговор, просто налаживание коммуникации между людьми, один другого не понял, классическая ситуация, в ней нет ничего особенного, что могло бы дать повод учить меня общению. У Вас слишком ВЫСОКОМЕРНЫЙ форум. А вот советы полезные.
Karataev написал: Переменная нужна, чтобы управлять открытой книгой. Например, с помощью переменной можно закрыть книгу:
Вот теперь понятно. Т.е. просто для удобства дальнейшего использования этой книги. Спасибо. Может тогда подскажите как мне при ее открытии вернуться назад к файлу в котором макрос.
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
Во как...А мы и не в курсе. Это пятница так влияет? Как скажите. Вы умеете четко и понятно задавать вопросы, чтобы потом вопрошать на какой из них был дан ответ. Мы высокомерные, потому что:
Цитата
The_Prist написал: Какую формулу Вы теперь от людей просите?
Удачи с подобным подходом.
Цитата
Dex написал: тогда подскажите как мне при ее открытии вернуться назад к файлу
Код
ThisWorkbook.Activate
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
The_Prist написал: Во как...А мы и не в курсе. Это пятница так влияет? Как скажите. Вы умеете четко и понятно задавать вопросы, чтобы потом вопрошать на какой из них был дан ответ. Мы высокомерные, потому что:
Вот, эти слова только подтверждают мои!
Цитата
Во как...А мы и не в курсе
- попытка юмора.
Цитата
Это пятница так влияет?
- не вижу связи.
Цитата
Как скажите. Вы умеете четко и понятно задавать вопросы, чтобы потом вопрошать на какой из них был дан ответ.
- сарказм и не уважение. Вопросы четко поставлены, их просто два.
Цитата
1. Как наладить связь книг в сетевой папке, Колхозный вариант есть, нужен человеческий 2. Пока хочу прописать макросом тупо открытие Общая при открытии другой книги, подскажите макрос?
Мы высокомерные, потому что, не вникнув в вопрос, даете ответ, причем адресованный другому человеку. Изначально
Цитата
JayBhagavan написал: 2.6. Один вопрос - одна тема. Не следует в открываемой теме обозначать и задавать сразу несколько вопросов.
Соответственно тема и вопрос:
Цитата
Как наладить связь книг в сетевой папке, Колхозный вариант есть, нужен человеческий
Мой косяк, что не удалил второй вопрос сразу... Но человек уже ответил, я подумал что он ответил именно на первый вопрос (потому что я чайник и макросы пока читать не могу), от того и уточнял. Все предельно ясно, причем человека я не обвинял, а просто задал вопрос.
Ну, это дело Ваше. Не буду дальше попытаться до Вас донести как Ваше первое сообщение читается и какой вопрос там на ум больше приходит - первый или второй. Считаете, что правильно - дело личное.
P.S. Именно поэтому я был против того, чтобы можно было редактировать свои сообщения более чем через 2 минуты после написания...Потому что становится непонятно кто чего когда написал и где чего исправил. Тема была создана больше недели назад, а последние правки в первое сообщение внесены менее часа назад...Это неправильно.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
The_Prist написал: Не буду дальше попытаться до Вас донести как Ваше первое сообщение читается и какой вопрос там на ум больше приходит - первый или второй.
Так вот JayBhagavan, донес предельно ясно. Правда по хорошему, нужно было отредактировать мое сообщение и вопрос сделать зачеркнутым
Цитата
The_Prist написал: Именно поэтому я был против того, чтобы можно было редактировать свои сообщения более чем через 2 минуты после написания...
По мне, не совсем правильное решение... Лучше Вам советую чтобы все изменения после 2-х минут сохранялись (серым цветом например) в теле сообщения, чтобы было видно, что и на что меняли.
Цитата
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
Видимо, нужна задержка. Т.к. книга открывается с сетевого диска - есть вероятность, что запрос на открытие уже прошел в 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
В стандартный модуль(не в ЭтаКнига!) поместить такой код: