【发布时间】:2013-07-02 05:40:29
【问题描述】:
大家早上好!
我的 VBA 代码有问题。我实际上只是想创建一个循环来打印基于相同背景模板(在名为 AFFIDAVIT CREATOR 的工作表中)的 PDF,替换 INPUT 工作表中的大约 4 个框(标签和图像)。
到目前为止,循环工作正常。唯一的问题: 它根据给定的名称(变量 r)生成 PDF 文件,但在导出为 PDF 后刷新工作表。结果:具有不同名称的多个文件,但它们都显示相同:(
有什么想法吗?
这是我的代码:
Private Sub TryMe()
Dim r As Long
Dim strCap As String
Dim strCap2 As String
r = 4
Do Until Sheets("INPUT").Cells(r, 3).Value = ""
strCap = Sheets("INPUT").Cells(r, 3).Value
Sheets("AFFIDAVIT CREATOR").Label1.Caption = strCap
strCap2 = Sheets("INPUT").Cells(r, 5).Value
Sheets("AFFIDAVIT CREATOR").Label2.Caption = strCap2
If Sheets("INPUT").Cells(r, 4) = "OE" Then
Sheets("AFFIDAVIT CREATOR").Image1.Picture = LoadPicture(ActiveWorkbook.Path & "\OE_Logo.jpg")
Else
Sheets("AFFIDAVIT CREATOR").Image1.Picture = LoadPicture(ActiveWorkbook.Path & "\SF_Logo.jpg")
End If
If Sheets("INPUT").Cells(r, 6) = "OE" Then
Sheets("AFFIDAVIT CREATOR").Image2.Picture = LoadPicture(ActiveWorkbook.Path & "\OE_Logo.jpg")
Else
Sheets("AFFIDAVIT CREATOR").Image2.Picture = LoadPicture(ActiveWorkbook.Path & "\SF_Logo.jpg")
End If
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, From:=1, To:=1, FileName:=ThisWorkbook.Path & "\" & Sheets("INPUT").Cells(r, 3) & ".pdf" _
, Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas _
:=False, OpenAfterPublish:=False
Sheets("AFFIDAVIT CREATOR").Calculate
r = r + 1
Loop
End Sub
【问题讨论】:
-
你有什么
Sheets("AFFIDAVIT CREATOR").Calculate这一行,为什么它不在.ExportAsFixedFormat ...之前?? -
实际上是/曾经。我什至做了一件幼稚的事情,并在整个代码中复制粘贴了 20 次,但它不起作用。打印完所有页面后仍然令人耳目一新!甚至尝试过:
If Sheets("AFFIDAVIT CREATOR").Calculate Then ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, From:=1, To:=1, FileName:=ThisWorkbook.Path & "\" & Sheets("INPUT").Cells(r, 3) & ".pdf" _ , Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas _ :=False, OpenAfterPublish:=False Else Sheets("AFFIDAVIT CREATOR").Calculate End If -
我不知道为什么会这样,但请尝试以下测试: B) 在您
.ExportAsFixedFormat之前插入Stop以检查图片是否在几秒钟后加载,如果是,请进一步运行子在IDE中按F5。 B)如果您将.ExportAsFixedFormat移动到分隔Sub onlyExport()并从当前在同一位置调用它,例如Call onlyExport... -
当我停止时,它会在 3 秒左右后刷新。将它隔离到一个单独的子是行不通的,我已经尝试过了:(除了调用等待函数之外我能做什么的任何想法(该解决方案不起作用)
-
我给你一个临时答案... 放入 cmets 太长了...
标签: excel vba loops pdf-generation refresh