SELECIONAR TODAS PLANILHAS DO EXCEL VIA VB

DARTAGNAN 07/01/2010 19:53:48
#331345
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


  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
LIZANDER 11/01/2010 23:03:49
#331643
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!
PEGUDO 15/01/2010 17:00:39
#332073
Resposta escolhida
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.
FERNANDO0877 28/09/2012 11:29:05
#410764
E essa

ActiveWorkbook.Sheets.Select
DARTAGNAN 28/09/2012 11:36:30
#410765

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