我知道这似乎是一个非常简单的问题,但我尝试了不同的方法来创建一个可以完成我正在寻找的循环: 基本上我有一个包含4列(未知行数)的Excel工作表,我想在其中输入数据。然后将此数据镜像到第二张纸,其中包含用于创建多个PDF文件的“打印设计”。 问题是:我现在试了4天创建一个循环而没有取得任何成果!
如果你能帮助我,这是数据条目: SCREENSHOT
Public Sub InputData()
Dim strCap As String
strCap = Sheets("INPUT").Cells(4, 3).Value
Label1.Caption = strCap
Dim strCap2 As String
strCap2 = Sheets("INPUT").Cells(4, 5).Value
Label2.Caption = strCap2
If Sheets("INPUT").Cells(4, 4) = "OE" Then
Image1.Picture = LoadPicture(ActiveWorkbook.Path & "\OE_Logo.jpg")
Else
Image1.Picture = LoadPicture(ActiveWorkbook.Path & "\SF_Logo.jpg")
End If
If Sheets("INPUT").Cells(4, 6) = "OE" Then
Image2.Picture = LoadPicture(ActiveWorkbook.Path & "\OE_Logo.jpg")
Else
Image2.Picture = LoadPicture(ActiveWorkbook.Path & "\SF_Logo.jpg")
End If
Application.Calculate
Call PrintPDF
End Sub
Sub PrintPDF()
Dim pdfjob As Object
Dim sPDFName As String
Dim sPDFPath As String
'/// Change the output file name here! ///
sPDFName = "Affidavit" & " " & Sheets("INPUT").Cells(4, 3) & "_" & Sheets ("INPUT").Cells(4, 5) & ".pdf"
sPDFPath = ActiveWorkbook.Path & Application.PathSeparator
'Check if worksheet is empty and exit if so
If IsEmpty(ActiveSheet.UsedRange) Then Exit Sub
Set pdfjob = CreateObject("PDFCreator.clsPDFCreator")
With pdfjob
If .cStart("/NoProcessingAtStartup") = False Then
MsgBox "Can't initialize PDFCreator.", vbCritical + _
vbOKOnly, "PrtPDFCreator"
Exit Sub
End If
.cOption("UseAutosave") = 1
.cOption("UseAutosaveDirectory") = 1
.cOption("AutosaveDirectory") = sPDFPath
.cOption("AutosaveFilename") = sPDFName
.cOption("AutosaveFormat") = 0 ' 0 = PDF
.cClearCache
End With
'Print the document to PDF
Sheets("AFFIDAVIT CREATOR").PrintOut Copies:=1, From:=1, To:=1, ActivePrinter:="PDFCreator"
'Wait until the print job has entered the print queue
Do Until pdfjob.cCountOfPrintjobs = 1
DoEvents
Loop
pdfjob.cPrinterStop = False
'Wait until PDF creator is finished then release the objects
Do Until pdfjob.cCountOfPrintjobs = 0
DoEvents
Loop
pdfjob.cClose
Set pdfjob = Nothing
End Sub
我实际上想为每一行创建一个单一的PDF文件,所以对第4,5,6等行执行此操作,直到VBA找到一个空行。
任何帮助都将受到高度赞赏,提前感谢我在Stackoverflow上找到的所有帮助,希望有助于此!
谢谢,
的Yannick
答案 0 :(得分:2)
通常,在VBA中创建循环的好方法包括以下步骤:
Dim myRange as Range
声明)Dim r as Range, myRange as Range Set myRange = Range(Sheet("INPUT").cells(4,4), Sheet("INPUT").cells(4,4).end(xlDown)) For Each r in myRange.Cells turnRowIntoPdf r Next
这将myRange
定义为从单元格(4,4)开始的范围 - 即D4 - 并且与条目一样深入。然后它将依次循环遍历这些单元格中的每一个(D4,D5,D6,...),并使用参数turnRowIntoPdf
调用子r
(这些单元格将依次为每个单元格)。然后,您可以编写一个以此参数作为输入的子,并创建pdf。
认为你可以从那里管理它?