下面的代码应该隐藏它正在打开的工作簿并运行宏然后关闭工作簿,同时不向用户显示任何内容。
我犯了什么错误?还有一种更简单的方法来获取“Sheet 1”中写入的值并将其放入“QR Code”中的单元格中吗?感谢
SELECT
T1.ID,
T1.AMOUNT,
T1.STATUS,
T1.ADDEDBY,
T1.ADDEDON,
concat(T1.ID,T1.STATUS) as NEW_COLUMN1,
'output sample' as NEW_COLUMN2,
1+3 AS NEW_COLUMN3
FROM Table1 T1
答案 0 :(得分:1)
打开后。
INSERT INTO mobile (`week`,title,`order`) VALUES(?,?,?)
答案 1 :(得分:0)
ScreenUpdating
并不意味着使应用程序不可见。这意味着在代码运行时冻结屏幕。所以它运行得更快。 (如果您再次忘记启用它,如果您的代码在到达启用它的行之前崩溃,那么您的Excel将不再响应)
为了无形地打开工作簿,您需要创建一个新的应用程序并使该应用程序不可见(默认情况下它已经不可见)
Dim App as Application
Set App = new Application
Set myData = App.Workbooks.Open("HD:Users:User1:Desktop:QR.xlsm")
然后处理剩下的代码。在这种情况下,如果您忘记App.Quit()
或者在退出应用程序之前代码崩溃,您将在后台运行一个正在运行的进程,消耗计算机的内存。
如果您想在某个时刻看到该应用:App.Visible = true
使其恢复为隐形:App.Visible = false
。
整个代码:
Sub Open_Fill_Close()
Worksheets("Sheet1").Select
invoiceNo = Range("A1")
Dim App as Application
Set App = new Application
Set myData = App.Workbooks.Open("HD:Users:User1:Desktop:QR.xlsm")
myData.Worksheets("QR Code").Select
myData.Worksheets("QR Code").Range("Y39").Select
RowCount = myData.Worksheets("QR Code").Range("Y39").CurrentRegion.Rows.Count
With myData.Worksheets("QR Code").Range("Y39")
.Offset(RowCount, 0) = invoiceNo
End With
App.Run "QR.xlsm!ExportCellsAsPicture"
App.Workbooks("QR.xlsm").Close False
App.Quit
End Sub
答案 2 :(得分:0)
这应该打开工作簿,处理它然后关闭它,而不会让用户知道屏幕的变化。
Sub Open_Fill_Close()
Dim wsq As Worksheet, wb As Workbook
Application.ScreenUpdating = False
With Worksheets("Sheet1")
Set wb = Workbooks.Open("HD:Users:User1:Desktop:QR.xlsm")
Set wsq = wb.Worksheets("QR Code")
wsq.Cells(Rows.Count, "Y").End(xlUp).Offset(1, 0) = .Range("A1").Value
'Application.Run "QR.xlsm!ExportCellsAsPicture" 'Do not know how this will be affected
wb.Close False
End With
Application.ScreenUpdating = True
End Sub
我不清楚为什么要为Y列的底部指定一个值并在不保存的情况下关闭,但我认为正在运行的宏完成。