Executa macros do excel (vba) a partir do arquivo vbscript

0

Eu tenho um arquivo vbs que extrai informações do meu banco de dados e exporta os dados para um arquivo do Excel (C: \ file.csv). Feito isso, executo uma série de macros (vba) para formatar esses dados. Essas macros são sempre as mesmas, eu normalmente as copio / colo de um arquivo de texto na planilha e, em seguida, as executo manualmente.

Existe uma maneira de incluir a macro vba no arquivo vbs e, depois que os dados são exportados para a planilha, as macros são executadas? Soluções semelhantes mostram como < em> chamar uma macro pré-definida em um arquivo do Excel, onde eu quero que o conteúdo da macro seja salvo / executado em / do meu arquivo vbs. Isso será útil, pois o vbs está criando um novo arquivo e, em seguida, executaria macros de formatação.

Meu pensamento é que preciso usar Set objWorkbook = objExcel.Workbooks.Open("C:\file.csv")

    
por root 04.09.2014 / 15:33

3 respostas

1

Você está no caminho certo. O que você precisa primeiro é configurar uma nova variável para o Excel.Application usando ligação tardia. É sob esse objeto que todos os itens normais do Excel VBA se escondem. Abaixo está um exemplo de script vbs que abrirá uma nova pasta de trabalho, adicionará uma nova planilha, nomeará "TEST" e adicionará algum conteúdo à célula A1 dessa nova planilha. Quando estiver pronto, o vbs ecoará "Concluído"

Sub createWB()

  'Set the excel application variable
  set xlApp = CreateObject("Excel.Application")

  'Make it visible, or hide it in the background
  xlApp.Application.Visible = true

  'Open a new workbook, for instance
  set xlWB = xlApp.Workbooks.Add()
  xlWB.Activate

  'Add a sheet, name it test, bring it front and center
  set xlSheet = xlWB.Worksheets.Add()
  xlSheet.Name = "TEST"
  xlSheet.Activate

  'Put something in cell A1
  xlSheet.Cells(1,1).value = "TEST CELL CONTENT"

End Sub

'Call the subroutine above
call createWB

WScript.Echo "Finished."
WScript.Quit

Você pode ter que mexer um pouco com o seu código VBA existente para tornar o vbs feliz, mas você verá que escrever suas macros em vbs é tão funcional quanto escrevê-las em vba.

    
por 11.09.2014 / 15:25
0

Algum tempo atrás eu tentei isso para vários outros SU responde . A única maneira que encontrei é usar o PowerShell em vez do VBScript. O PowerShell pode executar todos os comandos do VBA. Apenas a sintaxe pode diferir.

Seu exemplo de VBA como script do PowerShell

$excel = New-Object -ComObject excel.application 
$workbook = $excel.Workbooks.Open("C:\file.csv")
$excel.visible = $true
    
por 07.09.2014 / 01:05
-1

Eu colocaria as macros em um modelo do Excel. Em seguida, criaria uma macro autonew no modelo para importar o arquivo csv e executar as macros de formatação.

Em seguida, eu obteria o vbs para criar e salvar o arquivo csv e abrir um arquivo do Excel com base no modelo.

    
por 05.09.2014 / 04:20