2016-11-16 4 views
2

Я пишу макрос VBA в Outlook, который ссылается на книгу Excel и вносит изменения в эту книгу. Я хочу, чтобы заморозить стекла (не "Split") чуть ниже строки 1.Из VBA в Outlook, как мне заморозить панели в Excel?

Вот код, который я попробовал:

With Excel.ActiveWindow 
    .SplitColumn = 0 
    .SplitRow = 3 
    .FreezePanes = True 
End With 

... и ...

Dim excApp As Object 
Set excApp = CreateObject("Excel.Application") 

With excApp.ActiveWindow 
    .SplitColumn = 0 
    .SplitRow = 3 
    .FreezePanes = True 
End With 

И кинул бежать -time error 91 на линии .SplitColumn = 0.

Я ценю любую помощь или указатели. Благодаря!

ответ

2

С замораживающими стеклами, это фактически относительно положения курсора, так что это одно из немногих мест, где на самом деле необходимо .Select.

Этот код должен делать то, что вы ищете:

Dim excApp As Excel.Application 
Set excApp = GetObject(, "Excel.Application") 

excApp.ActiveWorkbook.ActiveSheet.Range("2:2").Select 
excApp.ActiveWindow.FreezePanes = True 

Это предполагает Excel уже открыто.

- EDIT -

Per @ChrisB, есть способ сделать это без страшного .Select:

With excApp.ActiveWindow 
    .SplitRow = 3 
    .FreezePanes = True 
End With 
+0

я на самом деле нужно GetObject вместо CreateObject. Ваше решение работает! – ChrisB

+0

На самом деле вам не нужно использовать 'Select'. Проверьте [excel vba freeze pane без выбора] (http://stackoverflow.com/questions/34094445). 'Dim excApp Как Excel.Application Set excApp = GetObject ("Excel.Application") С excApp.ActiveWindow .SplitRow = 3 .FreezePanes = True End With' – ChrisB

+0

Это здорово. Сегодня я чему-то научился; Благодарю. Я включил ваши отзывы в ответ. – Hambone

Смежные вопросы