pedromgantunes Posted March 12, 2012 Report Share Posted March 12, 2012 Bom dia Tenho um ficheiro Excel numa pasta num servidor, este ficheiro é utilizado por vários utilizadores e tem por finalidade guardar um ficheiro de resumo na pasta os meus documentos em cada PC de cada utilizador. Como o caminho para essa pasta varia de utilizador para utilizador há alguma forma de saber qual a localização da referida pasta para os vários utilizadores? Obrigado desde já. Link to comment Share on other sites More sharing options...
jmaocubo Posted March 13, 2012 Report Share Posted March 13, 2012 Olá Pedro Não sei se o teu objectivo é que seja identificado o caminho para ".../osmeusdocumentos/pastaarquivo" para que seja lá sempre guardado ou se o teu código obriga sempre a definir essa pasta. (alguma confusão naquilo que escrevi)..... Porque não deixas o local de gravação ser definido pelo utilizador no seu PC? Tipo: Sub Exportar_Resumo() Dim Export_Resumo On Error GoTo Sair Export_Resumo = Application.GetSaveAsFilename(, "Microsoft Excel Workbook (*.xls), *.xls") Sheets("Resumo").Copy ActiveWorkbook.SaveAs Filename:=Export_Resumo, FileFormat:=xlNormal ActiveWindow.Close Sair: End Sub Ou semelhante.... Cumprimentos, Miguel Link to comment Share on other sites More sharing options...
pedromgantunes Posted March 13, 2012 Author Report Share Posted March 13, 2012 Obrigado Miguel O meu objectivo é identificar o caminho para ".../osmeusdocumentos/pastaarquivo" para que o ficheiro seja sempre guardado no mesmo local em todos os computadores. Não sei se tal é possível... ? Link to comment Share on other sites More sharing options...
jmaocubo Posted March 13, 2012 Report Share Posted March 13, 2012 Ok vê se assim funciona!!! Sub Exportar_Resumo() Dim wb As Workbook Worksheets("Resumo").Copy Set wb = ActiveWorkbook wb.SaveAs "c:\documents and settings\" & Environ("username") & "\Os meus documentos\pasta arquivo\Resumo" _ & Format(Now(), "dd_mm_yyyy -hh mm") & ".xlsx" wb.Close End Sub Caso a directoria c:\ não seja a do windows, penso que assim também funciona (identificar a raiz): Sub Exportar_Resumo() Dim wb As Workbook Worksheets("Resumo").Copy Set wb = ActiveWorkbook wb.SaveAs (SYSTEMDRIVE & "\documents and settings\" & Environ("username") & "\Os meus documentos\pasta arquivo\Resumo" _ & Format(Now(), "dd_mm_yyyy -hh mm") & ".xlsx") wb.Close End Sub Ou ainda: os dois casos acima e caso a pasta "pasta arquivo" não exista, então criar: Sub Exportar_Resumo() Dim wb As Workbook Dim criar_pasta If Dir(SYSTEMDRIVE & "\documents and settings\" & Environ("username") & "\Os meus documentos\pasta arquivo\", vbDirectory) = "" Then criar_pasta = MsgBox("A directoria não existe. Deseja cria-la?", vbYesNo) If criar_pasta = vbYes Then MkDir SYSTEMDRIVE & "\documents and settings\" & Environ("username") & "\Os meus documentos\pasta arquivo\" End If End If Worksheets("Resumo").Copy Set wb = ActiveWorkbook wb.SaveAs (SYSTEMDRIVE & "\documents and settings\" & Environ("username") & "\Os meus documentos\pasta arquivo\Resumo" _ & Format(Now(), "dd_mm_yyyy -hh mm") & ".xlsx") wb.Close End Sub Estou a considerar (nos 2 primeiros casos) que existe uma pasta nos meus documentos com o nome "pasta arquivo". Para identificar os vários exports feitos, uma vez que estou a designar o nome Resumo com estático, a data e hora que foi feito o save. Atenção que estou também a considerar que a folha a ser gravada se chama "Resumo". Cumprimentos, Miguel Link to comment Share on other sites More sharing options...
pedromgantunes Posted March 14, 2012 Author Report Share Posted March 14, 2012 Obrigado Miguel. Com as tuas dicas o programa ficou 5*. Os meus parabéns a todos os que vão partilhando experiência com os menos experientes... Obrigado 😄 :D Link to comment Share on other sites More sharing options...
FreiNando Posted March 14, 2012 Report Share Posted March 14, 2012 Atenção que no Windows 7 a pasta de utilizadores não é documents and settings, é users. De qualquer modo Environ("USERPROFILE") devolve a pasta do utilizador, ou caso queiras mesmo saber qual a pasta de documentos do utilizador, mesmo que possater mudado o nome ou a ter colocado em qualquer local de qualquer disco (no meu caso, tenho dois discos e fiz isso), podes usar uma função como esta: Public Function PastaSistema(NumPasta As Integer) As String Dim objFSO As Object Dim objShell As Object Dim objFolder As Object Dim objFolderItem As Object Set objFSO = CreateObject("Scripting.FileSystemObject") Set objShell = CreateObject("Shell.Application") Set objFolder = objShell.NameSpace((NumPasta)) ' Ver Lista If objFolder Is Nothing Then PastaSistema = "" Else Set objFolderItem = objFolder.Self PastaSistema = objFolderItem.Path End If End Function '==================================== ' PASTAS DO WIN7 x86 e x64 '==================================== 'Lista de Pastas '----------------------------------- ' Num -- Nome = Pasta por defeito ' 2 -- Programas(User) = C:\Users\[utilizador]\AppData\Roaming\Microsoft\Windows\Start Menu\Programs ' 5 -- Os Meus Documentos = C:\Users\[utilizador]\Documents ' 6 -- Favoritos(User) = C:\Users\[utilizador]\Favorites ' 7 -- Arranque(User) = C:\Users\[utilizador]\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup ' 8 -- Itens recentes = C:\Users\[utilizador]\AppData\Roaming\Microsoft\Windows\Recent ' 9 -- SendTo = C:\Users\[utilizador]\AppData\Roaming\Microsoft\Windows\SendTo '11 -- Menu Iniciar = C:\Users\[utilizador]\AppData\Roaming\Microsoft\Windows\Start Menu '13 -- A Minha Música = '14 -- Os Meus Vídeos = '16 -- Ambiente de trabalho = C:\Users\[utilizador]\Desktop '17 -- Computador = C: '20 -- Fonts = C:\Windows\Fonts '22 -- Menu Iniciar = C:\ProgramData\Microsoft\Windows\Start Menu '23 -- Programas = C:\ProgramData\Microsoft\Windows\Start Menu\Programs '24 -- Arranque = C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup '25 -- Ambiente de Trabalho Público = C:\Users\Public\Desktop '26 -- Roaming = C:\Users\[utilizador]\AppData\Roaming '27 -- Printer Shortcuts = '28 -- Local = C:\Users\[utilizador]\AppData\Local '29 -- Arranque = C:\Users\[utilizador]\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup '30 -- Arranque = C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup '31 -- Favoritos = C:\Users\[utilizador]\Favorites '32 -- Temporary Internet Files = '33 -- Cookies = C:\Users\[utilizador]\AppData\Roaming\Microsoft\Windows\Cookies '34 -- History = '35 -- ProgramData = C:\ProgramData '36 -- Windows = C:\Windows '37 -- System32 = C:\Windows\System32 '38 -- Program Files (x86) = C:\Program Files (x86) '39 -- As Minhas Imagens = '40 -- [utilizador] = C:\Users\[utilizador] '41 -- SysWOW64 = C:\Windows\SysWOW64 '42 -- Program Files (x86) = C:\Program Files (x86) '43 -- Common Files = C:\Program Files (x86)\Common Files '45 -- Templates = C:\ProgramData\Microsoft\Windows\Templates '46 -- Documentos Públicos = C:\Users\Public\Documents '48 -- Ferramentas Administrativas = '49 -- Ligações de rede = '53 -- Música Pública = C:\Users\Public\Music '54 -- Imagens Públicas = '55 -- Vídeos Públicos = '------------------------------------------------- O caminho mais curto para conseguir fazer muitas coisas é fazer uma de cada vez. Samuel Smiles Link to comment Share on other sites More sharing options...
pedromgantunes Posted March 15, 2012 Author Report Share Posted March 15, 2012 Pode ser dado como resolvido. 🙂 :) Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now