/ / VBA Otvoriť excel, upraviť (Rank), Zavrieť excel - excel, vba, excel-vba

VBA Otvoriť excel, upraviť (Rank), Zavrieť excel - excel, vba, excel-vba

Snažím sa použiť Excel (2013) na otvorenieexistujúci dokument programu Excel, upravte ho pridaním klasifikačného kódu a potom ho zatvorte. Môj kód otvorí dokument programu Excel, ale nie som si istý, ako implementovať sekciu ByVal Target As Range. Neviem o VBA dosť, aby toto makro vložilo do makra. Návrhy?

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

odpovede:

0 pre odpoveď č. 1

Zaujímavá skúste, ale celkom zle. Musíte prísť z JavaScriptu alebo niečo, kde je možné hniezdiť rutiny (JS má uzávery). Bohužiaľ, žiadne také funky veci vo VBA. Odstráňte vnútornú časť vonkajšej časti a umiestnite ju do modulu "za" hárok, na ktorý sa vzťahuje.


0 pre odpoveď č. 2

Zavolajte druhú čiastku z prvého pododseku, ale nie je vložte dovnútra.

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