Eu escrevi uma macro como um suplemento e preciso obter o caminho da planilha atual na qual está sendo executada. Como eu faço isso? Como obtenho o caminho do arquivo (apenas o diretório)?
você quer dizer que, dada uma planilha, deseja conhecer a pasta em que a pasta de trabalho pai é salva?
Mathias
Respostas:
264
Use Application.ActiveWorkbook.Pathapenas para o caminho em si (sem o nome da pasta de trabalho) ou Application.ActiveWorkbook.FullNamepara o caminho com o nome da pasta de trabalho.
A pasta de trabalho ativa depende de qual pasta de trabalho está ativa. UtILIzAção Thisworkbook.path
Alwyn Miranda
6
Ambos são úteis em diferentes situações, é claro. Peguei a pergunta original para significar que a macro residia em uma pasta de trabalho suplementar (que seria ThisWorkbook.path), mas precisava executar o código em outras pastas de trabalho, conforme necessário pelo usuário (que seria ActiveWorkbook.path).
BradC
2
Sempre deve ser explícito - se for esta pasta de trabalho, deve ser application.thisworkbook.path. Se for uma pasta de trabalho sendo aberta, o nome deve ser definido com um conjunto e application.Variablename.path (ou caminho completo, dependendo).
Selkie
@ Selkie Se o próprio código abrir a pasta de trabalho, com certeza. Mas se essa é simplesmente uma macro auxiliar que reside em uma pasta de trabalho suplementar e precisa operar com a pasta de trabalho que o usuário atualmente abriu quando chama a macro, ActiveWorkbooké o que é necessário.
BradC
3
Excel.ActiveWorkbook.Pathsó funciona se o arquivo tiver sido salvo pelo menos uma vez. Além disso, se o arquivo nunca foi salvo, Excel.ActiveWorkbook.FullNameretornará apenas o nome do arquivo. Pode ser uma boa ideia verificar se a pasta de trabalho já foi salva .
Se você deseja obter o caminho da pasta de trabalho de onde a macro está sendo executada - use Application.ThisWorkbook.Path. Application.ActiveWorkbook.PathÀs vezes, pode produzir resultados inesperados (por exemplo, se sua macro alternar entre várias pastas de trabalho).
Respostas:
Use
Application.ActiveWorkbook.Path
apenas para o caminho em si (sem o nome da pasta de trabalho) ouApplication.ActiveWorkbook.FullName
para o caminho com o nome da pasta de trabalho.fonte
ActiveWorkbook
é o que é necessário.Excel.ActiveWorkbook.Path
só funciona se o arquivo tiver sido salvo pelo menos uma vez. Além disso, se o arquivo nunca foi salvo,Excel.ActiveWorkbook.FullName
retornará apenas o nome do arquivo. Pode ser uma boa ideia verificar se a pasta de trabalho já foi salva .Sempre bom ter:
fonte
Se você deseja obter o caminho da pasta de trabalho de onde a macro está sendo executada - use
Application.ThisWorkbook.Path
.Application.ActiveWorkbook.Path
Às vezes, pode produzir resultados inesperados (por exemplo, se sua macro alternar entre várias pastas de trabalho).fonte
A maneira mais rápida
fonte