Pergunte aqui
1

Macro para pegar o nome do Documento Ativo

perguntadas 2019-02-22 12:45:56 +0200

imagem do gravatar de Marco Salles

updated 2019-03-04 22:40:55 +0200

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

editar alterar tag assinalar como ofensivo fechar mesclar Excluir

Comentários

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

imagem do gravatar de Gilberto SchiavinattoGilberto Schiavinatto ( 2019-02-22 23:33:20 +0200 )editar

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

imagem do gravatar de Gilberto SchiavinattoGilberto Schiavinatto ( 2019-02-22 23:36:37 +0200 )editar

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

imagem do gravatar de Marco SallesMarco Salles ( 2019-02-23 01:29:20 +0200 )editar

1 Resposta

1

respondidas 2019-02-23 23:16:25 +0200

imagem do gravatar de Grafeno

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,

editar assinalar como ofensivo Excluir Link mais

Comentários

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

imagem do gravatar de Marco SallesMarco Salles ( 2019-02-24 15:29:14 +0200 )editar

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.

imagem do gravatar de GrafenoGrafeno ( 2019-02-24 15:43:46 +0200 )editar

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

imagem do gravatar de Marco SallesMarco Salles ( 2019-03-04 21:30:32 +0200 )editar

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

.

imagem do gravatar de Gilberto SchiavinattoGilberto Schiavinatto ( 2019-03-04 22:39:36 +0200 )editar

Obrigado Gilberto ...

imagem do gravatar de Marco SallesMarco Salles ( 2019-03-05 17:46:24 +0200 )editar
Login/Registrar para responder

Ferramentas de perguntas

1 seguidor

Estatísticas

Perguntadas: 2019-02-22 12:45:56 +0200

Lidas: 47 vezes

Última atualização: Mar 04