Eu tenho a mesma situação aqui. Eu fiz isso de uma maneira um pouco diferente + não requer privilégios de administrador:
-
Crie um novo diretório: C: \ Wallpaper
-
Mude para o seu papel de parede, redimensione-o para as dimensões da tela e renomeie-o para background.jpg . Para redimensionar a imagem sem qualquer aplicativo de terceiros, abra o arquivo background.jpg com o MS Paint, pressione CTRL + W (para redimensionar), desmarque "Manter proporção", selecione o botão "Pixels" e ajuste sua imagem de acordo com o tamanho da área de trabalho .
-
Crie um novo arquivo nesse diretório chamado wallpaper.bat com o seguinte conteúdo (observe que você pode alterar 30 para um número maior se ele não for definido na inicialização. Por exemplo: 60 ou 90):
timeout /t 30 /nobreak > NUL
Call background.xlsm
- Crie o arquivo wallpaper.vbs no mesmo diretório com o seguinte conteúdo:
Set WshShell = CreateObject("WScript.Shell" )
WshShell.Run chr(34) & "C:\Wallpaper\wallpaper.bat" & Chr(34), 0
Set WshShell = Nothing
- Abra o MS Excel (mais tarde você irá salvá-lo lá, mas agora basta seguir as instruções), pressione Alt + F11 e o Visual Basic for Applications será aberto. Do lado esquerdo, você verá o navegador do projeto, clique duas vezes em ThisWorkbook e cole o seguinte conteúdo:
Private Sub Workbook_Open()
If (ThisWorkbook.Name = "background.xlsm") Then
Call changeWallpaper("C:\Wallpaper\background.jpg")
Application.DisplayAlerts = False
Application.Quit
End If
End Sub
- No mesmo arquivo do Excel, clique com o botão direito do mouse em qualquer um dos itens no navegador do projeto, depois em "Inserir", depois em "Módulo" e cole o código a seguir:
Option Explicit
Public Declare Function SystemParametersInfo Lib "user32" Alias
"SystemParametersInfoA" _
(ByVal uAction As Long, ByVal uParam As Long, _
ByVal lpvParam As Any, ByVal fuWinIni As Long) As Long
Public Const SPI_SETDESKWALLPAPER = 20 Public Const
SPIF_SENDWININICHANGE = &H2 Public Const SPIF_UPDATEINIFILE = &H1
Public Sub changeWallpaper(location As String)
Dim strImagePath As String
strImagePath = location
Call SystemParametersInfo(SPI_SETDESKWALLPAPER, 0&, strImagePath, SPIF_UPDATEINIFILE Or SPIF_SENDWININICHANGE)
End Sub
- Certifique-se de que as macros estejam sempre disponíveis sem confirmação para ativá-las para este arquivo. Salve este arquivo como arquivo Excel habilitado para macros com a extensão xlsm (é necessário chamá-lo de background.xlsm):
C:\Wallpaper\background.xlsm
-
Feche e abra o arquivo xlsm do Excel. Se o papel de parede está sendo definido - está feito. Caso contrário, verifique a segurança das macros. Talvez você precise adicionar esse arquivo do Excel a uma lista de permissões nas configurações de segurança de macros do Excel? Para mim - funciona. Se você ainda não consegue fazê-lo funcionar, você está sem sorte.
-
Defina o papel de parede no diretório de inicialização do Windows, coloque o atalho do arquivo wallpaper.vbs . Para fazer um atalho, clique com o botão direito do mouse no arquivo wallpaper.vbs e clique em "Criar atalho". Para abrir o diretório de inicialização, vá para Iniciar - > Todos os programas - > pasta startup , clique com o botão direito e "Open". Mova o atalho criado para esse diretório de inicialização.
NOTA 1: Após a inicialização, 30 segundos passarão e seu papel de parede deve ser definido com sucesso. Sem o temporizador (30 segundos), o arquivo excel dará erro por algum motivo.
OBSERVAÇÃO 2: Para editar o arquivo xlsm do Excel, renomeie-o para qualquer outro nome (por exemplo, bbackground.xlsm ) e abra-o. Quando você terminar de modificar o conteúdo, salve-o e renomeie para background.xlsm .