ПОМОЩ
4 отговора
119 прегледа
ПОМОЩ
Мисля, че някъде тук четох за този проблем, но не мога да намеря точно къде. имам някакви макроси в даден файл който го ползвам като шаблон.След изпълнението на макросите го запаметявам с друго име по следния начин:
Dim NewFileName As Variant
Set NewFileName = Worksheets(1).Range("N6")
ActiveWorkbook.SaveAs Filename:= _
"C:\WINDOWS\Desktop\Dnes\" & NewFileName & ".xls", FileFormat _
:=xlNormal, Password:="", WriteResPassword:="", ReadOnlyRecommended:= _
False, CreateBackup:=False
но при това положение в новия файл се запазват и макросите.Та въпросът ми е как в новосъздадения файл да няма и помен от макроси.
БЛАГОДАРЯ НА ТЕЗИ КОИТО ЩЕ МИ ПОМОГНАТ
Dim NewFileName As Variant
Set NewFileName = Worksheets(1).Range("N6")
ActiveWorkbook.SaveAs Filename:= _
"C:\WINDOWS\Desktop\Dnes\" & NewFileName & ".xls", FileFormat _
:=xlNormal, Password:="", WriteResPassword:="", ReadOnlyRecommended:= _
False, CreateBackup:=False
но при това положение в новия файл се запазват и макросите.Та въпросът ми е как в новосъздадения файл да няма и помен от макроси.
БЛАГОДАРЯ НА ТЕЗИ КОИТО ЩЕ МИ ПОМОГНАТ
Re: ПОМОЩ
Долния този ред изтрива първия макрос в текущия файл.
SendKeys "%tmm%at{tab}%d~"
Постави го преди реда със SaveAs. Работи, само ако се стартира от средата на ексел - ако го стартираш от Visual Basic Editor, няма да направи нищо.
Това е все едно че от клавиатурата набираш тази последователност:
alt+t, m, m, alt+a, t, <tab>, alt+d, <enter>
SendKeys изпраща клавишни комбинации към активния прозорец - в момента на извикването на командата това задължително трябва да е ексел, иначе не се знае какво ще се получи. За повече информация прочети хелпа на VBA за SendKeys или питай.
А, и преди да го пробваш, си дръпни настрана по едно резервно копие на отворените файлове, защото макросът се изтрива необратимо.
SendKeys "%tmm%at{tab}%d~"
Постави го преди реда със SaveAs. Работи, само ако се стартира от средата на ексел - ако го стартираш от Visual Basic Editor, няма да направи нищо.
Това е все едно че от клавиатурата набираш тази последователност:
alt+t, m, m, alt+a, t, <tab>, alt+d, <enter>
SendKeys изпраща клавишни комбинации към активния прозорец - в момента на извикването на командата това задължително трябва да е ексел, иначе не се знае какво ще се получи. За повече информация прочети хелпа на VBA за SendKeys или питай.
А, и преди да го пробваш, си дръпни настрана по едно резервно копие на отворените файлове, защото макросът се изтрива необратимо.
Re: ПОМОЩ
Искам да защитя един файл срещу неправомерно разпространение, като на определена дата изтрия част от макросите с друг макрос в същия файл. Обаче Send keys не сработва. Появява се: "Can't perform requested operation", при опит да се изтрие друг макрос. Как мога да се справя с този проблем?
Re: ПОМОЩ
Sub Delete_Codes()
If MsgBox("This code will be delete all codes in VBE." & vbCrLf & "Do you want?", vbYesNo, "Attention!!!") = vbNo Then Exit Sub
For Each Modul In ThisWorkbook.VBProject.VBComponents
With Modul.Codemodule
.Deletelines 1, .Countoflines
End With
Next
ActiveWorkbook.SaveCopyAs ..................................
End Sub
If MsgBox("This code will be delete all codes in VBE." & vbCrLf & "Do you want?", vbYesNo, "Attention!!!") = vbNo Then Exit Sub
For Each Modul In ThisWorkbook.VBProject.VBComponents
With Modul.Codemodule
.Deletelines 1, .Countoflines
End With
Next
ActiveWorkbook.SaveCopyAs ..................................
End Sub
Re: ПОМОЩ
Sub DeleteProcedure()
Dim First_Row As Long, Last_Row As Long
With ThisWorkbook.VBProject.VBComponents("Module_Name").CodeModule
First_Row = .ProcStartLine("Macro_Name", vbext_pk_Proc)
Last_Row = .ProcCountLines("Macro_Name", vbext_pk_Proc)
.DeleteLines First_Row, Last_Row
End With
End Sub
Dim First_Row As Long, Last_Row As Long
With ThisWorkbook.VBProject.VBComponents("Module_Name").CodeModule
First_Row = .ProcStartLine("Macro_Name", vbext_pk_Proc)
Last_Row = .ProcCountLines("Macro_Name", vbext_pk_Proc)
.DeleteLines First_Row, Last_Row
End With
End Sub