Combobox obter valores

Boas pessoal, tenho a seguinte duvida: Tenho uma planilha que tem uma coluna que tá com numeros, e eu queria ir buscar esses valores através de uma combobox que tá colocada numa form, ou seja, quando mando abrir uma form, ela abre, dps tem lá uma combobox, e quando clico nela, ela me mostra os valores que estao numa determinada planilha.
já vi uma questão semelhante que foi aqui tb postada e resolvida, mas o que lá foi feito foi criar uma combobox numa planilha que tava a chamar os valores de outra planilha. e eu quero é chamar aqueles valores numa form atraves de uma combobox como foi referido no inicio do post. Se alguem poder ajudar agradeço, visto que tenho alguma urgencia.
cumps…

Olá,

A rotina abaixo é um costura de diversos “retalhos” de códigos da ajuda do LibreOffice.

Mostra uma forma de carregar os dados da “Planilha1”, mais precisamente os que estão em “A1:A10”, e inserí-los no combobox do diálogo.

Os requisitos para funcionar são:

  • Planilha chamada “Planilha1” com o intervalo “A1:A10” preenchido;
  • Um diálogo chamado “Dialog1”;
  • Uma caixa de combinação chamada “ComboBox1”.

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

'Declarar Objetos
Dim oDialogo as Object
Dim oComboBox as Object

Sub Iniciar_Dialogo
Dim Inc as Integer
Dim sItem as String

  'Carregar o diálogo
   oDialogo = CarregarDialogo( "Standard", "Dialog1" )

  'Iniciar os controles
   oComboBox = oDialogo.GetControl( "ComboBox1" )

  'Povoar a Caixa de Combinação    
   For Inc = 9 to 0 step -1    
      sItem = ThisComponent.Sheets.getByName("Planilha1").getCellByPosition( 0,Inc ).String
      oComboBox.additem( sItem,0 )
   Next Inc

  'Exibir o diálogo
   oDialogo.Execute()
End Sub

   'Função global para carregar diálogos 
Function CarregarDialogo(Libname as String, DialogName as String, Optional oLibContainer)
Dim oLib as Object
Dim oLibDialog as Object
Dim oRuntimeDialog as Object
    If IsMissing(oLibContainer) Then
        oLibContainer = DialogLibraries
    End If
    oLibContainer.LoadLibrary(LibName)
    oLib = oLibContainer.GetByName(Libname)
    oLibDialog = oLib.GetByName(DialogName)
    oRuntimeDialog = CreateUnoDialog(oLibDialog)
    CarregarDialogo() = oRuntimeDialog
End Function


At.te,
Grafeno

2 Likes

@Grafeno eu encontrei essa sua resposta fazendo uma pesquisa e testei aqui, funciona legal considerando que é através de um intervalo pré-determinado. Teria algum jeito de fazer isso considerando que a planilha base dos dados do ComboBox sempre será alimentada com novos registro? Exemplo: uma coluna onde será incluso nomes de clientes, como pegar os valores sem ter que ficar mudando o código da macro? Fiz uma teste aqui e aumentei o número de linhas do intervalo e o código acaba colocando campos em vazio no ComboBox.

@LeandroRodrigues
Tem, talvez, fazendo a seguinte alteração:
Carregar a bibiblioteca Tools no inicio do código

EDIT

'Carrega a biblioteca Tools
GlobalScope.BasicLibraries.LoadLibrary( "Tools" )
    oDoc = ThisComponent
    oSheet = oDoc.Sheets.getByName("Planilha1")
    lEndRow = GetLastUsedRow(oSheet)

Na linha onde está o comando de repetição, alterar o metodo

getCellByPosition(coluna, linha)

para

getCellRangeByPosition(coluna1, linha1, coluna1, linhaUltima)

Ficaria algo assim:

sItem = oSheet.getCellRangeByPosition( 0, Inc, 0, lEndRow).String

Agora, se quer algo mais detalhado ou específico é melhor abrir um tópico novo, a fim de facilitar busca por novos usuários tbm.

@FelipeAle
Tentei fazer o seu exemplo aqui mas ao pedir para abrir o diálogo com formulário, apareceu o erro abaixo relacionado ao Tools. O que será que é.

@LeandroRodrigues
Editei acima.

Utilize a Validação de dados no menu Dados - Validação.

Escolha Intervalo de células no item Permitir e defina o intervalo.

obrigadão companheiro, já agora se não é pedir muito como é que eu faço para ter um sistema de password num dialogo atraves de uma textfield, ou seja, tenho um dialogo e depois tenho uma textfield onde se tem de colocar uma password para ter acesso a algumas opçoes do ficheiro. penso que nao dve ser muito diferente da combo. eu nao uso acesso a nenhuma database, so queria ter uma pass de entrada, para desbloquear certas opçoes do programa que eu estou criando.
Aguardo resposta…
cumps.

Para retornar o valor de um textfield, primeiro é preciso carregar o controle com “” oTextField = oDialogo.GetControl( “TextField1” ) “” e depois recuperar o valor com “” sUmaString = oTextField.Text “”.

vá lá pessoal tenho outros caras meus amigos que tambem têm este problema e eu nao estou conseguindo solucionar este problema. Alguem me pode ajudar a chamar valores de uma planilha para uma form com uma combobox?
aguardo…
cumps

pois mas isso foi o que foi resolvido num dos posts. o que eu quero é colocar uma combobox num form e depois ir buscar para essa combobox os valores que estão colocados numa determinada planilha. Isso que você me esclareceu cria numa planilha uma combobox que chama os valores que estão noutra planilha.

Baseado na solução, como eu poderia carregar caixas de texto tendo a combo box como informação chave.

Abra um tópico especificando o que deseja, por favor.

1 Like