2015-11-20 140 views
-1

我試圖訪問文件夾中的Excel文件,更改第一個工作表(工作表1)以放大80%。我有我的所有引用設置,但我剛開始編譯和語法錯誤:自動文件編輯

Function XCEL_FILE_EDIT() 

     Dim file 
     Dim path As String 
     Dim Documents As Excel.Worksheets 
     Dim ws As Excel.Worksheet, lngZoom As Long 

     path = "C:\TEST\TEST\TEST\" 

     file = Dir(path & "*.xlsx") 

     Do While file <> "" 

      Documents.Open FileName:=(path & "*.xlsx") 

      For Each ws In ThisWorkbook.Worksheets 

      Select Case Documents.Name 

       Case "Sheet 1": lngZoom = 80 

      End Select 

      With ws 
       .Select 
       ActiveWindow.Zoom = lngZoom 
      End With 

      Documents.Save 
      Documents.Close 

      file = Dir() 

     Loop 

    End Function 
+1

錯誤,你得到什麼行什麼? – BruceWayne

+0

對於其中一個,你需要'workbooks.Open FileName:=(path&file)'。編輯:兩個,'爲每個ws在file.Worksheets'。並使用'sub'而不是'function'。 – findwindow

+0

此外,而不是'With ws .select [End] With'只需將該塊替換爲'ws.Activate',然後'ActiveWindow.Zoom = lngZoom'。 '.Select'可能不一定激活工作表(我敢肯定它的確如此,但我想用'Activate',因爲它更具體一些?(有人請評論我的想法,如果它是多餘的或不必要的) – BruceWayne

回答

0

以別人說什麼,做了一些修改,試試這個:

Sub XCEL_FILE_EDIT() 

    Dim file As String 
    Dim path As String 
    Dim WS As Worksheet 

    path = "C:\TEST\TEST\TEST\" 
    file = Dir(path & "*.xlsx") 

    Do While file <> "" 

     Workbooks.Open Filename:=file 
     For Each WS in Workbooks(file).Sheets 
      WS.Select 
      Application.PrintCommunication = False 
      WS.PageSetup.Zoom = 80 
      Application.PrintCommunication = True 
     Next WS 
     Workbooks(file).Close True 
     file = Dir() 

    Loop 

End Sub 
+0

任何想法我做錯了什麼?因爲這沒有做任何事情 – AGreatBigBear

+0

對不起,我想我終於得到了你想做的事情,我在你的第一個例子中看到「Sheet 1」以爲你只是想改變名爲「Sheet 1」的表格,實際上第一張表格通常命名爲「Sheet1」,沒有空格,經過仔細檢查,看起來你希望所有表格都放大到80%。 – Demetri

+0

這是一個運行時錯誤424 - 對象需要,是否到引用? – AGreatBigBear