Como obter o caminho da planilha atual no VBA?

141

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)?

eu--''''''---------''''''''''''
fonte
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.

BradC
fonte
24
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 .
22719 ChrisB
37

Sempre bom ter:

Dim myPath As String     
Dim folderPath As String 

folderPath = Application.ActiveWorkbook.Path    
myPath = Application.ActiveWorkbook.FullName
Alex22
fonte
27

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).

avalanche1
fonte
-1

A maneira mais rápida

path = ThisWorkbook.Path
Pablo Vilas
fonte