Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel VBA-导出前不会加载第一张图片_Vba_Excel - Fatal编程技术网

Excel VBA-导出前不会加载第一张图片

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 =

我有一个文件夹,里面有几个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 = 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时(不理想,我这样做只是为了看看第一页是否正确)第一页仍然没有显示徽标,其他页面也没有显示徽标。