Excel 另存为PDF宏,带下拉菜单
所以我一直在使用宏将工作表保存为PDF,但现在我不再使用多个工作表,而是使用一个工作表,使用单元格A1中的下拉列表提取所有需要的信息,然后根据下拉列表的单元格值,更新工作表上的其他字段 以下宏用于逐页执行:Excel 另存为PDF宏,带下拉菜单,excel,vba,Excel,Vba,所以我一直在使用宏将工作表保存为PDF,但现在我不再使用多个工作表,而是使用一个工作表,使用单元格A1中的下拉列表提取所有需要的信息,然后根据下拉列表的单元格值,更新工作表上的其他字段 以下宏用于逐页执行: Sub SaveWorksheetsAsPDFs() Dim sFile As String Dim sPath As String Dim wks As Worksheet With ActiveWorkbook sPath = .Path
Sub SaveWorksheetsAsPDFs()
Dim sFile As String
Dim sPath As String
Dim wks As Worksheet
With ActiveWorkbook
sPath = .Path & "\"
For Each wks In .Worksheets
Select Case wks.Name
Case Else
'Code here to run on the other sheets
sFile = wks.Name & ".pdf"
wks.ExportAsFixedFormat Type:=xlTypePDF, _
Filename:=sPath & sFile, _
Quality:=xlQualityStandard, _
IncludeDocProperties:=False, _
IgnorePrintAreas:=False, _
OpenAfterPublish:=False
End Select
Next wks
End With
End Sub
既然我把所有的东西都放在一张纸上,那么有没有办法从下拉列表中找到每一项,让它填充并自动保存为PDF?谢谢我认为这应该行得通-您只需将选项保存到一个数组中,然后将需要的任何单元格设置为选项。在我的示例中,我在
Sheet1
工作表上使用了A1
。根据需要进行调整:
Option Explicit
Sub loop_through_dropdown()
Dim inputRange
inputRange = Range("A1").Validation.Formula1
Dim inputs, temp_option As String
inputs = Split(inputRange, ",")
Dim i As Long
For i = LBound(inputs) To UBound(inputs)
temp_option = (Trim(inputs(i)))
'do something with temp_option
Debug.Print (temp_option)
Worksheets("Sheet1").Range("A1").Value = temp_option
' Now, the page should update with the data for that option. Now simply run the macro
Call SaveWorksheetsAsPDFs
Next i
End Sub
因此,您发布的代码是有效的——您在问如何为下拉列表中的每个项目运行该代码?假设下拉列表位于
A1
-如果更改了其中的值,工作簿中的其他值将更新,对吗?您想将每个选项的所有信息和结果数据保存为PDF格式吗?@BruceWayne,是的!正好^I收到一个运行时错误“5”:过程调用或参数无效。当我尝试调试它时,错误似乎出现在SaveAsPDF脚本中。但是,在此之前,A1中的值变为#值!saveAsPDF
脚本与我的循环在同一个模块中吗?应该是。您可能需要执行调用saveworksheetsapsdfs()
。即时窗口(在VBEditor打开的情况下按CTRL+G)作为第一个选项打印什么?是的,我将其放置在同一个模块中。我在下面尝试过,选项Explicit在结束后会落在SaveWorksheetsAsPDFs()下,因此不起作用。然后我尝试将它放在SaveWorksheetsAsPDFs()脚本之上,Option Explicit在它自己的部分上运行,然后在运行它时遇到了相同的错误。当我尝试拉动即时窗口时,我得到了A1下拉列表的范围,即class='Sheet1'$E$5:$E$400仅调用saveworksheetsapsdfs
宏将不起作用。SaveAs需要重写,因此它不会查找每个工作表。另外,文件名:
也需要更改。我正在考虑对列表框使用一个工作表\u Change
事件,并将另存为。这样,OP就可以使用列表框来选择他想要保存到pdf的数据。我将使用listbox值作为sFile
变量