基本上,我需要在一个pdf文件中打印11个工作表。第一个工作表需要完全打印,其他十个工作表需要基于特定单元格> 0的条件。
在我的情况下,每个工作表的特定单元格中都有一个数字。一半是C16,另一半是C20(而且我无法将它们全部更改为完全相同,因为其他代码也依赖于此)。
有没有一种方法可以创建一个宏,在这种情况下将所有这些工作表打印到一个pdf文件中?
这是我尝试的不包含if语句的代码,因为我不知道在哪里实现。 SG是不需要条件的选项卡。因为混合了哪些电池需要C16和C20,所以说1-5需要C15,6-10需要C20。谢谢!
Sub zxcv()
Sheets(Array("SG", _
"sh1", _
"sh2", _
"sh3", _
"sh4", _
"sh5", _
"sh6", _
"sh7", _
"sh8", _
"sh9", _
"sh10")).Select
Sheets("SG").Activate
ChDir "C:\Users\mynamehere\Downloads\test"
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
"C:\Users\mynamehere\Downloads\test\test2.pdf", Quality:=xlQualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _
True
End Sub
答案 0 :(得分:0)
类似的事情应该起作用。
Sub zxcv()
Dim v, arr, vals
'sheetName:rangeAddress
arr = Array("sh1:C16", "sh2:C16", "sh3:C16", "sh4:C16", "sh5:C16", _
"sh6:C20", "sh7:C20", "sh8:C20", "sh9:C20", "sh10:C20")
Sheets("SG").Select
For Each v In arr
vals = Split(v, ":") 'split to sheet name and range address
With Sheets(vals(0))
'Add to current sheet selection?
'Replace:=False prevents de-selecting any already-selected sheet(s)
If .Range(vals(1)).Value > 0 Then .Select Replace:=False
End With
Next v
Sheets("SG").Activate
ChDir "C:\Users\mynamehere\Downloads\test"
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
"C:\Users\mynamehere\Downloads\test\test2.pdf", Quality:=xlQualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _
True
End Sub
答案 1 :(得分:-1)
不使用选择或激活,它们几乎从来没有必要。 How to avoid using Select in Excel VBA
话虽如此,您首先需要使用不同的单元格引用分隔工作表。
此后,在同一循环中进行单元格比较,并在符合条件的情况下导出。
Sub zxcv()
dim elements as variant
dim sheetval as integer
for each elements in activeworkbook.sheets ' Give this a real workbook reference
if not elements.name like "SG" then
sheetval = cint(right(elements.name, len(elements.name) - (instr(1, elements.name, "sh") + 1)) ) 'Get the sheet number
if sheetval >= 6 then 'Determine which cell you need to look at
if elements.range("C20").value > 0 then 'Test value
elements.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
"C:\Users\mynamehere\Downloads\test\test2.pdf", _
Quality:=xlQualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, _
OpenAfterPublish:=True
end if
else
if elements.range("C16").value > 0 then
elements.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
"C:\Users\mynamehere\Downloads\test\test2.pdf",
Quality:=xlQualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, _
OpenAfterPublish:=_
True
end if
end if
else
elements.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
"C:\Users\mynamehere\Downloads\test\test2.pdf",
Quality:=xlQualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, _
OpenAfterPublish:=_
True
end if
next
end sub
编辑:忘记为主表放置导出。