Автоматический импорт макроса в Excel и запуск его

0

Я сделал модуль, то есть .basфайл, который выполняет работу, которую я хочу сделать в Excel. Мне приходится работать с этим модулем в четырех разных файлах каждый день.

Теперь я хочу, скажем, скрипт, который автоматически связывает этот модуль с файлом Excel, а затем макрос выполняется сам по себе.

Кусок кода, который я пробовал до сих пор:

Option Explicit

On Error Resume Next

ExcelMacroExample

Sub ExcelMacroExample() 

  Dim xlApp 
  Dim xlBook 

  Set xlApp = CreateObject("Excel.Application") 
  Set xlBook = xlApp.Workbooks.Open("C:\Denied_report.csv", 0, True) 
  xlApp.Run "PERSONAL.XLSB!AllowedMacro"
  xlApp.SaveAs
  xlApp.ActiveWorkbook.Close
  xlApp.Quit 

  Set xlBook = Nothing 
  Set xlApp = Nothing 

End Sub 

Я использую личный файл, чтобы он был доступен для всех файлов Excel и не нужно было импортировать его каждый раз, открыв файл Excel и сделав это!

Разработчик Blood
источник

Ответы:

1

Возможно, вы захотите попробовать функцию Workbook_open. Это запустится, как только вы откроете Excel.

Public WithEvents App As Application

Private Sub Workbook_Open()
    'runs once per Excel session when Personal.xlsb is opened.
    Set App = Application
    MsgBox "Running Workbook_Open from Personal.xlsb"
End Sub

Private Sub App_WorkbookOpen(ByVal Wb As Workbook)
    MsgBox "Running App_WorkbookOpen in " & Wb.Name
    'add code you want to run upon opening each workbook here
   '.....
End Sub

См .: http://www.mrexcel.com/forum/excel-questions/562394-workbook_open-personal-xlsb-problems-need-correct-sub-procedure.html

Роберт Ильбринк
источник
@ Роберт Ильбринк Выше ответ на мой вопрос. Спасибо за вашу заботу.
Разработчик Blood
0

Я попробовал это вместо этого, и это сработало:

Option Explicit

    LaunchMacro

  Sub LaunchMacro() 
      Dim xl
      Dim xlBook      
      Dim strFile


        strFile = "C:\De1.csv"
        Set xl = CreateObject("Excel.application")
        Set xlBook = xl.Workbooks.Open("C:\De.csv", 0, False ) 

        xl.Application.Visible = True

        xl.Application.run "PERSONAL.XLSB!Allowed_Macro"
        xl.DisplayAlerts = False        
        xlBook.saved = True
        xl.ActiveWorkbook.SaveAs strFile

        xl.activewindow.close
        xl.Quit

        Set xlBook = Nothing
        Set xl = Nothing

End Sub 

Единственная проблема, с которой я сталкиваюсь сейчас, заключается в том, что я выполняю все то, что форматирует мой макрос, они не сохраняются после сохранения.

Разработчик Blood
источник
Пожалуйста, откройте как новый вопрос - в идеале на StackOverflow!
Питер Альберт
.CSV не хранит форматирование, только данные! Вы должны сохранить его как .xlsm!
Питер Альберт
@PeterAlbert Вопросы о макросах Excel также можно задать здесь, они не являются не по теме.
slhck
1
@slhck: Хорошо, приятно знать. Хотя я полагаю, что, просто посмотрев на аудиторию, SO, скорее всего, посмотрит на нее больше экспертов VBA ...
Питер Альберт
@PeterAlbert Я пытался переименовать его в .xlsm при сохранении, но затем этот файл .xlsm выдает ошибку и не открывается. Какие-нибудь хитрости?
Разработчик Blood