Здравствуйте. Подскажите пожалуйста, как запретить сохранять изменения в определенном листе книги эксель. Например у нас есть файл в нем много листов, один из них бланк заказа, так вот юзер может дополнять строки в листе бланк заказа, удалять строки, но при сохранении всей книги, бланк не сохранялся, а если есть изменения на других листах то должно сохранится, потому что на других листах содержится номенклатура, а бланк мы проста с помощью выпадающих списков наполняем, как наполнили распечатали или сохранили как и все!
Здравствуйте. Подскажите пожалуйста, как запретить сохранять изменения в определенном листе книги эксель. Например у нас есть файл в нем много листов, один из них бланк заказа, так вот юзер может дополнять строки в листе бланк заказа, удалять строки, но при сохранении всей книги, бланк не сохранялся, а если есть изменения на других листах то должно сохранится, потому что на других листах содержится номенклатура, а бланк мы проста с помощью выпадающих списков наполняем, как наполнили распечатали или сохранили как и все!Димарик
В Excel нет такой опции, как сохранение определенного листа внутри книги, сохраняется вся книга целиком Для решения Вашей задачи могу предложить вариант, когда лист, который не должен сохранятся, будет вынесен в отдельную книгу, но связан с нужными листами исходной книги (той, которую сохранять необходимо)
Здравствуйте
В Excel нет такой опции, как сохранение определенного листа внутри книги, сохраняется вся книга целиком Для решения Вашей задачи могу предложить вариант, когда лист, который не должен сохранятся, будет вынесен в отдельную книгу, но связан с нужными листами исходной книги (той, которую сохранять необходимо)Serge_007
Димарик, что Вам ответить на этот вопрос, не видя файла? Связями связать
[p.s.]Вопрос аналогичен вопросу пациента доктору по телефону: "Доктор как мне вылечиться?", на что доктор отвечает: "Приходите на прием, сначала надо узнать чем Вы болеете"
Димарик, что Вам ответить на этот вопрос, не видя файла? Связями связать
[p.s.]Вопрос аналогичен вопросу пациента доктору по телефону: "Доктор как мне вылечиться?", на что доктор отвечает: "Приходите на прием, сначала надо узнать чем Вы болеете"Serge_007
Serge_007, у меня есть многоуровневый выпадающий список, сейчас я сделал связь между бланком и основной книгой, первый уровень у меня получилось связать (я могу выбирать значение в выпадающем списке, вот код: [vba]
Код
Private Sub UserForm_Initialize() Dim pointcoordinates As pointcoordinatestype, horizontaloffsetinpoints As Double, verticaloffsetinpoints As Double With Me horizontaloffsetinpoints = (.Width - .InsideWidth) / 2 verticaloffsetinpoints = 1 Call GetPointCoordinates(ActiveCell.Offset(0, 1), pointcoordinates) .StartUpPosition = 0 .Top = pointcoordinates.Top - verticaloffsetinpoints .Left = pointcoordinates.Left - horizontaloffsetinpoints End With Dim ws As Worksheet
' Set wbCurrent = ActiveWorkbook("Бланк заказа") это как было в одной книге, а ниже я пытаюсь обратиться к той книге Set wbCurrent = Workbooks("Прайс Общий с макросами и многовыпадающитм списком")
For Each ws In wbCurrent.Worksheets If InStr(1, ws.Name, ".", vbTextCompare) > 0 Then n = n + 1 Level1.ListBox1.AddItem (ws.Name) If Len(ws.Name) > lenT Then lenT = Len(ws.Name) End If Next
Dim ihWnd, hStyle If Val(Application.Version) < 9 Then ihWnd = FindWindow("ThunderXFrame", Me.Caption) Else ihWnd = FindWindow("ThunderDFrame", Me.Caption) End If hStyle = GetWindowLong(ihWnd, GWL_STYLE) hStyle = hStyle And Not WS_CAPTION And Not WS_BORDER SetWindowLong ihWnd, GWL_STYLE, hStyle SetWindowLong ihWnd, GWL_EXSTYLE, 0 DrawMenuBar ihWnd Level1.Height = n * 20 Level1.Height = Level1.Height + GWL_EXSTYLE Level1.Width = lenT * 2 Level1.ListBox1.Height = Level1.Height Level1.ListBox1.Width = Level1.Width
End Sub
[/vba] Но теперь при переходе на другой уровень выпадающего списка, видимо тоже нужно указать ссылку на другую книгу, а как не знаю: вот код второго уровня: [vba]
Код
Private Sub UserForm_Initialize() lr = Sheets(wsLevel).Cells(Sheets(wsLevel).Rows.Count, 1).End(xlUp).Row For i = 2 To lr prise = Sheets(wsLevel).Cells(i, 2).Value 'prise = Sheets("3Контрагент").Cells(i, 2).Value n = n + 1 Level2.ListBox1.AddItem (prise) If Len(prise) > lenT Then lenT = Len(prise) Next Dim ihWnd, hStyle If Val(Application.Version) < 9 Then ihWnd = FindWindow("ThunderXFrame", Me.Caption) Else ihWnd = FindWindow("ThunderDFrame", Me.Caption) End If hStyle = GetWindowLong(ihWnd, GWL_STYLE) hStyle = hStyle And Not WS_CAPTION And Not WS_BORDER SetWindowLong ihWnd, GWL_STYLE, hStyle SetWindowLong ihWnd, GWL_EXSTYLE, 0 DrawMenuBar ihWnd
[/vba] Есть еще 3 уровень, но ядумаю там будет аналогично
Serge_007, у меня есть многоуровневый выпадающий список, сейчас я сделал связь между бланком и основной книгой, первый уровень у меня получилось связать (я могу выбирать значение в выпадающем списке, вот код: [vba]
Код
Private Sub UserForm_Initialize() Dim pointcoordinates As pointcoordinatestype, horizontaloffsetinpoints As Double, verticaloffsetinpoints As Double With Me horizontaloffsetinpoints = (.Width - .InsideWidth) / 2 verticaloffsetinpoints = 1 Call GetPointCoordinates(ActiveCell.Offset(0, 1), pointcoordinates) .StartUpPosition = 0 .Top = pointcoordinates.Top - verticaloffsetinpoints .Left = pointcoordinates.Left - horizontaloffsetinpoints End With Dim ws As Worksheet
' Set wbCurrent = ActiveWorkbook("Бланк заказа") это как было в одной книге, а ниже я пытаюсь обратиться к той книге Set wbCurrent = Workbooks("Прайс Общий с макросами и многовыпадающитм списком")
For Each ws In wbCurrent.Worksheets If InStr(1, ws.Name, ".", vbTextCompare) > 0 Then n = n + 1 Level1.ListBox1.AddItem (ws.Name) If Len(ws.Name) > lenT Then lenT = Len(ws.Name) End If Next
Dim ihWnd, hStyle If Val(Application.Version) < 9 Then ihWnd = FindWindow("ThunderXFrame", Me.Caption) Else ihWnd = FindWindow("ThunderDFrame", Me.Caption) End If hStyle = GetWindowLong(ihWnd, GWL_STYLE) hStyle = hStyle And Not WS_CAPTION And Not WS_BORDER SetWindowLong ihWnd, GWL_STYLE, hStyle SetWindowLong ihWnd, GWL_EXSTYLE, 0 DrawMenuBar ihWnd Level1.Height = n * 20 Level1.Height = Level1.Height + GWL_EXSTYLE Level1.Width = lenT * 2 Level1.ListBox1.Height = Level1.Height Level1.ListBox1.Width = Level1.Width
End Sub
[/vba] Но теперь при переходе на другой уровень выпадающего списка, видимо тоже нужно указать ссылку на другую книгу, а как не знаю: вот код второго уровня: [vba]
Код
Private Sub UserForm_Initialize() lr = Sheets(wsLevel).Cells(Sheets(wsLevel).Rows.Count, 1).End(xlUp).Row For i = 2 To lr prise = Sheets(wsLevel).Cells(i, 2).Value 'prise = Sheets("3Контрагент").Cells(i, 2).Value n = n + 1 Level2.ListBox1.AddItem (prise) If Len(prise) > lenT Then lenT = Len(prise) Next Dim ihWnd, hStyle If Val(Application.Version) < 9 Then ihWnd = FindWindow("ThunderXFrame", Me.Caption) Else ihWnd = FindWindow("ThunderDFrame", Me.Caption) End If hStyle = GetWindowLong(ihWnd, GWL_STYLE) hStyle = hStyle And Not WS_CAPTION And Not WS_BORDER SetWindowLong ihWnd, GWL_STYLE, hStyle SetWindowLong ihWnd, GWL_EXSTYLE, 0 DrawMenuBar ihWnd