/ / VBA Відкрийте Excel, змініть (ранг), закрийте excel - excel, vba, excel-vba

VBA Open excel, modify (Rank), Закрити Excel - Excel, VBA, Excel-VBA

Я намагаюся використовувати Excel (2013), щоб відкритиіснуючий документ excel, змінити його, додавши код рейтингу, а потім закривши його. Мій код відкриє документ Excel, але я не знаю, як реалізувати розділ ByVal Target As Range. Я не знаю достатньо про VBA, щоб покласти цей макрос у макрос. Пропозиції?

Sub Macro1()
Workbooks.Open Filename:= _
"C:UsersXDesktoptestprogram2.xlsx"

Sub Worksheet_Change(ByVal Target As Range)
If Target.Column <> 13 Or Target.Cells.Count > 1 Then Exit Sub
"Dim SortRange As Range
Set SortRange = Range(("A1"), Cells(Rows.Count, 13).End(xlUp))
SortRange.Sort Key1:=Range("M2"), Order1:=xlAscending, Header:=xlYes
End Sub

"File to Macro (Should be same as above)

ActiveWorkbook.SaveAs Filename:= _
"C:UsersXDesktoptestprogram2.xlsx" _
, AccessMode:=xlShared
ActiveWorkbook.Close
End Sub

Відповіді:

0 для відповіді № 1

Цікава спроба, але зовсім не правильно. Ви повинні прийти з JavaScript або де-небудь, де можна гніздити процедури (JS має закриття). На жаль, немає такого фанки в VBA. Будь ласка, видаліть внутрішній під зовнішнім зовнішнім підкласом і помістіть його в модуль "за" лист, до якого він стосується.


0 для відповіді № 2

Викличте другий підрозділ з першого підкаталу, але не кладіть його всередину.

Sub Macro1()
Workbooks.Open Filename:= _
"C:UsersXDesktoptestprogram2.xlsx"

Worksheets("program2.xlsx").Activate
Call Worksheet_Change

ActiveWorkbook.SaveAs Filename:= _
"C:UsersXDesktoptestprogram2.xlsx" _
, AccessMode:=xlShared
ActiveWorkbook.Close
End Sub
Sub Worksheet_Change(ByVal Target As Range)
If Target.Column <> 13 Or Target.Cells.Count > 1 Then Exit Sub
"Dim SortRange As Range
Set SortRange = Range(("A1"), Cells(Rows.Count, 13).End(xlUp))
SortRange.Sort Key1:=Range("M2"), Order1:=xlAscending, Header:=xlYes
End Sub