2016-12-17 6 views
1

私はpdfにエクスポートする必要があるいくつかのExcelワークブックがあるフォルダを持っています。各ブックの各シートにロゴ(.bmp)があります。以下のコードを使用すると、最初のページにのみロゴが表示されます(代わりにグレーのプレースホルダが表示されます)。残りのページにはロゴがあります。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

関連する問題