ПОМОЩ

4 отговора 119 прегледа
#1

ПОМОЩ

Мисля, че някъде тук четох за този проблем, но не мога да намеря точно къде. имам някакви макроси в даден файл който го ползвам като шаблон.След изпълнението на макросите го запаметявам с друго име по следния начин:

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


но при това положение в новия файл се запазват и макросите.Та въпросът ми е как в новосъздадения файл да няма и помен от макроси.

БЛАГОДАРЯ НА ТЕЗИ КОИТО ЩЕ МИ ПОМОГНАТ

Отговор
в отговор на TЪПЧO #2

Re: ПОМОЩ

Долния този ред изтрива първия макрос в текущия файл.

SendKeys "%tmm%at{tab}%d~"

Постави го преди реда със SaveAs. Работи, само ако се стартира от средата на ексел - ако го стартираш от Visual Basic Editor, няма да направи нищо.
Това е все едно че от клавиатурата набираш тази последователност:
alt+t, m, m, alt+a, t, <tab>, alt+d, <enter>

SendKeys изпраща клавишни комбинации към активния прозорец - в момента на извикването на командата това задължително трябва да е ексел, иначе не се знае какво ще се получи. За повече информация прочети хелпа на VBA за SendKeys или питай.

А, и преди да го пробваш, си дръпни настрана по едно резервно копие на отворените файлове, защото макросът се изтрива необратимо.

Отговор
в отговор на zhitov #3

Re: ПОМОЩ

Искам да защитя един файл срещу неправомерно разпространение, като на определена дата изтрия част от макросите с друг макрос в същия файл. Обаче Send keys не сработва. Появява се: "Can't perform requested operation", при опит да се изтрие друг макрос. Как мога да се справя с този проблем?

Отговор
в отговор на TЪПЧO #4

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


Отговор
в отговор на AБB #5

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


Отговор