Fin quando ho agito in locale tutta la procedura ha funzionato egregiamente
e non dava problemi in creazione di una nuova cartella, o in variazione
della cartella attiva.
Adesso ho trasferito tutto sul server ed ho modificato il percorso,
indicandogli la radice della risorsa di rete, ma non funziona più!
In realtà funziona ma mi salva il tutto in Documenti del client che lancia
la procedura !!!
Credo che il problema sia proprio l'uso che faccio di ChDir e MkDir, mi
potreste aiutare ????
----------------------------------------------
Public Sub CERCAcART()
NOMEFILE = Cells(63, 1)
anno = Cells(19, 5)
nome = Cells(8, 1)
prima = Cells(8, 7)
spa = InStr(prima, " ")
If spa Then prima = Left(prima, spa - 1)
CART = nome & " " & prima
If Dir("\\Server\DiscoF\PARCELLAZIONE\" & CART & "\.") <> "" Then
MsgBox "TROVATA"
ChDir "\\Server\DiscoF\PARCELLAZIONE\" & CART
SALVA NOMEFILE & " " & anno
Else
MsgBox "NON TROVATA", vbCritical
ChDir "\\Server\DiscoF\PARCELLAZIONE"
MkDir CART
ChDir "\\Server\DiscoF\PARCELLAZIONE\" & CART
SALVA NOMEFILE & " " & anno
End If
End Sub
Sub SALVA(nomecompleto As String)
ActiveWorkbook.SaveAs Filename:= _
nomecompleto & ".xls" _
, FileFormat:=xlNormal, Password:="", WriteResPassword:="", _
ReadOnlyRecommended:=False, CreateBackup:=False
End Sub
-----------------------
Ivan
'-------------------
----------------------------------------------
Sub SALVA(nomecompleto As String)
'-------------------
Prova:
'=============>>
Public Sub CERCAcART()
Dim WB As Workbook
Dim SH As Worksheet
Dim anno As String
Dim nome As String
Dim prima As String
Dim MyFolder As String
Dim spa As Long
Dim CART As String
Const sPath As String = "\\Server\DiscoF\PARCELLAZIONE\"
MyFolder = CurDir
Set WB = ThisWorkbook
Set SH = WB.Sheets("Foglio1")
With SH
NOMEFILE = .Cells(63, 1).Value
anno = .Cells(19, 5).Value
nome = .Cells(8, 1).Value
prima = Cells(8, 7).Value
spa = InStr(prima, " ")
End With
If spa Then prima = Left(prima, spa - 1)
CART = nome & " " & prima
If Dir(sPath & CART & "\.") <> "" Then
MsgBox "TROVATA"
ChDrive sPath & CART
ChDir sPath & CART
SALVA NOMEFILE & " " & anno
Else
MsgBox "NON TROVATA", vbCritical
ChDrive sPath & CART
ChDir sPath
MkDir CART
ChDir sPath & CART
Call SALVA(WB, NOMEFILE & " " & anno)
End If
ChDrive MyFolder
ChDir MyFolder
End Sub
'-------------------->>
Public Sub SALVA(WB As Workbook, nomecompleto As String)
WB.SaveAs Filename:=nomecompleto & ".xls", _
FileFormat:=xlWorkbookNormal
End Sub
'<<=============
---
Regards,
Norman
Microsoft Excel MVP
Ciao Norman e bentrovato!
Il codice lo proverò lunedì prox dal cliente.
L'unica cosa che ho notato è il ChDrive !
cioè il percorso di rete è un DRIVE ?
questo concetto non riuscivo a metterlo in codice, grazie, poi ti faccio
sapere.
IvanDaBologna
PS
sei ufficialmente un MVP !!! congratulazioni !
Ne avevi davvero diritto poichè sei davvero presente con tutti.
ciao Norman,
purtroppo il codice si blocca sull'istruzione ChDrive !!!
Effettivamente la guida dice che il parametro deve essere UNA SOLA LETTERA,
e se la stringa è più lunga verrà presa una lettera sola, la prima !
Mi chiedevo se ci sono dei Riferimenti .. da attivare per fargli leggere il
percorso di rete ?
Aiuto !
ciao e grazie in ... advance !
[cut]
Se il progetto viene caricato nell'ambiente di sviluppo di Visual Basic da una condivisione di rete, indicata in un percorso UNC o in un percorso di unità mappato, quando il percorso viene eseguito App.Path restituirà un percorso UNC e ChDrive avrà esito negativo e genererà un errore. ChDir non genererà un errore, ma non consentirà di cambiare la directory. L'unica soluzione alternativa a questa situazione è quella di impostare manualmente l'unità e la directory.
Se il progetto può essere aperto da più di un utente sulla condivisione di rete, è possibile utilizzare una variabile dell'ambiente MS-DOS per assegnare a ogni utente una mappatura personalizzata della condivisione.
--------
ma non ho idea di come fare ... accidenti!
Ivan
'-----------------
'-----------------
In un modulo standard, alla testa del modulo,
prima di qualsiasi codice, prova
'=============>>
Option Explicit
'-------------------->>
Private Declare Function SetCurrentDirectory _
Lib "kernel32" _
Alias "SetCurrentDirectoryA" ( _
ByVal lpPathName As String) _
As Long
'-------------------->>
Public Sub CERCAcART()
Dim WB As Workbook
Dim SH As Worksheet
Dim anno As String
Dim nome As String
Dim prima As String
Dim MyFolder As String
Dim spa As Long
Dim CART As String
Const sPath As String = "\\Server\DiscoF\PARCELLAZIONE\"
MyFolder = CurDir
Set WB = ThisWorkbook
Set SH = WB.Sheets("Foglio1")
SetCurrentDirectory sPath
With SH
NOMEFILE = .Cells(63, 1).Value
anno = .Cells(19, 5).Value
nome = .Cells(8, 1).Value
prima = Cells(8, 7).Value
spa = InStr(prima, " ")
End With
If spa Then prima = Left(prima, spa - 1)
CART = nome & " " & prima
If Dir(CART & "\.") <> "" Then
MsgBox "TROVATA"
Else
MsgBox "NON TROVATA", vbCritical
MkDir CART
End If
Call SALVA(WB, NOMEFILE & " " & anno)
ChDrive MyFolder