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
@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 é.
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.