[英]Saving and looping using vba in excel
我正在嘗試將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。
另外,我想將文件保存在計算機上的某個文件夾中。 有人可以幫我做那些嗎?
非常感謝!
現在,您將文件保存3次。 首先,您需要將數據復制到“信封”工作表中
for i = 2 To 4
next
然后保存文件:
Worksheets("Enveloppe").Range("A1:I23").ExportAsFixedFormat _
Type:=xlTypePDF, _
Filename:=FName
您的復制/粘貼方法效率很低。
看看是否可行(未試用):
'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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.