2015-11-20 82 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