Ir para conteúdo
Fórum Script Brasil
  • 0

Duvidas VBA


Guest --Miguel --

Pergunta

Guest --Miguel --

Ola Pessoal sou novato em VBA estou com algumas duvidas espero que alguém possa me ajudar

1º Estou Tranferindo dados de uma planilha para outra( de PLAN A para PLAN que salvar esses dados na planilha B e voltar a trabalhar na PLAN B, quando eu transfiro os dados a PLAN B abre eu salvo os dados a PLAN B é fechada e eu volto a mexar na PLAN A, minha duvida é a seguinte: é possivel fazer essa operação sem que o usuário veja a PLAN B aberta na tela , ou que ela fique minimizada na barra do windowns ou invisível?!?! pois quando eu uso a propriedade visible = false ele não consegue achar a PLAN B como se ela fosse desabilitade

________________________________________________________________________________

______________________________________________________

Ex:

'Estou na Plan A

'Abro a Plan B

Windons.Open('PLANB')

Workbook('PLANB').activated ' Atyivo aplanilha B

'Transfiro os dados

...

'Salvo a Plan B

Workbook('PLANB').save

'Fecho a Plan B

Workbook('PLANB').close

Quando eu faço isso a operação funciona mas a plan b aparece .. eu não gostaria que ela aparecesse, existe algo que eu faça para o usuario não ver ela aberta??? ou pela menos que ela fique minimizada enquanto as operações são salvas na outra planilha?!?! no caso eu apenas exibiria uma mensagen que os dados foram gravados

________________________________________________________________________________

______________________________________________________

2º Existe como eu obter o usuário que esta logado no windows através de VBA???

3º Como eu faço para abrir uma Mensagem do Outllok através do vba??? , é possivel instanciar uma variável desse tipo para essas operações

Grato,

Miguel

Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0

Bom dia amigo!

1º Não exibir o arquivo enquanto atualiza

Para o usuário não ver q você está atualizando a planb você pode fazer o seguinte

Application.Screenupdate = False

Windows.Open('PLANB')

Workbook('PLANB').activated ' Atyivo aplanilha B

Workbook('PLANB').save

Workbook('PLANB').close

Application.Screenupdate = True

Msgbox "Dados gravados com sucesso!", vbInformation, "Título"

______________________________________________________

2º Existe como eu obter o usuário que esta logado no windows através de VBA???

Declarar em um módulo as APIs

Declare Function GetUserName Lib "advapi32.dll" Alias "GetUserNameA" (ByVal lpBuffer As String, nSize As Long) As Long

Declare Function GetComputerName Lib "kernel32" Alias "GetComputerNameA" (ByVal lpBuffer As String, nSize As Long) As Long

Public Function fGetUserName()

Dim lpName As String

Dim strTemp As String

lpName = String$(255, 0)

Call GetUserName(lpName, 255)

If lpName = "" Then

strTemp = "NoUserName"

Else

strTemp = lpName

End If

fGetUserName = fStripNull(strTemp)

End Function

Public Function fGetComputerName()

Dim lpName As String

Dim strTemp As String

lpName = String$(255, 0)

Call GetComputerName(lpName, 255)

If lpName = "" Then

strTemp = "NoComputerName"

Else

strTemp = lpName

End If

fGetComputerName = fStripNull(strTemp)

End Function

Na macro basta colocar esse código: (Variável) Usuario = fGetUserName que ele guardará na variável o UserID da máquina.

3º Como eu faço para abrir uma Mensagem do Outllok através do vba??? , é possivel instanciar uma variável desse tipo para essas operações

Sub Enviar()

Dim OutApp As Outlook.Application

Dim OutMail As Outlook.MailItem

Dim Para As String

Set OutApp = CreateObject("Outlook.Application")

Set OutMail = OutApp.CreateItem(olMailItem)

OutMail.Importance = olImportanceHigh

OutMail.To = Para '(Variável)

OutMail.CC = COPIA '(Variável)

OutMail.BCC = fGetUserName

OutMail.Subject = "Solicitação de Serviço"

OutMail.Body = "Msg no corpo do email"

OutMail.Send

Set OutMail = Nothing

Set OutApp = Nothing

End Sub

....é isso!

Espero ter ajudado

Abssss :ninja:

Link para o comentário
Compartilhar em outros sites

  • 0

Faltou este código:

Public Function fStripNull(StripText As String)

Dim strTemp As String

Dim intNum As Integer

Dim I As Integer

'Returns a string clear of trailing nulls (CHR(0)) and in the

'ASCII range 48-57, 65-90, 95 & 97-122 (0-9, A-Z, _, & a-z)

strTemp = ""

For I = 1 To Len(StripText)

intNum = Asc(Mid(StripText, I, 1))

Select Case intNum

Case 48 To 57, 65 To 90, 95, 97 To 122

strTemp = strTemp + Mid(StripText, I, 1)

Case Else

End Select

Next I

fStripNull = strTemp

End Function

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...