powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / синхронизация прокрутки на разных листах
12 сообщений из 12, страница 1 из 1
синхронизация прокрутки на разных листах
    #33238837
Здравствуйте!

задача такая :
как сделать так чтобы если на текущем листе выделена строка
то переходе на другой лист выделялась строка с тем же номером и прокрутка листа вставала в то же положение как и было на предыдущем?
...
Рейтинг: 0 / 0
синхронизация прокрутки на разных листах
    #33238839
сорри , забыл уточнить

эксел 2002
...
Рейтинг: 0 / 0
синхронизация прокрутки на разных листах
    #33238920
Фотография Sinner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cells.select(address)
...
Рейтинг: 0 / 0
синхронизация прокрутки на разных листах
    #33239085
хотя и не синхронизирует прокрутку если строки рядом, но лучше чем ничего


Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Option Explicit
Public LastSelection
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
    If Not IsEmpty(LastSelection) Then
        Range(LastSelection.Address).Select
    End If
End Sub

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
Set LastSelection = Selection
End Sub

теперь надо как-то этот код добавить внешним VBA приложением
в эксельный файл программно и подвязать к соответствующим событиям а затем вставить электронную подпись...
...
Рейтинг: 0 / 0
синхронизация прокрутки на разных листах
    #33243588
проблема :
как избежать брейка и оставить переменную AppExcel типа вариант
(у людей может быть эксел разных версий и прописывать его в референсах чревато)



Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
Public Function addSincCode()
'Включить доверие VB в безопасности эксела
Dim CODESRC( 8 )
CODESRC( 0 ) = "Private LastSelection"
CODESRC( 1 ) = "Private Sub Workbook_SheetActivate(ByVal Sh As Object)"
CODESRC( 2 ) = "If Not IsEmpty(LastSelection) Then"
CODESRC( 3 ) = "        Range(LastSelection.Address).Select"
CODESRC( 4 ) = "End If"
CODESRC( 5 ) = "End Sub"
CODESRC( 6 ) = "Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)"
CODESRC( 7 ) = "Set LastSelection = Selection"
CODESRC( 8 ) = "End Sub"


    Dim i
    Dim AppExcel       ' As Excel.Application   - так сообщение с остановом при вставке линий кода  

    Set AppExcel = New Excel.Application
    'Set AppExcel = CreateObject("excel.Application")

   AppExcel.Visible = True
    AppExcel.SheetsInNewWorkbook =  3 
    Set wbk = AppExcel.Workbooks.Add

    
    Dim linecount
    linecount = AppExcel.ActiveWorkbook.VBProject.VBComponents( 1 ).CodeModule.CountOfLines
    For i =  0  To UBound(CODESRC)
        AppExcel.Application.ActiveWorkbook.VBProject.VBComponents( 1 ).CodeModule.InsertLines i + linecount +  1 , CODESRC(i)
    Next i

End Function



Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
Public Function addSincCode()
'Включить доверие VB в безопасности эксела
Dim CODESRC( 8 )
CODESRC( 0 ) = "Private LastSelection"
CODESRC( 1 ) = "Private Sub Workbook_SheetActivate(ByVal Sh As Object)"
CODESRC( 2 ) = "If Not IsEmpty(LastSelection) Then"
CODESRC( 3 ) = "        Range(LastSelection.Address).Select"
CODESRC( 4 ) = "End If"
CODESRC( 5 ) = "End Sub"
CODESRC( 6 ) = "Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)"
CODESRC( 7 ) = "Set LastSelection = Selection"
CODESRC( 8 ) = "End Sub"


    Dim i
    Dim AppExcel        As Excel.Application '   - так все нормально , брейк не возникает

    Set AppExcel = New Excel.Application
 

   AppExcel.Visible = True
    AppExcel.SheetsInNewWorkbook =  3 
    Set wbk = AppExcel.Workbooks.Add

    
    Dim linecount
    linecount = AppExcel.ActiveWorkbook.VBProject.VBComponents( 1 ).CodeModule.CountOfLines
    For i =  0  To UBound(CODESRC)
        AppExcel.Application.ActiveWorkbook.VBProject.VBComponents( 1 ).CodeModule.InsertLines i + linecount +  1 , CODESRC(i)
    Next i

End Function
...
Рейтинг: 0 / 0
синхронизация прокрутки на разных листах
    #33243605
может можно код как нить по другому добавить ?

или может у экесела какой нить шаблон по умолчанию есть чтобы код вписанный туда автоматически появлялся в новых документах?
...
Рейтинг: 0 / 0
синхронизация прокрутки на разных листах
    #33243812
убей касперского и верни код назад.
так он работать не обязан.

ну а из шаблонной книжки код как будто должен появляться. попробуй.
...
Рейтинг: 0 / 0
синхронизация прокрутки на разных листах
    #33243860
Фотография k-nike
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
гость, просто гостьможет можно код как нить по другому добавить ?

или может у экесела какой нить шаблон по умолчанию есть чтобы код вписанный туда автоматически появлялся в новых документах?
Из справки экселя:
Хранение стандартных шаблонов книг и листов
Если шаблон с именем Book.xlt или Sheet.xlt создан и сохранен в папке XLStart, то Microsoft Excel использует его для создания новых стандартных книг или для вставки новых листов. Папка XLStart обычно находится в:

C:\Program Files\Microsoft Office\Office10\XLStart
...
Рейтинг: 0 / 0
синхронизация прокрутки на разных листах
    #33243907
Касперского никогда не было
шаблон в XLStart срабатывает только если просто эксел открыть а когда
програмно и так:Set wbk = AppExcel.Workbooks.Add не канает

навеное надо как то по другому
...
Рейтинг: 0 / 0
синхронизация прокрутки на разных листах
    #33244215
честно говоря не знаю, что не канает
вот специально попробовал с шаблоном - все канает
Код: plaintext
1.
2.
3.
  Dim wbk As Workbook
  Set wbk = Workbooks.Add("c:\tmp\TestShablon.xlt")
  wbk.Windows( 1 ).Visible = True
  Debug.Print wbk.Name
...
Рейтинг: 0 / 0
синхронизация прокрутки на разных листах
    #33244278
4321
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
да, а еще не сложно получить регистратором например следующее (то же, но с RunAutoMacros ):
Код: plaintext
1.
2.
3.
    Workbooks.Add(Template:= _
        "C:\Program Files\Microsoft Office 2K\Templates\1049\Авансовый отчет.xlt"). _
        RunAutoMacros Which:=xlAutoOpen
...
...
Рейтинг: 0 / 0
синхронизация прокрутки на разных листах
    #33246453
спасибо, все с Set wbk = Workbooks.Add("c:\tmp\TestShablon.xlt")
получилось
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / синхронизация прокрутки на разных листах
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]