Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

ChDir e Mkdir con percorso di rete

560 views
Skip to first unread message

Ivan

unread,
Apr 27, 2007, 12:14:37 PM4/27/07
to
Ho realizzato una serie di modelli che, tramite una macro, si salvano con
nome e nella cartella adeguata al cliente elaborato.

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


Norman Jones

unread,
Apr 27, 2007, 1:11:56 PM4/27/07
to
Ciao 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


Ivan

unread,
Apr 27, 2007, 1:41:07 PM4/27/07
to

"Norman Jones" <norma...@whereforartthou.com> ha scritto nel messaggio
news:%23vtE29O...@TK2MSFTNGP03.phx.gbl...
> Ciao Ivan,
[cut]

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.

Ivan

unread,
May 2, 2007, 12:18:02 PM5/2/07
to
[cut]


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 !

Ivan

unread,
May 3, 2007, 1:36:34 AM5/3/07
to
mi scuso per il doppio messaggio, ma ho avuto un black.out della posta e così ho inviato due volte.
 
comunque credo di aver capito che devo 'mappare' una unità sul client perche sia vista come disco.
 
MSDN recita :
'

App.Path, ChDir, ChDrive e CurDir

[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

 

Norman Jones

unread,
May 3, 2007, 7:21:25 AM5/3/07
to
Ciao 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

0 new messages