Como renomear arquivos em massa usando o Calc? Tenho uma lista de títulos numa coluna do Calc e quero renomear arquivos .odt que estão em uma pasta do Windows com tais títulos. Há exemplos disso em Excel no Youtube, mas o VBA não funcionou no Calc.
Para renomear em massa eu uso o XnView (mais é livre só “for private or educational use (including non-profit organizations)”).
Para exemplificar melhor o que pretendo, de grande utilidade para diversos casos, trata-se de converter para uso no Calc a planilha criada para o Excel, disponível gratuitamente no link Downloads - Guia do Excel
(não postei a própria porque não sei as condições de gratuidade dos autores ao cederem a planilha, por isso preferi exibir o link para baixá-la, já que se faz um cadastro no site deles).
Meu sistema e versão do LibreOffice conforme solicitado:
Version: 7.0.6.2 (x86)
Build ID: 144abb84a525d8e30c9dbbefa69cbbf2d8d4ae3b
CPU threads: 2; OS: Windows 10.0 Build 19044; UI render: Skia/Raster; VCL: win
Locale: pt-BR (pt_BR); Interface: pt-BR
Calc: threaded
Maiores detalhes de como fazer no site no oficial usando a Instrução Name.
.
Assunto verificado na Categoria inglês:
Existem meios mais fáceis de fazê-lo, conforme mostrado no tópico acima, mas eu não tenho muito conhecimento sobre. Então optei apenas por copiar o código de @JohnSUN e adaptar adicionando comentários para facilitar o entendimento.
Segue código
''' By JohnSUN (Vladyslav Orlov) from AskLo
REM -----------------------------------------------------------------------------
Sub RenomearArquivos()
Dim oPlan As Object 'Para obter planilha
Dim oCursor As Object 'P/ criar um cursor
Dim UltimaLinha As Long 'P/ obter ultima Linha
Dim i As Long 'P/ leitura e preenchimento dos dados
Dim oIntervalo As Variant 'P/ obter o intervalo
Dim oDataArray As Variant 'P/ obter dados
Dim sDiretorio As String 'P/ obter o caminho/pasta
Dim sNomeAtual As String 'P/ obter nome atual
Dim sNomeNovo As String 'P/ obter nome novo
'Obtem a planilha ativa
oPlan = ThisComponent.getCurrentController().getActiveSheet()
'Obtem o Diretorio que se encontra na célula F3
sDiretorio = oPlan.getCellRangeByName("E1").getString()
'Se Url do diretorio não tem separador ao final, inserir separador
If Right(sDiretorio, 1) <> GetPathSeparator() Then sDiretorio = sDiretorio + GetPathSeparator()
'Cria um cursor na planilha
oCursor = oPlan.createCursor()
'Faz a leitura de todo o intervalo usado
oCursor.gotoEndOfUsedArea(True)
'Obtem a ultima linha do intervalo
UltimaLinha = oCursor.getRangeAddress().EndRow
'Retorna o intervalo com os nomes
oIntervalo = oPlan.getCellRangeByPosition(0, 1, 1, UltimaLinha)
'Obtem os nomes no intervalo
oDataArray = oIntervalo.getDataArray()
'Faz do 1º ao último dado no intervalo
For i = LBound(oDataArray) To UBound(oDataArray)
sNomeAtual = oDataArray(i)(0) 'Obtem o nome atual do arquivo (Preenchido na coluna A)
sNomeNovo = oDataArray(i)(1) 'Obtem o nome novo (Preenchido na coluna B)
'Se arquivo de origem NÃO existir na pasta, então renomear
If Not FileExists( sDiretorio + sNomeAtual ) Then
MsgBox ( "Arquivo " + sNomeAtual + " não encontrado." )
'Caso arquivo renomeado já exista
ElseIf FileExists( sDiretorio + sNomeNovo ) Then
MsgBox ( "Arquivo " + sNomeAtual + " já existe." )
Else
Name sDiretorio + sNomeAtual As sDiretorio + sNomeNovo
End If
Next i
End Sub
.
–EDITADO–
RenomearArquivosAsk.ods (20,5,KB)
Essa planilha .ods não funcionou. Não falta um botão para executar a operação?
Na verdade, só houve alteração ao colocar a planilha na mesma pasta dos arquivos a serem renomeados. Porém, embora os arquivos tenham sido renomeados, os mesmos ficaram sem extensão e não puderam ser abertos (eram arquivos .odt mesmo, extensão nativa do LibreOffice). Parece que ele renomeia excluindo a extensão!
Neste caso, por favor, edite seu tópico original adicionando um arquivo exemplo. Se houverem dados sensíveis, basta apagá-los.
.
Adicione também seu sistema operacional e versão do LibreOffice.
.
Version: 7.3.2.2 / LibreOffice Community
Build ID: 454130fadb9a820d3728b86ccb63c8f359d70528
CPU threads: 4; OS: Linux 5.13; UI render: default; VCL: gtk3
Locale: pt-BR (pt_BR.UTF-8); UI: pt-BR
Calc: threaded
.
Para pegar a informação vá em Ajuda > Sobre o LibreOffice.
.
Com base no seu comentário
Segue arquivo para renomear em lote:
AskRenomearArquivos.ods (50,0,KB)
.
Por favor, se a resposta lhe atender, marque como Solução para auxiliar outros usuários com a mesma dúvida.