Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / синхронизация прокрутки на разных листах / 12 сообщений из 12, страница 1 из 1
29.08.2005, 13:26:30
    #33238837
синхронизация прокрутки на разных листах
Здравствуйте!

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

эксел 2002
...
Рейтинг: 0 / 0
29.08.2005, 13:56:38
    #33238920
Sinner
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
синхронизация прокрутки на разных листах
cells.select(address)
...
Рейтинг: 0 / 0
29.08.2005, 14:54:39
    #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
31.08.2005, 14:35:04
    #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
31.08.2005, 14:39:44
    #33243605
синхронизация прокрутки на разных листах
может можно код как нить по другому добавить ?

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

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

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

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

навеное надо как то по другому
...
Рейтинг: 0 / 0
31.08.2005, 17:35:01
    #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
31.08.2005, 17:58:01
    #33244278
4321
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
синхронизация прокрутки на разных листах
да, а еще не сложно получить регистратором например следующее (то же, но с RunAutoMacros ):
Код: plaintext
1.
2.
3.
    Workbooks.Add(Template:= _
        "C:\Program Files\Microsoft Office 2K\Templates\1049\Авансовый отчет.xlt"). _
        RunAutoMacros Which:=xlAutoOpen
...
...
Рейтинг: 0 / 0
01.09.2005, 15:52:09
    #33246453
синхронизация прокрутки на разных листах
спасибо, все с Set wbk = Workbooks.Add("c:\tmp\TestShablon.xlt")
получилось
...
Рейтинг: 0 / 0
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / синхронизация прокрутки на разных листах / 12 сообщений из 12, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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