【问题标题】:Saving and looping using vba in excel在excel中使用vba保存和循环
【发布时间】:2018-02-06 22:12:28
【问题描述】:

我正在尝试将 Excel 工作表的一部分保存为 PDF,该部分基于工作簿另一工作表中的信息。

我要在 PDF 中打印 A1:I23 部分的第一张纸名为 Enveloppe。 存储数据的第二张表名为 Info-Cas。

基本上,我制作了一个表格,我必须将其导出为 PDF 并将 144 个 PDF 中的每一个合并在一起。当然,我不想一一输入,所以我编写了以下宏。显然,它现在不起作用。

Dim FName As String
Dim i As Integer

FName = Worksheets("Enveloppe").Range("K1").Text

For i = 2 To 4

    'Copier la journée du cas
    Worksheets("Info-Cas").Range("K" & i).Copy
    Worksheets("Enveloppe").Range("A3").PasteSpecial Paste:=xlPasteValues

    'Copier les informations principales (Cas, Numéro d'équipe, Salle)
    Worksheets("Info-Cas").Range("A" & i).Copy
    Worksheets("Enveloppe").Range("B4").PasteSpecial Paste:=xlPasteValues
    Worksheets("Info-Cas").Range("B" & i).Copy
    Worksheets("Enveloppe").Range("B5").PasteSpecial Paste:=xlPasteValues
    Worksheets("Info-Cas").Range("C" & i).Copy
    Worksheets("Enveloppe").Range("B6").PasteSpecial Paste:=xlPasteValues
    Worksheets("Info-Cas").Range("D" & i).Copy
    Worksheets("Enveloppe").Range("B7").PasteSpecial Paste:=xlPasteValues
    Worksheets("Info-Cas").Range("E" & i).Copy
    Worksheets("Enveloppe").Range("B8").PasteSpecial Paste:=xlPasteValues

    'Copier les informations sur l'horaire
    Worksheets("Info-Cas").Range("F" & i).Copy
    Worksheets("Enveloppe").Range("B10").PasteSpecial Paste:=xlPasteValues
    Worksheets("Info-Cas").Range("G" & i).Copy
    Worksheets("Enveloppe").Range("B11").PasteSpecial Paste:=xlPasteValues
    Worksheets("Info-Cas").Range("H" & i).Copy
    Worksheets("Enveloppe").Range("B12").PasteSpecial Paste:=xlPasteValues
    Worksheets("Info-Cas").Range("I" & i).Copy
    Worksheets("Enveloppe").Range("B13").PasteSpecial Paste:=xlPasteValues
    Worksheets("Info-Cas").Range("J" & i).Copy
    Worksheets("Enveloppe").Range("B14").PasteSpecial Paste:=xlPasteValues


    'Enregistrer le document au format PDF
    Worksheets("Enveloppe").Range("A1:I23").ExportAsFixedFormat _
        Type:=xlTypePDF, _
        Filename:=FName
Next

我遇到的问题是,对于我尝试过的示例,现在只有最后一个 PDF 正在保存。

另外,我想将文件保存在我计算机上的某个文件夹中。谁能帮我做这些?

非常感谢!

【问题讨论】:

  • 因为您没有在 for 循环中更新文件名。
  • 名称正在使用来自 B4 和 B5 的信息在 K1 单元格中自我更新。是否仍然可以,还是我必须复印第三张纸并只打印一次?

标签: vba excel pdf


【解决方案1】:

现在,您将文件保存 3 次。 首先,您需要将数据复制到“信封”表上

for i = 2 To 4
next

然后保存文件:

Worksheets("Enveloppe").Range("A1:I23").ExportAsFixedFormat _
    Type:=xlTypePDF, _
    Filename:=FName

【讨论】:

    【解决方案2】:

    您的复制/粘贴方法效率很低。

    看看这是否有效(未经测试):

    'Your worksheet variables
    Dim wsInfoCas As Worksheet, wsEnveloppe As Worksheet
    Set wsInfoCas = ThisWorkbook.Worksheets("Info-Cas")
    Set wsEnveloppe = ThisWorkbook.Worksheets("Enveloppe")
    
    'Your copy variable
    Dim retVal, retArr1(), retArr2()
    
    For i = 2 To 4
    
        FName = wsEnveloppe.Range("K1").Text
    
        With wsInfoCas
    
            retVal = .Range("K" & i).Value
            retArr1 = .Range("A" & i, "E" & i).Value
            retArr2 = .Range("F" & i, "J" & i).Value
    
        End With
    
        With Application.WorksheetFunction
    
            wsEnveloppe.Range("A3").Value = retVal
            wsEnveloppe.Range("B4:B8").Value = .Transpose( _
                    retArr1)
            wsEnveloppe.Range("B10:B14").Value = .Transpose( _
                    retArr2)
        End With
    
    Next
    
    wsEnveloppe.Range("A1:I23").ExportAsFixedFormat _
        Type:=xlTypePDF, _
        Filename:=FName
    

    【讨论】:

      猜你喜欢
      • 2016-01-31
      • 2020-06-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-26
      相关资源
      最近更新 更多