2016-12-17 75 views
1

我有一個文件夾,裏面有幾個需要導出爲pdf格式的excel工作簿。每個工作簿的每張紙上都有一個徽標(.bmp)。當我使用下面的代碼時,pdfs只在第一頁上丟失了標識(它有一個灰色的佔位符)。其餘的頁面有徽標。Excel VBA-第一張圖片在導出前不會加載

我的代碼:

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 

我使用ActiveSheet.RefreshAllDoEvents,以及增加一個Timer/Do While循環嘗試。當我在導出語句之前放置Stop時,第一張表格正確顯示徽標。但是,當我把Aplication.Wait(Now...標誌不顯示。

任何想法? 謝謝

+0

如果你用'F8'來瀏覽宏,它是否仍然在第一頁上做?也許你可以看到爲什麼,如果是這樣,通過逐步?檢查打印區域,也許你的第一頁意外地從你的標誌下面開始? – BruceWayne

+0

如果我經過,標誌顯示正確。另外,當我運行腳本時,我仍然可以看到徽標應該在的位置,但是徽標不是帶有(我認爲是)「圖片未找到」符號的灰色框。所以我相信打印區域是正確的 – abailie3

+0

嗯,所以我可以在我的電腦上試試,工作表中的.bmp究竟在哪裏?什麼細胞/多大等? – BruceWayne

回答

0

試試這個 - 我避免使用.Select,因爲(我不確定),但我認爲這可能會導致一些問題。

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 
+0

此代碼僅輸出最後一頁(因爲for循環中的每次都會覆蓋前一個文件)。但是,當我在文件名中添加「i」以使其打印所有頁面以分離PDF(不理想,我只是爲了查看第一頁是否正確)第一頁仍未顯示徽標,其中其他網頁也做了。 – abailie3

相關問題