salvare in una cartella diversa
Hai un problema con Excel? 
salvare in una cartella diversa
di marnevi (utente non iscritto) data: 16/08/2017 15:55:07
Vorrei salvare una copia del file excel attivo in una cartella che si trova ad un livello di directory inferiore rispetto al path in cui si trova il file excel attivo.
Vorrei che si comporti in modo analogo a come fa il seguente codice, che estrae dati da un file che si trova ad un livello di directory inferiore rispetto al file attivo
Option Explicit
Private Sub Workbook_Open()
Dim sPath As String
Dim Nome As String
sPath = ActiveWorkbook.Path
p = InStrRev(sPath, "")
oPath = Left(sPath, p)
With ActiveWorkbook.Sheets(1)
Nome = .Range("A1")
.Range("A2").Formula = "='" & oPath & "[" & Nome & "]Foglio1'!$A$2"
End With
End Sub |
di Vecchio Frac data: 16/08/2017 16:25:00
Cerca lo slash precedente all'ultimo e trovi il percorso superiore (si chiama così, mi dispiace, non "inferiore" ^_^)
Oppure splitti in corrispondenza degli slash e consideri il penultimo indice.
Non è da molto che ho scritto qualcosa di simile per qualcun altro.
di marnevi (utente non iscritto) data: 16/08/2017 21:59:23
puoi farmi un esempio?
di Vecchio Frac data: 17/08/2017 09:07:02
Ho trovato l'esempio che facevo una decina di giorni fa.
Option Explicit
'prima soluzione
Sub estrazione1()
Dim sPath As String
Dim p As Long
Dim opath As String
sPath = ActiveWorkbook.Path
p = InStrRev(sPath, "")
p = InStrRev(sPath, "", p - 1)
opath = Left(sPath, p)
End Sub
'seconda soluzione
Sub estrazione2()
Dim sPath As String
Dim oPath As String
Dim v As Variant
sPath = ActiveWorkbook.Path
v = Split(sPath, "")
ReDim Preserve v(UBound(v) - 2)
oPath = Join(v, "")
End Sub |
di scossa data: 17/08/2017 11:22:49
Ciao,
propongo la udf ricorsiva sottoriportata, utilizzabile lato celle come da esempio:
=SubPath(CELLA("nomefile";A1);1)
N.B.: il parametro nLev, nell'uso lato celle, deve partire da 1 se si vuole escludere il nome del file.
oppure lato codice come da esempio (Sub estrazione4) sottoriportato.
| scossa's web site |
| Se tu hai una mela, ed io ho una mela, e ce le scambiamo, allora tu ed io abbiamo sempre una mela per uno. Ma se tu hai un'idea, ed io ho un'idea, e ce le scambiamo, allora abbiamo entrambi due idee. (George Bernard Shaw) |
Function SubPath(sString, Optional ByRef nLev As Long = 0) As String
'by scossa
'funzione ricorsiva che restituisce il path troncato al livello nLev
'se nLev omesso o minore di 0 restituisce il path completo
'se nLev maggiore del numero dei folder restituisce la lettera del driver
'usata lato cella mettere nLev = 1 per la cartella del foglio; es.:
'=SubPath(CELLA("nomefile";A1);1)
Dim nAt As Long
nLev = nLev - 1
nAt = InStrRev(sString, "") - 1
If nLev >= 0 And nAt > 0 Then
sString = SubPath(Left(sString, nAt), nLev)
End If
SubPath = sString
End Function
'esempio:
Sub estrazione4()
Debug.Print SubPath(ActiveWorkbook.Path, 1) '& ""
End Sub
|
di Vecchio Frac data: 17/08/2017 15:38:18
+1
di marnevi (utente non iscritto) data: 18/08/2017 12:47:00
Funziona... grazie scossa. grazie vecchio frac.
sempre preziosi
Vuoi Approfondire?