Excel:打开工作簿

时间:2014-07-21 20:28:44

标签: excel vba excel-vba worksheet

Private Sub CommandButton1_Click()
        ...
        Set wb = Workbooks.Open(Filename:="C:\book1.xls")
        If MsgBox("Please Review the Transmittal sheet, if satisfied click Yes to send,  No to cancel." & vbCrLf & "Transmittal Number: " & Transm, vbYesNo) = vbNo Then
        ...
End Sub

问题是这样,我试图从另一个工作簿中打开一个工作簿。第二个工作簿打开但仅限于某一点 - 屏幕是白色的,好像它正在等待某些事情完成。

我的代码移动到msgbox提示符的下一行,一旦我选择是或否并且子例程完成,第二个工作簿然后打开完全显示其数据。在子例程中调用时,它不能正常打开,而不是在子例程完全执行

之下

任何想法为什么?

总而言之,我正在尝试找出以下方案的解决方案。用户打开Excel工作簿,单击打开用户表单的工作表上的按钮。用户在组合框中选择一些信息,并根据这些选择,用相关数据填写excel表。填充后,用户单击按钮以根据Excel工作簿中的信息生成报告。在发送之前,用户必须检查并确认excel工作簿上的数据是否正确,因此系统会提示他们使用msgbox执行此操作 - 如果数据正确则单击是,否则单击否。但是使用msgbox和用户表单,他们无法访问excel工作簿。我对此的想法是打开一个新工作簿并从当前工作簿中复制数据,允许用户以这种方式查看它。也许你有更好的方法来做到这一点。

请注意,原始代码不是我的,所以我只修复错误,这个特殊的错误是由于用户表单和msgbox,用户无法专注于excel工作表。

吉姆

2 个答案:

答案 0 :(得分:0)

不确定您的确切问题是什么,但是如果要在“阅读”表单后提示是/否:

宏#1(位于VB编辑器的“Thisworkbook”中):

Private Sub Workbook_Open()
Sheets("Transmittal sheet").Activate 'or whatever the sheet's name
End Sub

这将强制用户在打开工作簿时在屏幕上显示此工作表。 接下来,宏#2(位于“传递表”(表X))''再次出现任何表单名称/编号:

Private Sub Worksheet_Deactivate()
    Set wb = Workbooks.Open(Filename:="C:\book1.xls")
    If MsgBox("Please Review the Transmittal sheet, if satisfied click Yes to send,  No to cancel." & vbCrLf & "Transmittal Number: " & Transm, vbYesNo) = vbNo Then
End Sub

当用户试图离开工作表时,这将提示。另一种方法是将第二个宏放在workbook_beforeClose下,取决于情况如何。如果你能澄清你想要达到的目标,那就更好了。

答案 1 :(得分:0)

我无法找到合适的解决方案,msgbox似乎完全锁定了excel,我也无法查看新的工作表。

因此我想出的工作是将当前工作表导出为PDF并显示它。

   Dim pdfFile As String
    pdfFile = Get_Temp_File_Name(sExtensao:="pdf")

    ThisWorkbook.ExportAsFixedFormat _
    Type:=xlTypePDF, _
    Filename:=pdfFile, _
    Quality:=xlQualityStandard, _
    IncludeDocProperties:=True, _
    IgnorePrintAreas:=False, _
    OpenAfterPublish:=True
    ' Allow time for PDF to be created and loaded
    Application.Wait (Now + TimeValue("0:00:10"))
GoTo PreviewSkip

TrapPreview:
    MsgBox Err.Description

PreviewSkip:

If MsgBox(...

我还使用Excel Tilte Set中的代码生成带有pdf扩展名的临时文件名。

感谢大家的投入。 吉姆