2016-08-15 8 views
0

私はいくつかの自動化のためにExcel 2010を使用しています。要するにVBA - 別のファイルのフリーズペイン

、私はこの方法で新しいブックを作成します。

With CreateObject("Excel.Application") 
    Set NewBook = .Workbooks.Add 
    .Visible = True 
End With 

With NewBook 
    Set WS = NewBook.Sheets("Sheet1") 
End With 

そして今、私は凍結ペインを作成したいと考えています。私はを使用してみました

this pageのようのActiveWindowを選択:

どういうわけか
WS.Range("F4").Select 
ActiveWindow.FreezePanes = True 

異なるファイルを編集するとき、.selectメソッドは常に代わりに追加ブックの元のファイルを選択します。

私はその後、this pageを見てみました:

NewBook.activate 
With ActiveWindow 
    If .FreezePanes Then .FreezePanes = False 
    .SplitColumn = 5 
    .SplitRow = 4 
    .FreezePanes = True 
End With 

ありません使用、凍結ペインは、元のファイルに作成されます。

も、次の作業を行います。私の.activate方法が間違っている、またはのActiveWindowが間違っている、または多分.selectが間違っている場合

With NewBook 
    If .FreezePanes Then .FreezePanes = False 
    .SplitColumn = 5 
    .SplitRow = 4 
    .FreezePanes = True 
End With 

わからないが。ありがとうございました。

+0

また、フリーズペインを作成するには、VBAでは常にActiveWindowが必要ですが、回避する方法はありますか? –

+0

いいえワークシートではなくウィンドウのプロパティです。 'NewBook.Application.ActiveWindow.FreezePanes = True'または' NewBook.Windows(1).FreezePanes = True'を使用する必要があります – Rory

+1

Excelの新しいインスタンスを作成するので、そのインスタンスを明示的に参照する必要があります。 –

答えて

0

私はmsgboxステートメントの選択的な使用によってコードをデバッグしようとしています。 newbook.activateまたはwithループを実行する前にmsgboxステートメントを配置して、現在のワークブックまたはワークシートの名前を出力しようとしています。 Excelが現在アクティブであると見なすワークブックを教えてください。また

... https://msdn.microsoft.com/en-us/library/office/ff835568.aspxhttps://msdn.microsoft.com/en-us/library/office/ff195422.aspx

は多分あなたが作成した新しいワークブックの名前を認識していない優れています。ただし、作成した順に各ワークブックに独自のインデックスがあるように見えます。おそらくインデックス別にブックを参照してみてください。

0

ActiveWindowを使用する代わりに、新しいブックの最初の(実際に一意の)ウィンドウを修飾します。ワークブックに複数のシートがある場合、前提条件があります。ブック内の目的のシートを有効にして、フリーズペインをブックの正しいワークシートに適用する必要があります。

NewBook.Sheets("DesiredSheet").Activate 
With NewBook.Windows(1) 
    If .FreezePanes Then .FreezePanes = False 
    .SplitColumn = 0 
    .SplitRow = 1 
    .FreezePanes = True 
End With 
関連する問題