2017-05-05 5 views
2

Ich muss VBScript verwenden, um alle Blätter in einer Excel-Arbeitsmappe in Seitenlayoutansicht statt der Standardansicht zu ändern. Ich kann jedoch nicht herausfinden, wie man das in VBS macht. Mit VBA, der Code, den ich verwendet habe (um mit einer while-Schleife über jedes Blatt zu gehen) istVerwenden von VBScript, um Excel-Ansicht zu Seitenlayout zu ändern

With ActiveWindow 
    .View = xlPageLayoutView 
End With 

, die meine Zwecke in Ordnung dient. Aber ich muss das in VBS tun. Ich denke, es hat etwas mit dem Application-Objekt zu tun, obwohl ich mir nicht sicher bin. Jede Hilfe wäre willkommen.

Edit: Hier ist ein Beispiel für den Code, den ich mit Erklärungen und Dinge geschrieben habe. Es wird im Grunde über eine Reihe von Blättern in einer Arbeitsmappe iteriert und alle auf die Seitenlayout-Ansicht gesetzt (oder versucht). Aus diesem Segment fehlt das Sub, in dem ich die Arbeitsmappe mit neuen Blättern bestücke, die den Einträgen von Names() entsprechen.

Dim destFile, objWorkbook 

Set destFile = CreateObject("Excel.Application") 

Set objWorkbook = destFile.Workbooks.Add() 
objWorkBook.SaveAs(strPath) 

Sub OverNames() 
    For i = 1 to 9 
     SetPagelayout(i) 
    Next 
End Sub 

Sub SetPageLayout(hNum) 
    Dim houseSheet, sheetName 

    'retrieves sheet name from array Names() 
    sheetName = Names(hNum, 0) 

    Set houseSheet = destFile.Worksheets(sheetName) 

    houseSheet.Window.View = xlPageLayoutView 
End Sub 

Antwort

0

VBA hat bereits Excel und die Arbeitsmappe geladen. Mit VBS müssen Sie ein Excel-Objekt erstellen und Ihre Arbeitsmappe damit öffnen. Außerdem hat VBA statische Variablen für Excel-Einstellungen definiert, die Sie selbst in VBS definieren müssen.

Dim objExcel 
Dim excelPath 
Dim xlPageLayoutView=3 ' https://msdn.microsoft.com/en-us/library/office/ff838200.aspx 

excelPath = "C:\scripts\servers.xlsx" 
objExcel.DisplayAlerts = 0 

Set objExcel = CreateObject("Excel.Application") 

Um den Status eines Fensters zu ändern, müssen Sie auf das Fensterobjekt zugreifen. In Excel gibt es Arbeitsmappen, die Sammlungen von Arbeitsblättern und Windows enthalten. Die Anwendung enthält auch eine Sammlung aller Fenster in allen Arbeitsblättern. In der Arbeitsmappenfenster Sammlung wird das aktive Fenster immer durch Index zugegriffen 1.

Set currentWorkBook = objExcel.ActiveWorkbook 
Set currentWorkSheet = currentWorkBook.Worksheets("Sheet Name Here") 

currentWorkSheet.Activate 

Set currentWindow = currentWorkBook.Windows(1) 

currentWindow.View = xlPageLayoutView 
+1

Als ich versuchte, dass erhielt ich den Fehler 800a01b6 mit der Fehlermeldung „Objekt nicht diese Eigenschaft oder Methode nicht unterstützt:‚houseSheet. Fenster'." Ich bearbeite meinen Post, um eine modifizierte Version des von mir geschriebenen Codes hinzuzufügen, damit Sie sehen können, wo ich Dinge deklariert habe. – ataylor

+0

Behoben. Sie müssen auf das Fensterobjekt über die Fenstersammlung des Arbeitsbuchs zugreifen. Aktivieren Sie das Arbeitsblatt, das Sie aktualisieren möchten, um es in Index 1 der Arbeitsmappen-Windows-Sammlung zu erzwingen. – Damienknight

Verwandte Themen