Excel VBA-导出前不会加载第一张图片
我有一个文件夹,里面有几个excel工作簿,需要导出为pdf格式。每个工作簿的每一页上都有一个徽标(.bmp)。当我使用下面的代码时,PDF仅在第一页上缺少徽标(它有一个灰色占位符)。其余的页面都有徽标 我的代码:Excel VBA-导出前不会加载第一张图片,vba,excel,Vba,Excel,我有一个文件夹,里面有几个excel工作簿,需要导出为pdf格式。每个工作簿的每一页上都有一个徽标(.bmp)。当我使用下面的代码时,PDF仅在第一页上缺少徽标(它有一个灰色占位符)。其余的页面都有徽标 我的代码: Option Explicit Sub dsPdf() Dim path As String Dim wbName As String Dim tWb As Workbook Dim t As Single path =
Option Explicit
Sub dsPdf()
Dim path As String
Dim wbName As String
Dim tWb As Workbook
Dim t As Single
path = ThisWorkbook.path
wbName = Dir(path & "\*.xlsx")
Application.ScreenUpdating = True
Do While wbName <> ""
Set tWb = Workbooks.Open(path & "\" & wbName)
tWb.Sheets(Array(1, 2, 3)).Select
DoEvents
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
path & "\" & Left(wbName, Len(wbName) - 4) & "pdf", _
Quality:=xlQualityStandard, IncludeDocProperties:=True, _
IgnorePrintAreas:=False, OpenAfterPublish:=False
tWb.Close False
wbName = Dir
Loop
End Sub
选项显式
子dsPdf()
将路径设置为字符串
将wbName设置为字符串
将tWb设置为工作簿
把t调暗为单身
path=ThisWorkbook.path
wbName=Dir(路径&“\*.xlsx”)
Application.ScreenUpdating=True
当wbName“”时执行此操作
设置tWb=Workbooks.Open(路径&“\”&wbName)
工作表(数组(1、2、3))。选择
多芬特
ActiveSheet.ExportAsFixedFormat类型:=xlTypePDF,文件名:=_
路径&“\”&左(wbName,Len(wbName)-4)和“pdf”_
质量:=xlQualityStandard,IncludeDocProperties:=True_
IgnorePrintAreas:=False,OpenAfterPublish:=False
tWb.关闭错误
wbName=Dir
环
端接头
我尝试过使用ActiveSheet.RefreshAll
和DoEvents
,还添加了计时器
/Dowhile
循环。当我将Stop
放在出口声明之前时,第一页正确显示徽标。但是,当我放置应用程序时,等待(现在…徽标不显示)
有什么想法吗?
谢谢试试这个-我避免了使用
。选择
,因为(我不确定),但我认为这可能会导致一些问题
Sub dsPdf_NoSelect()
Dim path As String
Dim wbName As String
Dim tWb As Workbook
Dim t As Single
Dim i As Long
path = ThisWorkbook.path
wbName = Dir(path & "\*.xlsx")
Application.ScreenUpdating = True
Do While wbName <> ""
Set tWb = Workbooks.Open(path & "\" & wbName)
For i = 1 To 3
tWb.Sheets(i).ExportAsFixedFormat Type:=xlTypePDF, Filename:=path & "\" & Left(wbName, Len(wbName) - 4) & "pdf", _
Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False
Next i
tWb.Close False
wbName = Dir
Loop
End Sub
子dsPdf_NoSelect()
将路径设置为字符串
将wbName设置为字符串
将tWb设置为工作簿
把t调暗为单身
我想我会坚持多久
path=ThisWorkbook.path
wbName=Dir(路径&“\*.xlsx”)
Application.ScreenUpdating=True
当wbName“”时执行此操作
设置tWb=Workbooks.Open(路径&“\”&wbName)
对于i=1到3
tWb.Sheets(i).ExportAsFixedFormat类型:=xlTypePDF,文件名:=path&“\”&Left(wbName,Len(wbName)-4)和“pdf”_
质量:=xlQualityStandard,IncludeDocProperties:=True,IgnorePrintAreas:=False,OpenAfterPublish:=False
接下来我
tWb.关闭错误
wbName=Dir
环
端接头
试试这个-我避免使用。选择,因为(我不确定),但我认为这可能会导致一些问题
Sub dsPdf_NoSelect()
Dim path As String
Dim wbName As String
Dim tWb As Workbook
Dim t As Single
Dim i As Long
path = ThisWorkbook.path
wbName = Dir(path & "\*.xlsx")
Application.ScreenUpdating = True
Do While wbName <> ""
Set tWb = Workbooks.Open(path & "\" & wbName)
For i = 1 To 3
tWb.Sheets(i).ExportAsFixedFormat Type:=xlTypePDF, Filename:=path & "\" & Left(wbName, Len(wbName) - 4) & "pdf", _
Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False
Next i
tWb.Close False
wbName = Dir
Loop
End Sub
子dsPdf_NoSelect()
将路径设置为字符串
将wbName设置为字符串
将tWb设置为工作簿
把t调暗为单身
我想我会坚持多久
path=ThisWorkbook.path
wbName=Dir(路径&“\*.xlsx”)
Application.ScreenUpdating=True
当wbName“”时执行此操作
设置tWb=Workbooks.Open(路径&“\”&wbName)
对于i=1到3
tWb.Sheets(i).ExportAsFixedFormat类型:=xlTypePDF,文件名:=path&“\”&Left(wbName,Len(wbName)-4)和“pdf”_
质量:=xlQualityStandard,IncludeDocProperties:=True,IgnorePrintAreas:=False,OpenAfterPublish:=False
接下来我
tWb.关闭错误
wbName=Dir
环
端接头
如果你用F8
单步执行宏,它在第一页是否仍会执行此操作?如果是,也许你可以通过单步执行来了解原因?也可以检查打印区域,也许你的第一页意外地从徽标下方开始?如果我单步执行,徽标显示正确。此外,当我运行脚本时,我仍然可以看到e徽标应该是,但不是徽标,而是一个灰色框(我假设是)一个“图片未找到”symbol。所以我相信打印区域是正确的HM,所以我可以在我的电脑上试试,你的.bmp在工作表中的确切位置?什么单元格/多大,等等?每个单元格的宽度为1.86,高度为12.75…徽标位于单元格B2中,跨度为H5(高度为0.53”,宽度为1.11”)。总的打印区域是从A2到AN71。如果你用F8
单步执行宏,它在第一页是否仍然这样做?如果是这样,也许你可以通过单步执行来了解原因?检查打印区域,也许你的第一页意外地从你的徽标下面开始?如果我单步执行,徽标显示正确。此外,当我运行s时script我仍然可以看到徽标应该位于的位置,但不是徽标,而是一个灰色框(我假设是)一个“图片未找到”symbol。所以我相信打印区域是正确的HM,所以我可以在我的电脑上试试,你的.bmp在工作表中的确切位置?什么单元格/多大,等等?每个单元格的宽度为1.86,高度为12.75…徽标位于单元格B2中,跨度为H5(高度为0.53”,宽度为1.11”)。总打印区域从A2到AN71。此代码仅输出最后一页(因为在for循环中,每次都会覆盖上一个文件)。但是,当我将I
添加到文件名中,使其将所有页面打印到单独的PDF中时(不理想,我这样做只是为了查看第一页是否正确)第一页仍然没有显示徽标,而其他页面显示了徽标。此代码仅输出最后一页(因为每次在for循环中,它都会覆盖上一个文件)。但是,当我向文件名添加I
以使其将所有页面打印到单独的PDF时(不理想,我这样做只是为了看看第一页是否正确)第一页仍然没有显示徽标,其他页面也没有显示徽标。