Macro para pegar o nome do Documento Ativo

Bom dia , gostaria de um Macro para pegar o Nome do Documento Ativo

Obrigado.


Eu tenho vários documentos . Hora trabalho com um hora trabalho com outro . Tem a mesma estrutura porém algumas coisas não posso fazer com o Documento BASE … Logo eu preciso saber ua o Nome do Documento que estou para segundo esta condição executar ou não um Macro

Obg

@Marcos Salles, use editar pergunta para complementar informações, NÃO use Adicionar resposta.

Mas se no arquivo BASE não pode executar a macro, exclua a macro do arquivo.

Todos os arquivos são Control C e control V (Em rumtime via Macro) …Todos os Arquivos são gerados do Base . Esses Arquivos são gerado em rum time e gera um Proximo . Estou fazendo Fichas de Custo para diversos produtos . Qnd abro uma nova ficha abro um Documento do Zero . Ao abrir o Documento via Macro ele é gerado pelo atual ( que tem os campos Limpos ) e SAVE AS ( Ai muda de Nome )
Logo esta opção não daria pois este arquivos sao criados em rum time .
Obg

Boa noite,

Tente a macro abaixo:

Sub Main
Dim oDocAtivo as Object, sNome as String

   oDocAtivo = StarDesktop.CurrentComponent
   sNome = oDocAtivo.Title
   
   MsgBox sNome
End Sub

O código retorna o título da janela ativa. Então na maioria dos casos vai atender proque ele é o nome do mesmo com a extensão.

Mas se preferir, pode usar a macro abaixo, que retorna o nome a partir da URL (caminho) do arquivo salvo:

Sub Main2
Dim oDocAtivo as Object, sNome as String

   oDocAtivo = StarDesktop.CurrentComponent
   
   ' Carregar a Biblioteca Tools que contém a função '
   ' FileNameoutofPath() que extrai o nome do arquivo da URL '
   If Not GlobalScope.BasicLibraries.isLibraryLoaded("Tools") Then
     GlobalScope.BasicLibraries.loadLibrary("Tools")
   End if
   
   sNome = FileNameoutofPath(oDocAtivo.URL)
   
   MsgBox sNome
End Sub

Atte,

Obrigado … Boa tarde

Tinha conseguido com as seguintes instruçoes

 ' Retorna do Tipo  "file:///C:/Audaces/Custo/"+nNomeArquivo+".ods"
    function RetornarPathCorrente () As String
    BasicLibraries.loadLibrary("Tools")
     path=DirectoryNameoutofPath(ThisComponent.getURL(),"/")
    RetornarPathCorrente = ConvertToUrl(path)
    end function

Ha alguma diferença ? Performance ? Uma ou outra é mais indicada ? Obg

Acredito que você tem que testar as funções. A função FileNameoutofPath() extrai o nome do arquivo da URL. E a função DirectoryNameoutofPath(), que está no seu trecho de código, extrai o nome do diretório onde o arquivo está salvo da URL.

Grafeno , boa tarde .

Desculpe retornar ao assunto . Como minha solução funcionava para o que eu queria não cheguei a testar a sua . Porém estou testando agora e todas as duas soluções obtenho erro

A primeira não reconhece o “TITLE” e a segunda não reconhece “FileNameoutofPath”

Pode me ajudar

Obg

Eu uso este para pegar o titulo do arquivo ativo.

'================================================|
Sub NomeArquivoAtivo
'================================================|
Dim oDoc As Object
Dim oControlador As Object
	oDoc = ThisComponent
	oControlador = oDoc.getCurrentController
	MsgBox oControlador.getTitle
End Sub

.

Obrigado Gilberto …