Como abrir planilha pela linha de comando e executar macro?
Enviado: 01 Jul 2017 às 12:37
por neurijb
Bom dia pessoal,
Sou novo nessa área de VBA e meu sistema gera muitos arquivos em CSV, porém todos necessitam de formatação e para resolver isso, gero na 1a linha do arquivo os formatos das mascaras de cada coluna e com uma macro consigo formatar todas as colunas do jeito que eu defini na primeira linha do arquivo.
Até ai tudo bem, mas o que gostaria de fazer mesmo é abrir o arquivo CSV e rodar a macro automaticamente sem que o usuário necessite pressionar um botão ou uma tecla de atalho.
Seria algo assim: c:\macros\autoexec.xls "arquivo.csv"
Eu já vi uma planilha chamada AUTOOPEN.XLS usada no SAP B1 que parece fazer isso, mas não entendi e não consegui fazê-la funcionar.
Se puderem me ajudar eu agradeço.
Abraços.
Re: Como abrir planilha pela linha de comando e executar mac
Enviado: 03 Jul 2017 às 08:15
por alexandrevba
Bom dia!!
Eu não entendi.
Você pretendi
apenas abrir o arquivo CSV?
Código: Selecionar todosSub EuNaoEntendi()
Dim sCSVFullName As String
sCSVFullName = Application.GetOpenFilename("CSV Files (*.csv), *.csv", , _
"Abra seu arquivo CSV", , False)
' Sua macro faz o resto
End Sub
Se puder explicar com mais detalhe.
Leia:
http://www.homeandlearn.org/open_a_text ... n_vba.html
https://peltiertech.com/simple-vba-open ... fied-data/
Att
Como abrir planilha pela linha de comando e executar macro?
Enviado: 03 Jul 2017 às 12:47
por neurijb
Olá AlexandreVBA,
O que vc me passou funciona, porém eu preciso escolher qual arquivo eu quero abrir.
A ideia é eu informar o arquivo que eu quero abrir como um parâmetro e a macro abrir o arquivo passado por um comando.
Lembrando que o nome do arquivo CSV não é o mesmo sempre, ele varia.
O comando seria algo assim: C:\abrecsv.xlsm "arquivo.csv" ao abrir o abrecsv.xlsm a macro seria executada e abriria o arquivo informado na linha de comando.
Não sei se consegui me fazer entender.
Obrigado.
Re: Como abrir planilha pela linha de comando e executar mac
Enviado: 03 Jul 2017 às 14:23
por alexandrevba
Boa tarde!
Eu não entendi.
Tente adaptar esse código.
Código: Selecionar todos' Fonte: https://sites.google.com/a/madrocketscientist.com/jerrybeaucaires-excelassistant/merge-functions/csvs-to-1-sheet
Sub ImportCSVsWithReference()
'Author: Jerry Beaucaire
'Date: 10/16/2010
'Summary: Import all CSV files from a folder into a single sheet
' adding a field in column A listing the CSV filenames
Dim wbCSV As Workbook
Dim wsMstr As Worksheet: Set wsMstr = ThisWorkbook.Sheets("Plan1")
Dim fPath As String: fPath = "C:\Users\aleVBA\Desktop\" 'path to CSV files, include the final \
Dim fCSV As String
If MsgBox("Limpar os dados da guia antes de importar?", vbYesNo, "Limpar dados?") _
= vbYes Then wsMstr.UsedRange.Clear
Application.ScreenUpdating = False 'speed up macro
fCSV = Dir(fPath & "*.csv") 'start the CSV file listing
Do While Len(fCSV) > 0
'open a CSV file
Set wbCSV = Workbooks.Open(fPath & fCSV)
'insert col A and add CSV name
Columns(1).Insert xlShiftToRight
Columns(1).SpecialCells(xlBlanks).Value = ActiveSheet.Name
'copy date into master sheet and close source file
ActiveSheet.UsedRange.Copy wsMstr.Range("A" & Rows.Count).End(xlUp).Offset(1)
wbCSV.Close False
'ready next CSV
fCSV = Dir
Loop
Application.ScreenUpdating = True
End Sub
Att