2016-07-20 8 views
0

Ich möchte ein einzelnes Makro ausführen, die jede Excel-Datei mit verschiedenen Arbeitsblättern in meinem aktuellen Ordner formatiert. Mit diesem Makro wird die Seiteneinrichtung für jedes Arbeitsblatt in jeder Datei auf einen Seitenumfang von 1 Seite und 1 Seite festgelegt, die Seitenausrichtung auf Querformat eingestellt und dann gespeichert.Formatieren mehrerer Excel-Dateien in einem Ordner mit Makro

ich das Makro für das erste Arbeitsblatt der ersten aufgenommenen Excel-Datei, und es sieht wie folgt aus:

Application.PrintCommunication = False 
    With ActiveSheet.PageSetup 
     .PrintTitleRows = "" 
     .PrintTitleColumns = "" 
    End With 
    Application.PrintCommunication = True 
    ActiveSheet.PageSetup.PrintArea = "" 
    Application.PrintCommunication = False 
    With ActiveSheet.PageSetup 
     .LeftHeader = "" 
     .CenterHeader = "" 
     .RightHeader = "" 
     .LeftMargin = Application.InchesToPoints(0.08) 
     .RightMargin = Application.InchesToPoints(0.08) 
     .TopMargin = Application.InchesToPoints(1) 
     .BottomMargin = Application.InchesToPoints(1) 
     .HeaderMargin = Application.InchesToPoints(0.5) 
     .FooterMargin = Application.InchesToPoints(0.5) 
     .PrintHeadings = False 
     .PrintGridlines = False 
     .PrintComments = xlPrintNoComments 
     .CenterHorizontally = False 
     .CenterVertically = False 
     .Orientation = xlLandscape 
     .Draft = False 
     .PaperSize = xlPaperLetter 
     .FirstPageNumber = xlAutomatic 
     .Order = xlDownThenOver 
     .BlackAndWhite = False 
     .Zoom = False 
     .FitToPagesWide = 1 
     .FitToPagesTall = 1 
     .PrintErrors = xlPrintErrorsDisplayed 
     .OddAndEvenPagesHeaderFooter = False 
     .DifferentFirstPageHeaderFooter = False 
     .ScaleWithDocHeaderFooter = True 
     .AlignMarginsHeaderFooter = True 
     .FirstPage.RightHeader.Text = "" 
     .FirstPage.LeftFooter.Text = "" 
     .FirstPage.CenterFooter.Text = "" 
     .FirstPage.RightFooter.Text = "" 
    End With 
    Application.PrintCommunication = True 
    ActiveWorkbook.Save 
End Sub 

Bitte helfen Sie mir diesen Code zu bearbeiten, so dass es auf alle Arbeitsblätter der einzelnen Werke Excel-Arbeitsmappe in Mein Ordner. Danke

+2

Sie suchen soll „wie eine Schleife durch geschlossene Arbeitsmappe und ändern die Formatierung“ ähnlich oder etwas (Ich kann nur raten zu dieser Suchanfrage). Dann versuchen Sie es und wenn Sie Probleme haben, bitten Sie uns, mit den Problemen zu helfen. Dies ist kein Codierungsdienst, sondern ein Lehr- und Fehlersuchdienst. :-) – Rodger

+1

@ Rodger ist drauf - schau einfach, wie man alle Blätter in einer Arbeitsmappe durchläuft (es sind ziemlich drei Zeilen), und auch [vermeide die Verwendung von '.Select' /' .Activate'] (https: // stackoverflow com/questions/10714251/how-to-move-using-select-in-excel-vba-macros) (suchen Sie speziell nach der Antwort, die zeigt, wie eine Worksheet-Variable gesetzt wird). Glücklicherweise müssen Sie Ihren Code nicht zu sehr verändern, AFAICT. – BruceWayne

+0

Bitte verwenden Sie nicht das [Makros] -Tag für Excel/VBA Fragen. Die Tag-Information für sie besagt: '* Nicht für MS-OFFICE/VBA/Makrosprachen. Verwenden Sie stattdessen die entsprechenden Tags. * ' –

Antwort

0
Sub ProcessFiles() 
    Dim FolderPath As String 
    FolderPath = "Your Folder Path Goes Here" 
    ToggleEvents False 

    Dim FileName As String, xlFilename As String 
    Dim xlWB As Excel.Workbook, xlWS As Excel.Worksheet 

    If Not Right(FolderPath, 1) Then FolderPath = FolderPath & "\" 

    FileName = Dir(FolderPath, vbDirectory) 

    Do While FileName <> "" 
     xlFilename = FolderPath & FileName 
     Set xlWB = Workbooks.Open(xlFilename) 
     For Each xlWS In xlWB.Worksheets 
      ModifyPageSetup xlWS 
     Next 

     xlWB.Close True 

    Loop 

    Application.PrintCommunication = True 
    ToggleEvents True 
End Sub 

Sub ToggleEvents(EnableEvents As Boolean) 

    With Application 
     .EnableEvents = EnableEvents 
     .Calculation = IIf(EnableEvents, xlCalculationAutomatic, xlCalculationManual) 
     .ScreenUpdating = EnableEvents 
    End With 

End Sub 

Sub ModifyPageSetup(xlWS As Excel.Worksheet) 

    With xlWS.PageSetup 
     .PrintTitleRows = "" 
     .PrintTitleColumns = "" 
     Application.PrintCommunication = True 
     .PageSetup.PrintArea = "" 
     Application.PrintCommunication = False 
    End With 


    With xlWS.PageSetup 
     .LeftHeader = "" 
     .CenterHeader = "" 
     .RightHeader = "" 
     .LeftMargin = Application.InchesToPoints(0.08) 
     .RightMargin = Application.InchesToPoints(0.08) 
     .TopMargin = Application.InchesToPoints(1) 
     .BottomMargin = Application.InchesToPoints(1) 
     .HeaderMargin = Application.InchesToPoints(0.5) 
     .FooterMargin = Application.InchesToPoints(0.5) 
     .PrintHeadings = False 
     .PrintGridlines = False 
     .PrintComments = xlPrintNoComments 
     .CenterHorizontally = False 
     .CenterVertically = False 
     .Orientation = xlLandscape 
     .Draft = False 
     .PaperSize = xlPaperLetter 
     .FirstPageNumber = xlAutomatic 
     .Order = xlDownThenOver 
     .BlackAndWhite = False 
     .Zoom = False 
     .FitToPagesWide = 1 
     .FitToPagesTall = 1 
     .PrintErrors = xlPrintErrorsDisplayed 
     .OddAndEvenPagesHeaderFooter = False 
     .DifferentFirstPageHeaderFooter = False 
     .ScaleWithDocHeaderFooter = True 
     .AlignMarginsHeaderFooter = True 
     .FirstPage.RightHeader.Text = "" 
     .FirstPage.LeftFooter.Text = "" 
     .FirstPage.CenterFooter.Text = "" 
     .FirstPage.RightFooter.Text = "" 
    End With 

End Sub 
+0

Wo sollte ich den Pfad meines Ordners im obigen Code eingeben? – Karan

+0

Ich habe meine Antwort aktualisiert, um zu verdeutlichen, wo Sie den Ordnerpfad einfügen können. –

Verwandte Themen