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


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.


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

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


Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.