【发布时间】:2019-02-01 16:32:49
【问题描述】:
如果特定文件夹中的任何 excel 文件从我的范围 B3 到 lr 匹配,我正在尝试 ExportAsFixedFormat。 (范围是文件名减去扩展名)
这是我到目前为止所拥有的。目前它尝试打开每个文件(并非所有文件都是 excel 文件,有些是 autocad)并将 .xlsx 导出为 pdf。它对当前页面(我不想要)进行 PDF 处理,并且对我列表中的一个 .xlsx 文件进行 PDF 处理。
我不想只打印该文件夹中的所有 excel 文件。
感谢您的任何反馈。
Sub ExcelPrint()
Dim myFile As String, myFolder As String
Dim LoginName As String, destFolder As String
myFolder = Range("B1").Value
lr = Cells(Rows.Count, "B").End(xlUp).Row
LoginName = UCase(GetUserID)
destFolder = "C:\Users\" & LoginName & "\Desktop\_PDF\_Temp\"
If Len(Dir("C:\Users\" & LoginName & "\Desktop\_PDF\", vbDirectory)) = 0 Then
MkDir "C:\Users\" & LoginName & "\Desktop\_PDF\"
End If
If Len(Dir("C:\Users\" & LoginName & "\Desktop\_PDF\_Temp\", vbDirectory)) = 0 Then
MkDir "C:\Users\" & LoginName & "\Desktop\_PDF\_Temp\"
End If
For i = 3 To lr
myFile = Cells(i, 2).Value & ".xlsx"
On Error Resume Next
Workbooks.Open _
FileName:=myFolder & myFile, _
ReadOnly:=True
With ActiveSheet.PageSetup 'How to print only the .xlsx files from 3 to lr?
.Orientation = xlLandscape
.FitToPagesTall = 1
.FitToPagesWide = 1
End With
ActiveSheet.ExportAsFixedFormat _
Type:=xlTypePDF, _
FileName:=destFolder & ActiveSheet.Name, _ 'How to save as Workbook name?
IgnorePrintAreas:=False, _
From:=1, _
To:=1, _
OpenAfterPublish:=False
ActiveSheet.Close
Next i
End Sub
【问题讨论】:
-
当您尝试使用 xlsx 扩展名打开一个 autocad 文件时,它会如何打开它?这不会引发错误吗?您可以使用
FileSystemObject或DIR在尝试打开文件之前检查文件类型 -
它不会打开它只会通过
on error resume next传递的AutoCAD文件 -
我没有看到
Resume Next声明!不是我经常使用的东西。你不需要那个。就像我说的,您可以使用FSO之类的东西在打开文件之前检查文件是否存在 -
只是一个提示(不是您问题的答案):不要依赖
C:\Users\<username>成为用户文档的主页。请改用environ("Userprofile")。就个人而言,我不喜欢在桌面上存储任何东西...... -
@FunThomas 感谢
environ的提示。桌面是一个临时位置,用户随后将从该位置打印并将文件移动到 ProjectWise 内的最终位置。