SELECIONAR TODAS PLANILHAS DO EXCEL VIA VB
Bom Galera,
eu preciso selecionar todas as planilhas do excel
fiz um codigo, mas ele eh muito trabalhoso, pesquisei na net, e nao vi nenhum codigo que seleciona da primeira a ultima planilha... meu codigo ficou assim
esse codigo funciona, mas..... é realmente nescessario ficar fazendo case ate o 150???? O.O por exemplo...
:( :(
Obrigado Gente
eu preciso selecionar todas as planilhas do excel
fiz um codigo, mas ele eh muito trabalhoso, pesquisei na net, e nao vi nenhum codigo que seleciona da primeira a ultima planilha... meu codigo ficou assim
Plan.Sheets([Ô]inicio[Ô]).Select
For i = 0 To 150 Step 1 [ô]aki eu coloquei 150 pq acho que nunca vai passar desse tanto de planilhas,
nomesPlanilhas(i) = Plan.ActiveSheet.Name [ô]aki eu pego os nomes das planilhas
cont = cont + 1
Plan.ActiveSheet.Next.Select
Next
Select Case cont
Case 1
Case 2
Case 3
Case 4
case 5
Plan.Sheets(nomesPlanilhas(0)).Select
Plan.Sheets(Array(nomesPlanilhas(0), nomesPlanilhas(1), nomesPlanilhas(2), nomesPlanilhas(3), nomesPlanilhas(4))).Select
Plan.Sheets(nomesPlanilhas(0)).Activate
e por ai vai.....
esse codigo funciona, mas..... é realmente nescessario ficar fazendo case ate o 150???? O.O por exemplo...
:( :(
Obrigado Gente
Vamos lá...
Eu fiz algo assim...tb precisava pegar todas as planilhas de uma determinada pasta... então fiz um campo onde eu pego o caminho para a pasta (através de um command dialog box)
Tendo o endereço da pasta em um textbox, por exemplo, preencho um listbox com os nomes dos arquivos (no meu caso eu exibo o listbox, mas vc pode deixá-lo invisÃvel, se for o caso), com o código abaixo.
Dim DirName
DirName = Dir(Trim(txtCaminho.Text))
Do While DirName <> [Ô][Ô]
If DirName <> [Ô].[Ô] And DirName <> [Ô]..[Ô] Then
If UCase(Right(Trim(DirName), 3)) = [Ô]XLS[Ô] Then
lstArquivos.AddItem Trim(DirName)
End If
End If
DirName = Dir
Loop
If lstArquivos.ListCount > 0 Then
lstArquivos.Enabled = True
Else
lstArquivos.Enabled = False
End If
No meu caso, eu coloquei a propriedade style para exibir um checkbox em cada item do listbox para o cara escolher qual ou quais planilhas ele quer....
Mas se o seu caso é todas, nem precisa do checkbox...
Então basta usar o for..next para percorrer o listbox
For nInd = 0 To lstArquivos.ListCount - 1
seus comandos para cada planilha...
next
Esperto ter ajudado!
Eu fiz algo assim...tb precisava pegar todas as planilhas de uma determinada pasta... então fiz um campo onde eu pego o caminho para a pasta (através de um command dialog box)
Tendo o endereço da pasta em um textbox, por exemplo, preencho um listbox com os nomes dos arquivos (no meu caso eu exibo o listbox, mas vc pode deixá-lo invisÃvel, se for o caso), com o código abaixo.
Dim DirName
DirName = Dir(Trim(txtCaminho.Text))
Do While DirName <> [Ô][Ô]
If DirName <> [Ô].[Ô] And DirName <> [Ô]..[Ô] Then
If UCase(Right(Trim(DirName), 3)) = [Ô]XLS[Ô] Then
lstArquivos.AddItem Trim(DirName)
End If
End If
DirName = Dir
Loop
If lstArquivos.ListCount > 0 Then
lstArquivos.Enabled = True
Else
lstArquivos.Enabled = False
End If
No meu caso, eu coloquei a propriedade style para exibir um checkbox em cada item do listbox para o cara escolher qual ou quais planilhas ele quer....
Mas se o seu caso é todas, nem precisa do checkbox...
Então basta usar o for..next para percorrer o listbox
For nInd = 0 To lstArquivos.ListCount - 1
seus comandos para cada planilha...
next
Esperto ter ajudado!
Cara, tenta isto aqui e vê se é o que você quer:
[txt-color=#0000f0]Private Sub [/txt-color]Command1_Click()
[txt-color=#0000f0]Dim[/txt-color] Exc [txt-color=#0000f0]As New [/txt-color]Excel.Application
[txt-color=#0000f0]Dim[/txt-color] WBook [txt-color=#0000f0]As[/txt-color] Excel.Workbook
[txt-color=#0000f0]Dim[/txt-color] Wsheet [txt-color=#0000f0]As[/txt-color] Excel.Worksheet
[txt-color=#0000f0]Set[/txt-color] WBook = Exc.Workbooks.Open([Ô]C:\Documents and Settings\Pegudo\Meus documentos\Movimentação Bradesco.xls[Ô]) [txt-color=#007100][ô]Coloque o caminho e o nome da sua pasta de trabalho[/txt-color]
[txt-color=#0000f0]For Each [/txt-color]Wsheet [txt-color=#0000f0]In[/txt-color] WBook.Sheets
MsgBox Wsheet.Name
[txt-color=#0000f0]Next
End Sub[/txt-color]
1. Bom... Aqui eu tenho uma planilha chamada [Ô]Movimentação Bradesco[Ô] (No seu caso, seria a o nome da sua);
2. Esta pasta de trabalho tem várias planilhas nomeadas de [Ô]Junho 2008[Ô] a [Ô]Dezembro 2009[Ô];
3. Com o código, irá aparecer uma MSGBOX que vai mostrar o nome de cada planilha;
4. Aqui, eu utilizei uma MSGBOX, mas você pode, por exemplo, jogar os nomes para dentro de um LISTBOX;
5. Assim, se você tiver 15 ou 150 planilhas, este loop vai colocar o nome de todas as planilhas dentro do controle que você quiser, sem precisar do SELECT CASE.
Espero ter te ajudado, pelo menos com a questão do looping.
[txt-color=#0000f0]Private Sub [/txt-color]Command1_Click()
[txt-color=#0000f0]Dim[/txt-color] Exc [txt-color=#0000f0]As New [/txt-color]Excel.Application
[txt-color=#0000f0]Dim[/txt-color] WBook [txt-color=#0000f0]As[/txt-color] Excel.Workbook
[txt-color=#0000f0]Dim[/txt-color] Wsheet [txt-color=#0000f0]As[/txt-color] Excel.Worksheet
[txt-color=#0000f0]Set[/txt-color] WBook = Exc.Workbooks.Open([Ô]C:\Documents and Settings\Pegudo\Meus documentos\Movimentação Bradesco.xls[Ô]) [txt-color=#007100][ô]Coloque o caminho e o nome da sua pasta de trabalho[/txt-color]
[txt-color=#0000f0]For Each [/txt-color]Wsheet [txt-color=#0000f0]In[/txt-color] WBook.Sheets
MsgBox Wsheet.Name
[txt-color=#0000f0]Next
End Sub[/txt-color]
1. Bom... Aqui eu tenho uma planilha chamada [Ô]Movimentação Bradesco[Ô] (No seu caso, seria a o nome da sua);
2. Esta pasta de trabalho tem várias planilhas nomeadas de [Ô]Junho 2008[Ô] a [Ô]Dezembro 2009[Ô];
3. Com o código, irá aparecer uma MSGBOX que vai mostrar o nome de cada planilha;
4. Aqui, eu utilizei uma MSGBOX, mas você pode, por exemplo, jogar os nomes para dentro de um LISTBOX;
5. Assim, se você tiver 15 ou 150 planilhas, este loop vai colocar o nome de todas as planilhas dentro do controle que você quiser, sem precisar do SELECT CASE.
Espero ter te ajudado, pelo menos com a questão do looping.
E essa
ActiveWorkbook.Sheets.Select
ActiveWorkbook.Sheets.Select
Rs desenterrou o topico, mas foi bom que agora eu fecho ele.
o exemplo do PEGUDO resolveu minha duvida na epoca
vlw gente pelas repostas e vlw Fernando rs
Tópico encerrado , respostas não são mais permitidas