Страницы: 1
RSS
vbs не находит макрос из personal.xlsb
 
Приветствую.
Господа прощу помощи в решении проблемы.
Нужно из vbs запустить макрос из книги personal.xlsb для открытого файла.
При первом запуске все работало нормально, но после того как начал подкручивать макрос, стал замечать, что он(макрос) запускается старый.
После переименования макроса в личной книге, vbs мне выдал что он не может найти вообще его.
То что он там есть это факт.
Такое ощущение, что файл personal.xlsb переехал в кеш и оттуда все время открывается. (Но стоит задать старое имя и макрос работает.)
Помогите разрулить данный вопрос.

Текст макроса.

Код
Const xlDelimited = 1
Const xlNormal = -4143 

Dim Excel
Set Excel = CreateObject("Excel.Application")
Excel.DisplayAlerts = False
Excel.Visible = True
With Excel
   .Workbooks.Open "C:\1.csv"
   .Sheets(1).Columns("A").TextToColumns .Range("A1"), xlDelimited, , , , True
   .ActiveWorkbook.SaveAs .ActiveWorkbook.Path & "\1.xls", xlNormal
   .Workbooks.Open ("c:\Program Files (x86)\Microsoft Office\Office15\XLSTART\PERSONAL.xlsb")
   .Workbooks.Open ("c:\1.xls")
   .Run("'PERSONAL.xlsb'!Perebor_new")

End With
Excel.DisplayAlerts = True
'~~> Cleanup
Set Excel = Nothing
 
 
Прикольно, удалил книгу c:\Program Files (x86)\Microsoft Office\Office15\XLSTART\PERSONAL.xlsb
открываю ексель, а книга то есть.

Если же пытаюсь просто открыть файл PERSONAL.xlsb в excel, получаю ошибку, что он не может открыть 2 файла с одинаковыми названиями. Тоесть где-то есть скрытая копия??
Изменено: Антон - 16.06.2014 05:49:03
 
почему "скрытая"?
почему "копия"?
почему "где-то"?

почему у того personal.xlsb, который открывается, не посмотреть в свойствах - в какой папке он лежит?
фрилансер Excel, VBA - контакты в профиле
"Совершенствоваться не обязательно. Выживание — дело добровольное." Э.Деминг
 
Думаю беда потому, что открываете новый эксель, а не используете уже открытый (в котором уже испольуется этот персонал).
А по задаче - думаю вполне возможно, что этот перебор можно делать напрямую в тексте (csv), и уже результат выгружать в 1.xls.
 
Цитата
ктулху пишет:
почему у того personal.xlsb
ikki а где взять открытый? я его не вижу в процессах.

Hugo а примерчик можно???
а какая разница на каком обрабатывать? он и пустоту обработает.
Изменено: Антон - 16.06.2014 13:21:40
 
Примерчик чего?
Вот примерчик vbs - как подцепиться к уже открытому экселю, или создать свой, если нет открытого.
Код
Dim objExcel

ActivateExcel

Set wb = objExcel.Workbooks.Open ("C:\test.xls")
wb.Application.OnTime Now, "Macro1"

Private Function ActivateExcel()
On Error resume next 
Set objExcel = GetObject(, "Excel.Application")
If objExcel Is Nothing Then
   Set objExcel = CreateObject("Excel.Application")
   objExcel.Visible = false 'True
End If
End Function 
 
Готов оплатить работу, прошу помощи ибо очень актуально.
Файлы вышлю на почту.
Модераторам, пожалуйста перенесите тему в раздел Работа.
Спасибо.
Изменено: Антон - 16.06.2014 15:44:12
 
Проверил - всё работает.
Выкладываю как тестил - Ваши строки отключены, мои добавленные/ненужные увидите:

Код
Const xlDelimited = 1
Const xlNormal = -4143 

Dim Excel

ActivateExcel

Excel.DisplayAlerts = False
Excel.Visible = True
With Excel
   '.Workbooks.Open "C:\1.csv"
   '.Sheets(1).Columns("A").TextToColumns .Range("A1"), xlDelimited, , , , True
   '.ActiveWorkbook.SaveAs .ActiveWorkbook.Path & "\1.xls", xlNormal
   '.Workbooks.Open ("c:\Program Files (x86)\Microsoft Office\Office15\XLSTART\PERSONAL.xlsb")
   .Workbooks.Open ("C:\Documents and Settings\user\Application Data\Microsoft\Excel\XLSTART\PERSONAL.XLS")
   '.Workbooks.Open ("c:\1.xls")
   '.Run("'PERSONAL.xlsb'!Perebor_new")
   .Run("'PERSONAL.xls'!test")

End With
Excel.DisplayAlerts = True
'~~> Cleanup
Set Excel = Nothing


Private Function ActivateExcel()
On Error resume next 
Set Excel = GetObject(, "Excel.Application")
If Excel Is Nothing Then
   Set Excel = CreateObject("Excel.Application")
   'Excel.Visible = false 'True
End If
End Function  
 
странно, открываю книгу в которой нужно провернуть макрос, запускаю ваш скрипт, получаю ошибку Не удается выполнить макрос, он отсутствует.
 
Макрос в персонал
Код
Sub test_()
Dim LastRow As Long
LastRow = Cells(Rows.Count, 1).End(xlUp).Row
For i = 2 To LastRow
    Cells(i, 7).Value = Cells(i, 1).Value & " тест " & i
Next i
End Sub
Файл в примере.
VBS Hugo
 
Может я чего-то не понимаю??? Hugo можно вариант с открытием книги?
 
Я удалил файл PERSONAL.xlsb, теперь при изменении кода в VBA изменения нигде не фиксируются. Возможно из-за этого не находит?
хотя если просто запускать макросы, они работают.
Кто подскажет как быть?
 
Съел себе весь мозг.
Оказывается не туда сохранял файл.
Открывал в тотале( без галочки показывать СИСТЕМНЫЕ файлы)
нашел свой файл тут c:\Users\Server\AppData\Roaming\Microsoft\Excel\XLSTART\PERSON­AL.xlsb
Изменено: Антон - 16.06.2014 20:04:27
Страницы: 1
Наверх