MACRO - Colorir mapas ( Desenho - Formas)

Boa Noite!

Estou com uma dificuldade em correlacionar uma macro, a ideia é que conforme eu tenha um valor na Célula, ( esta célula já identificada na hora que troque o valor e executar macro os desenhos mudem de cor.

no VBA é esse código:

Sub ColorirMapa ()

Dim Regiao AS Range
Dim Celula As String 

For Each Regiao In Range("Regiões") 
Celula = Cells(Regiao.Row, 3) 
ActiveSheet.Shapes(Regiao).Fill.ForeCollor = Range(Celula).Interior.Color 
Next Regiao

End Sub

fiz uma conversão no site

e saiu esses codigos.

Sub ColorirMapa ()
Dim Regiao AS Dim oSheet as Object[n]oSheet = ThisComponent.CurrentController.ActiveSheet[n]oSheet.getCellRangeByName($1)
Dim Celula As String
For Each Regiao In Dim oSheet as Object[n]oSheet = ThisComponent.CurrentController.ActiveSheet[n]oSheet.getCellRangeByName($1)("Regiões")
Celula = Cells(Regiao.Row, 3)
ThisComponent.CurrentController.ActiveSheet.Shapes(Regiao).Fill.ForeCollor = Dim oSheet as Object[n]oSheet = ThisComponent.CurrentController.ActiveSheet[n]oSheet.getCellRangeByName($1)(Celula).Interior.Color
Next Regiao
End Sub

PORÉM ESTÂO AINDA DANDO ERRO DE SINTAXE no AS RANGE

Alguém pode me dar uma dica?

tenho um arquivo de teste

http://www.4shared.com/file/4Xuz8_9Sce/Sem_ttulo_1.html?

valeww

Olá,

A macro abaixo foi reescrita com os objetos e métodos suportados pela API UNO do Libreoffice:

REM  *****  BASIC  *****

Sub ColorirMapa
Dim oPlan As Object
Dim oPagDesenho As Object
Dim oRegioes As Object
Dim oRegiao As Object
Dim oCelula As Object
Dim oForma As Object

	'Planilha ativa
	oPlan = ThisComponent.getCurrentController.Activesheet
	'Página de desenho (Contém as formas - shapes)
	oPagDesenho = oPlan.getDrawPage
	'Intervalo Regiões
	oRegioes = oPlan.getCellRangebyName( "Regioes" )
	
	'Loop pelas células (Regiao) do intervalo Regioes
	For I = 1 To oRegioes.getRangeAddress().EndRow
		'Regiao
		oRegiao = oRegioes.getCellbyPosition( 0,I-1 )
		'Célula com referência a célula com a cor
		oCelula = oPlan.getCellbyPosition( 2,I )
		
		'Como a API UNO não suporta chamar a forma pelo
		'nome, é preciso fazer um loop por todas através
		'do seu índice (index)
		For J = 0 To ( oPagDesenho.Count - 1 )
			'Obter a forma pelo índice (index)
			oForma = oPagDesenho.getByIndex( J )
			'Verificar se o nome é mesmo da Regiao
			If oForma.Name = oRegiao.getString Then
				'Mudar a cor da forma
				oForma.FillColor = oPlan.getCellRangebyName(oCelula.getString).CellBackColor
				Exit For
			End If
		Next J
	Next I	
End Sub

Obs.: Note que não é possível declarar objetos específicos como Range. As variáveis foram declardas como “As Object” e, em seguida, iniciadas especificamente no decorrer do código.



ColorirMapa.ods (<< Arquivo Anexo)

Atte,
Grafeno