Renomear arquivos em massa

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

1 Like

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?

Arquivo editado no post acima com comentários e botão para executar.
.
Por favor, se a resposta lhe atender, marque como :white_check_mark: Solução para auxiliar outros usuários com a mesma dúvida.

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.