Compartilhar via

REDIMENSIONAR - como desabilitar opção

Anônima
2017-03-28T11:45:09+00:00

PREZADOS, BOM DIA!

POR FAVOR, ALGUÉM SABE COMO FAÇO PARA DESABILITAR A OPÇÃO “REDIMENSIONAR” NO EXCEL?

EXEMPLO: QUANDO O USUÁRIO ABRIR O EXCEL, O MESMO VAI INICIAR COM UM DETERMINADO TAMANHO (O USUÁRIO NÃO VAI PODER ALTERAR O TAMANHO DA JANELA ), NÃO VAI PODER CLICAR COM O MOUSE E ARRASTAR PARA AUMENTAR OU DIMINUIR A JANELA DO EXCEL.

NA IMAGEM ANEXA TEM MAIS DETALHES.

DESDE JÁ AGRADEÇO A TODOS QUE ESTÃO VISUALIZANDO ESSE TÓPICO.

 

ATENCIOSAMENTE,

MARCO

Microsoft 365 e Office | Excel | Para uso doméstico | Windows

Pergunta bloqueada. Essa pergunta foi migrada da Comunidade de Suporte da Microsoft. É possível votar se é útil, mas não é possível adicionar comentários ou respostas ou seguir a pergunta.

0 comentários Sem comentários

Resposta aceita pelo autor da pergunta

Anônima
2017-03-28T14:16:46+00:00

Olá Marco!

Não sei resolver seu problema. Conheço bem de VBA, mas no que se refere a interação com as bibliotecas do pacote Office. Este código interage com APIs do Windows, e infelizmente não domino ainda esta área.

Sugiro postar a dúvida no MSDN.

Abraços!

Esta resposta foi útil?

0 comentários Sem comentários

Resposta aceita pelo autor da pergunta

Anônima
2017-03-28T13:14:43+00:00

Olá Marco!

Isto só com VBA. Eu pesquisei em fóruns internacionais e achei uma postagem com um código que funcionou. (https://www.mrexcel.com/forum/excel-questions/426463-disabling-excel-application-resizing.html).

O código que funciona e trava a janela do Excel na posição e tamanho é o que está abaixo e deve ser inserido no módulo da pasta de trabalho:

Option Explicit

Private Type POINTAPI

X As Long

Y As Long

End Type

#If VBA7 Then

Private Type MSG

hwnd As LongPtr

message As Long

wParam As LongPtr

lParam As LongPtr

time As Long

pt As POINTAPI

End Type

Private Declare PtrSafe Function PostMessage Lib "user32" Alias "PostMessageA" (ByVal hwnd As LongPtr, ByVal wMsg As Long, ByVal wParam As LongPtr, ByVal lParam As LongPtr) As Long

Private Declare PtrSafe Function GetMessage Lib "user32" Alias "GetMessageA" (lpMsg As MSG, ByVal hwnd As LongPtr, ByVal wMsgFilterMin As Long, ByVal wMsgFilterMax As Long) As Long

#Else

Private Type MSG

hwnd As Long

message As Long

wParam As Long

lParam As Long

time As Long

pt As POINTAPI

End Type

Private Declare Function PostMessage Lib "user32" Alias "PostMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long

Private Declare Function GetMessage Lib "user32" Alias "GetMessageA" (lpMsg As MSG, ByVal hwnd As Long, ByVal wMsgFilterMin As Long, ByVal wMsgFilterMax As Long) As Long

#End If

Private bCancel As Boolean

Private Const WM_NCLBUTTONDOWN = &HA1

Private Const WM_NCLBUTTONDBLCLK = &HA3

Public Sub Prevent_Resizing_Excel()

Dim tMSG As MSG

bCancel = False

Do While GetMessage(tMSG, 0, 0, 0)

If bCancel Then Exit Do

With tMSG

If .message <> WM_NCLBUTTONDOWN And .message <> WM_NCLBUTTONDBLCLK Then

DoEvents

PostMessage .hwnd, .message, .wParam, .lParam

End If

End With

DoEvents

Loop

End Sub

Public Sub Restore_Resizing_Excel()

bCancel = True

End Sub

Private Sub Workbook_Open()

'=================================================================================

'Any exixting code goes here before calling the 'Restore_Resizing_Excel' routine

'=================================================================================

Call Prevent_Resizing_Excel

End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean)

Call Restore_Resizing_Excel

End Sub

Não sei se é a melhor maneira de fazer isso. Se não achar a solução adequada, sugiro postar a dúvida no fórum do MSDN na categoria de VBA:

https://social.msdn.microsoft.com/Forums/pt-BR/home?forum=vbapt

Abraços!

Esta resposta foi útil?

0 comentários Sem comentários

3 respostas adicionais

Classificar por: Mais útil
  1. Anônima
    2017-03-28T14:58:16+00:00

    Eu vou ver se consigo usar essa macro aqui:

    Sub Encerrar()

    ActiveWorkbook.Save

    Application.Quit

    End Sub

    para fechar a planilha.

    Vamos ver se da certo neh srsrs

    Até mais.

    Esta resposta foi útil?

    0 comentários Sem comentários
  2. Anônima
    2017-03-28T14:55:27+00:00

    Rafael, 

    Cara, você é demais srsrs :), você domina muito (conseguiu resolver o meu problema de importar o xml), eu só tenho que agradecer você (de verdade cara, eu procurei demaiisss como fazer isso). 

    Eu vou tentar resolver esse outro problema.

    Muito obrigado pela sua atenção a minha dúvida.

    Quando ao forum MSDN, eu até acessei o site, porém eu não consegui postar minha dúvida lá, eu vou ver se consigo.

    Muito obrigado!

    Atenciosamente,

    Marco

    Esta resposta foi útil?

    0 comentários Sem comentários
  3. Anônima
    2017-03-28T13:40:51+00:00

    Olá Marco!

    Isto só com VBA. Eu pesquisei em fóruns internacionais e achei uma postagem com um código que funcionou. (https://www.mrexcel.com/forum/excel-questions/426463-disabling-excel-application-resizing.html).

    O código que funciona e trava a janela do Excel na posição e tamanho é o que está abaixo e deve ser inserido no módulo da pasta de trabalho:

    Option Explicit

    Private Type POINTAPI

    X As Long

    Y As Long

    End Type

    #If VBA7 Then

    Private Type MSG

    hwnd As LongPtr

    message As Long

    wParam As LongPtr

    lParam As LongPtr

    time As Long

    pt As POINTAPI

    End Type

    Private Declare PtrSafe Function PostMessage Lib "user32" Alias "PostMessageA" (ByVal hwnd As LongPtr, ByVal wMsg As Long, ByVal wParam As LongPtr, ByVal lParam As LongPtr) As Long

    Private Declare PtrSafe Function GetMessage Lib "user32" Alias "GetMessageA" (lpMsg As MSG, ByVal hwnd As LongPtr, ByVal wMsgFilterMin As Long, ByVal wMsgFilterMax As Long) As Long

    #Else

    Private Type MSG

    hwnd As Long

    message As Long

    wParam As Long

    lParam As Long

    time As Long

    pt As POINTAPI

    End Type

    Private Declare Function PostMessage Lib "user32" Alias "PostMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long

    Private Declare Function GetMessage Lib "user32" Alias "GetMessageA" (lpMsg As MSG, ByVal hwnd As Long, ByVal wMsgFilterMin As Long, ByVal wMsgFilterMax As Long) As Long

    #End If

        

    Private bCancel As Boolean

    Private Const WM_NCLBUTTONDOWN = &HA1

    Private Const WM_NCLBUTTONDBLCLK = &HA3

    Public Sub Prevent_Resizing_Excel()

      

    Dim tMSG As MSG

    bCancel = False

    Do While GetMessage(tMSG, 0, 0, 0)

    If bCancel Then Exit Do

    With tMSG

    If .message <> WM_NCLBUTTONDOWN And .message <> WM_NCLBUTTONDBLCLK Then

    DoEvents

    PostMessage .hwnd, .message, .wParam, .lParam

    End If

    End With

    DoEvents

    Loop

    End Sub

    Public Sub Restore_Resizing_Excel()

    bCancel = True

    End Sub

    Private Sub Workbook_Open()

    '=================================================================================

    'Any exixting code goes here before calling the 'Restore_Resizing_Excel' routine

    '=================================================================================

    Call Prevent_Resizing_Excel

    End Sub

    Private Sub Workbook_BeforeClose(Cancel As Boolean)

    Call Restore_Resizing_Excel

    End Sub

    Não sei se é a melhor maneira de fazer isso. Se não achar a solução adequada, sugiro postar a dúvida no fórum do MSDN na categoria de VBA:

    https://social.msdn.microsoft.com/Forums/pt-BR/home?forum=vbapt

    Abraços!

    Olá Rafael, tudo bem com você?

    Cara, é quase isso :) (praticamente 99% srsrs). Eu só preciso nessa macro habilitar o botão fechar.

    Essa macro está quase perfeita (99%), só preciso habilitar o botão fechar (só esse botão, apenas esse srsrsr).

    Por favor, você acha que consegue fazer isso?

    Eu só estou perguntando direto para você, pois eu não consigo editar essa macro (é muito para mim :(, eu ainda estou gatinhando no excel srsr).

    Se você conseguir habilitar esse botão fechar, eu já posso clicar em resolvi o meu problema :)

    Desde já agradeço pela sua atenção a minha dúvida.

    Atenciosamente,

    Marco

    Esta resposta foi útil?

    0 comentários Sem comentários