vba - 尽管在后台运行,但窗口不可见
问题描述
我有一个正在尝试通过 Access 运行的宏,它将打开一个 Excel 工作表,对其执行一些操作,然后使工作表保持打开状态。
我的大部分工作都在工作,除了无法让我的 excel 文档明显打开。如果我检查任务管理器,一个 excel 进程正在后台运行,所以确实发生了一些事情,只是我看不到任何东西。
我尝试对通过 stackoverflow 和其他资源找到的一些代码进行采样,我相信您会在我当前的代码中看到其中的一些。但我尝试了大约一个小时,但无济于事。
Private Sub Command1_Click()
Dim fd As FileDialog
Dim MySheetPath As String
Dim Xl As Excel.Application
Dim XlBook As Excel.Workbook
Dim XlSheet As Excel.Worksheet
On Error GoTo ErrorHandler
'allowing selection of the time
Set fd = Application.FileDialog(msoFileDialogFilePicker)
fd.AllowMultiSelect = False
If fd.Show = True Then
If fd.SelectedItems(1) <> vbNullString Then
MySheetPath = fd.SelectedItems(1)
End If
Else
End
End If
Set Xl = CreateObject("Excel.Application")
Set XlBook = GetObject(MySheetPath)
ShowaWindow (MySheetPath)
Set XlSheet = XlBook.Worksheets(1)
XlSheet.Rows(2).EntireRow.Insert
XlSheet.Range("D2") = "ABC"
Set Xl = Nothing
Set XlBook = Nothing
Set XlSheet = Nothing
Exit Sub
ErrorHandler:
Set fd = Nothing
MsgBox "Error " & Err & ": " & Error(Err)
End Sub
Sub ShowaWindow(sFileName As String)
Dim oWb As Workbook
Set oWb = GetObject(sFileName)
For Each oWb In Workbooks
If LCase(oWb.Name) <> LCase(sFileName) Then
oWb.Windows(1).Visible = True
Exit For
End If
Next
End Sub
理想情况下,我希望能够看到工作表出现。
解决方案
Set Xl = CreateObject("Excel.Application")
Xl.Visible=True
您不需要在创建对象后立即放置它,就在您将对象设置为 Nothing 之前。
推荐阅读
- javascript - 为什么我的 Javascript 代码中的随机数是连接而不是添加?
- python - 在 for 循环中酸洗列表
- docker - 如何在 filebeat.yml 文件中使用变量
- visual-studio - Visual Studio 中缺少 macOS 模板
- c# - 我有一张收据表格,我需要将此表格 tex 框链接到其他表格中的其他文本框,我该怎么做?
- sql - 如何在动态 SQL 中包含中断?
- java - 如何在 Secure_CRT 上远程编辑 zip 内的文件?
- java - 使用超类的变量访问派生类的对象
- angular - 从服务器获取数据后,角度材料表排序不起作用
- dart - 在 vscode 中无法启动 Dart Analyzer