【发布时间】:2014-02-08 06:39:11
【问题描述】:
我有一个包含 x 个工作表的工作簿。 Sheet1 中的一个按钮 (commandbutton1) 打开一个带有两个复选框和一个预览按钮的用户表单,用于在 2 个工作表之间进行选择以在 PDF 中预览。
这是我的预览按钮代码。
Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
Private Sub CommandButton1_Click()
Dim i As Integer
Dim CheckBoxName As String
For i = 1 To 2
CheckBoxName = "CheckBox" & i
If Me.Controls(CheckBoxName).Value = True Then
Sheets(Me.Controls(CheckBoxName).Caption).Select (False)
End If
Next i
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, FileName:="D:\Preview.pdf"
Unload Me
Dim File As String
File = "D:\Preview.pdf"
ShellExecute 0, "Open", File, "", "", vbNormalNoFocus
End Sub
现在,问题是 Sheet1 总是包含在预览文件中,因为它是包含 commandbutton1 的工作表。
那么有没有办法在导出工作表 6 和 21 之前取消选择工作表 1??
我也尝试了另一种方法,但它总是卡在这一行 (Sheets(Array(SheetNames)).Select)
Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
Private Sub CommandButton1_Click()
Dim i As Integer
Dim CheckBoxName As String
Dim SheetNames As String
For i = 1 To 2
CheckBoxName = "CheckBox" & i
If Me.Controls(CheckBoxName).Value = True Then
SheetNames = SheetNames & Me.Controls(CheckBoxName).Caption & ","
End If
Next i
SheetNames = Mid(SheetNames, 1, Len(SheetNames) - 1)
Sheets(Array(SheetNames)).Select
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, FileName:="D:\Preview.pdf"
Unload Me
Dim File As String
File = "D:\Preview.pdf"
ShellExecute 0, "Open", File, "", "", vbNormalNoFocus
End Sub
请对这些有任何帮助吗??
提前谢谢你。
【问题讨论】: