2015-07-07 4 views
1

Нижеприведенный код должен скрывать книгу, которую она открывает, и запускать макрос, а затем закрывать книгу, все время не отображая ничего.Я написал макрос, используя Application.ScreenUpdating, однако он не работает

Какая ошибка я сделал? Также есть более простой способ взять значение, записанное в «Лист 1», и поместить его в ячейку в «QR Code»? Thanks

Sub Open_Fill_Close() 

Application.ScreenUpdating = False 

    Worksheets("Sheet1").Select 
    invoiceNo = Range("A1") 

    Set myData = Workbooks.Open("HD:Users:User1:Desktop:QR.xlsm") 

    Worksheets("QR Code").Select 
    Worksheets("QR Code").Range("Y39").Select 
    RowCount = Worksheets("QR Code").Range("Y39").CurrentRegion.Rows.Count 
    With Worksheets("QR Code").Range("Y39") 
    .Offset(RowCount, 0) = invoiceNo 
    End With 

    Application.Run "QR.xlsm!ExportCellsAsPicture" 

    Workbooks("QR.xlsm").Close False 

Application.ScreenUpdating = True 

End Sub 
+0

Plese, расскажите, что происходит. Что происходит не так? Что такое сообщение об ошибке? –

+0

Он все еще открывает файл Excel! – tbowden

ответ

1

После того как вы откроете его.

Application.Interactive = False 
Application.Visible = False 
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 
+0

Hi Daniel, Не могли бы вы поместить это в код выше, чтобы исправить это? Благодаря! – tbowden

+0

Я полагаю, что это так. Я не уверен, что все рабочие таблицы, с которыми вы хотите работать, взяты из скрытой книги. Но я сделал это. –

+0

Привет, Daniel, Спасибо, что разместили это! Мне не нужно закрывать «Лист 1», когда процесс завершен. Я все еще получаю другое окно открытия Excel, затем быстро закрываю ... Может ли это сделать невидимым? Спасибо за вашу помощь. – tbowden

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 и закрытия без сохранения, но я бы предположил, что макрос выполняющиеся выполняет.

Смежные вопросы