求教个Excel的问题

  • 自走人形
    我有一个文件件里面有几百个名字不规则的EXCEL(名字不能改),每个EXCEL又有几个工作表,请问怎么样才能较快的一次性打印所有的工作表,目前是采用笨方法打开所有文件然后一个一个点打印所有工作簿,效率太低了
  • r
    riva128
    VBA~~~
  • o
    ouiki
    简单用VBA写了一下,我没测,你试试看。
    Public Sub findname()
    Dim fs, f, f1, fc
    Set fs = CreateObject("Scripting.FileSystemObject")
    Set f = fs.GetFolder("d:\") '引号里写你的目录
    Set fc = f.Files

    For Each f1 In fc
    For Each i In f1.Sheets.Count
    f1.Sheets(i).PrintOut copies:=1
    Next j
    Next
    End Sub
  • 自走人形
    额,忘了说了,我不是弄计算机的,不懂VBA,另外公司也不会让我私自装一些程序的,只能在已有的条件下想想办法,现在电脑里只有EXCEL,WOED,没有VBA之类的东西的
  • l
    lyraley
    ……这个VBA就是EXCEL里的宏,你新建一个宏,把代码粘贴进去执行就行了。另外3楼厉害啊
  • 自走人形
    这样啊,我不懂这个,见笑了,我去试试,谢谢楼上各位帮助
  • 自走人形

    好像出错了
  • 自走人形
    这张清楚点
  • r
    river
    next i 吧应该不是next j
  • 憂鬱的臺灣烏龜
    把那个"next j"改成“next i”就可以了,3楼打字太快手误了。
  • 自走人形
    别人给了另外一种解决方法,成功了
    Sub 打印()
    Application.ScreenUpdating = False

    Dim FileFind As FileSearch
    Dim Fs As Variant
    Dim FilePath As String
    Dim FileStyle As String
    Dim i%
    FilePath = ThisWorkbook.Path
    FileStyle = "*.XLS"
    With Application.FileSearch
    .LookIn = FilePath
    .Filename = FileStyle
    .Execute
    For Each Fs In .FoundFiles
    Name1 = Right(Fs, 6)
    If Name1 = Right(ThisWorkbook.Name, 6) Then GoTo 100
    Set xlsheet = Workbooks.Open(Fs)
    For i = 1 To Sheets.Count
    Sheets(i).PrintOut
    Next i

    xlsheet.Close False
    100:
    Next Fs
    End With
    Set xlsheet = Nothing
    Application.ScreenUpdating = True
    End Sub