Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

aprire file nella stessa cartella

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

aprire file nella stessa cartella

Postdi raimea » 10/07/11 17:28

buon giorno a tutti.

con questa macro apro il file -squadre- che si trova nella stessa cartella del file
principale "masa1".

Codice: Seleziona tutto
Sub aprisquadre()

percorso = "D:\totosi/scommesse 2010/io+gualt"     ' <<< la cartella
file = "squadre.xls"    ' <<< il file dove preleva
Workbooks.Open percorso & "\" & file
Workbooks(file).Worksheets("foglio1").Activate   ' <<< il foglio su cui si apre

End Sub


ora, quando passo l'intera cartella (con i 2 file), ad altre persone,
naturalmente non trova il percorso come sul mio pc

Codice: Seleziona tutto
percorso = "D:\totosi/scommesse 2010/io+gualt"     ' <<< la cartella


volevo sapere se e' possibile aggirare questo,
cioe' con una macro aprire altri file contenuti nella stessa cartella
ma con percorso diverso ? :eeh:

grazie in anticipo
http://www.lelugarine.eu
S.O. Seven7, Excell 2010
Avatar utente
raimea
Utente Senior
 
Post: 1101
Iscritto il: 11/02/10 07:33
Località: lago

Sponsor
 

Re: aprire file nella stessa cartella

Postdi Avatar3 » 10/07/11 17:56

per aprire qualsiasi tipo di file quindi un codice generico per tutti i file
puoi usare in Public (in cima al modulo) questo codice
Codice: Seleziona tutto
Public Percorso As String
Public Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hWnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
Public Const SW_NORMAL = 1


Poi nella macro questo
Codice: Seleziona tutto
Sub ApriFile()
Percorso = Application.ActiveWorkbook.Path
 Nfile = "\" & "NomeFile.extensione"
 Dim X As Long
X = ShellExecute(hWnd, "Open", Percorso & Nfile, vbNullString, vbNullString, SW_NORMAL)
End Sub


Inserisci i due file in una cartella qualsiasi e quello che avrà questa macro aprirà il file indicato in NFile
Per il funzionamento delle macro si deve impostare la protezione a Bassa o Media.
Menu Strumenti -> Macro -> Protezione...
Avatar utente
Avatar3
Utente Senior
 
Post: 569
Iscritto il: 04/04/11 09:04

Re: aprire file nella stessa cartella

Postdi raimea » 10/07/11 18:45

:(
azz non riesco a seguirti , mi sfugge come fare la 1ma parte...

per aprire qualsiasi tipo di file quindi un codice generico per tutti i file
puoi usare in Public (in cima al modulo) questo codice


dove , devo inserirlo

poi il resto della procedura mi sembra averla capita...
grazie
http://www.lelugarine.eu
S.O. Seven7, Excell 2010
Avatar utente
raimea
Utente Senior
 
Post: 1101
Iscritto il: 11/02/10 07:33
Località: lago

Re: aprire file nella stessa cartella

Postdi Avatar3 » 10/07/11 19:22

Tutto ciò che è public va all'inizio del modulo
poi vengono le macro
quindi copia la prima parte pubblicata e inseriscila in un nuovo modulo (vuoto) e incolli
copi la macro ApriFile e la incolli subito dopo
Per il funzionamento delle macro si deve impostare la protezione a Bassa o Media.
Menu Strumenti -> Macro -> Protezione...
Avatar utente
Avatar3
Utente Senior
 
Post: 569
Iscritto il: 04/04/11 09:04

Re: aprire file nella stessa cartella

Postdi raimea » 10/07/11 19:22

ho provato a scriverla cosi..

Codice: Seleziona tutto
Public Percorso As String
Public Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hWnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
Public Const SW_NORMAL = 1


Sub aprisquadre()

Percorso = Application.ActiveWorkbook.Path
Nfile = "\" & "squadre.xls"
Dim X As Long
X = ShellExecute(hWnd, "Open", Percorso & Nfile, vbNullString, vbNullString, SW_NORMAL)
End Sub


la macro parte, non mi da errori ma non si ferma piu ,
devo chiudere excell...

:?:
http://www.lelugarine.eu
S.O. Seven7, Excell 2010
Avatar utente
raimea
Utente Senior
 
Post: 1101
Iscritto il: 11/02/10 07:33
Località: lago

Re: aprire file nella stessa cartella

Postdi Avatar3 » 10/07/11 20:01

ma chi avvia la macro ApriSquadre?
Per il funzionamento delle macro si deve impostare la protezione a Bassa o Media.
Menu Strumenti -> Macro -> Protezione...
Avatar utente
Avatar3
Utente Senior
 
Post: 569
Iscritto il: 04/04/11 09:04

Re: aprire file nella stessa cartella

Postdi raimea » 10/07/11 20:10

:-? mi sa che mi sto perdendo...
ma chi avvia la macro ApriSquadre?


la faccio partire con un pulsante.... :undecided:
http://www.lelugarine.eu
S.O. Seven7, Excell 2010
Avatar utente
raimea
Utente Senior
 
Post: 1101
Iscritto il: 11/02/10 07:33
Località: lago

aprire file nella stessa cartella

Postdi raimea » 10/07/11 20:51

quasi ci siamo :)

Tutto ciò che è public va all'inizio del modulo
poi vengono le macro
quindi copia la prima parte pubblicata e inseriscila in un nuovo modulo (vuoto) e incolli
copi la macro ApriFile e la incolli subito dopo


l'ho scritta cosi':

Codice: Seleziona tutto
Sub aprisquadre()

Public Percorso As String
Public Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hWnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
Public Const SW_NORMAL = 1

Percorso = Application.ActiveWorkbook.Path
Nfile = "\" & "squadre.xls"
Dim X As Long
X = ShellExecute(hWnd, "Open", Percorso & Nfile, vbNullString, vbNullString, SW_NORMAL)
End Sub


ma mi da errore a questa riga
Codice: Seleziona tutto
Public Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hWnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long


dice:
errore compilazione, dopo and sub, and function, end proprety sono ammessi solo commenti... :!:
http://www.lelugarine.eu
S.O. Seven7, Excell 2010
Avatar utente
raimea
Utente Senior
 
Post: 1101
Iscritto il: 11/02/10 07:33
Località: lago

Re: aprire file nella stessa cartella

Postdi Avatar3 » 10/07/11 21:01

La macro va scritta così in un modulo vuoto
Codice: Seleziona tutto
Public Percorso As String
Public Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hWnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
Public Const SW_NORMAL = 1


Sub aprisquadre()

Percorso = Application.ActiveWorkbook.Path
Nfile = "\" & "squadre.xls"
Dim X As Long
X = ShellExecute(hWnd, "Open", Percorso & Nfile, vbNullString, vbNullString, SW_NORMAL)
End Sub


Tu hai chiesto di aprire un file e presumo che sia Squadre.xls da un file che chiamiamo FileMaster.xls
che conterrà questa macro
quindi dal fileMaster.xls oltre alla macro come postata metterai il pulsante che avvia la macro:
Aprisquadre
che aprirà il file excel Squadre.xls

ma questa macro non deve stare nel file Squadre.xls altrimenti va in loop o si blocca perché chiama se stesso
Per il funzionamento delle macro si deve impostare la protezione a Bassa o Media.
Menu Strumenti -> Macro -> Protezione...
Avatar utente
Avatar3
Utente Senior
 
Post: 569
Iscritto il: 04/04/11 09:04

Re: aprire file nella stessa cartella

Postdi raimea » 10/07/11 21:12

ok
(e' come l'ho scritta nel post delle 19.22)
la macro parte non mi da errore, solo che non finisce mai e non apre nulla.
sono costretto a terminare -chiudere brutalmente excell...

ho capito che la macro va solo nel file principale (masa1)
e non nel file squadre.

sara' il mio pc ......?

grazie.
http://www.lelugarine.eu
S.O. Seven7, Excell 2010
Avatar utente
raimea
Utente Senior
 
Post: 1101
Iscritto il: 11/02/10 07:33
Località: lago

Re: aprire file nella stessa cartella

Postdi Avatar3 » 10/07/11 22:11

In effetti mi sono accorto che quella macro con il Public apre tutti i file tranne quelli excel :oops:

quindi cancella quel modulo e usa solo questa macro sempre inserita in Masa1
Codice: Seleziona tutto
Sub aprisquadre()
Percorso = Application.ActiveWorkbook.Path
Nfile = "\" & "squadre.xls"
Application.Workbooks.Open Percorso & Nfile
End Sub
Per il funzionamento delle macro si deve impostare la protezione a Bassa o Media.
Menu Strumenti -> Macro -> Protezione...
Avatar utente
Avatar3
Utente Senior
 
Post: 569
Iscritto il: 04/04/11 09:04

Re: aprire file nella stessa cartella

Postdi ricky53 » 10/07/11 23:33

Ciao Avatar,
non è la definizione "Public" della variabile "Percorso" a creare il problema ma l'istruzione
Codice: Seleziona tutto
X = ShellExecute(hWnd, "Open", Percorso & Nfile, vbNullString, vbNullString, SW_NORMAL)
End Sub
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W7; Office 2003-10-13-16
Avatar utente
ricky53
Utente Senior
 
Post: 4223
Iscritto il: 11/04/09 19:29
Località: Italia

Re: aprire file nella stessa cartella

Postdi Avatar3 » 10/07/11 23:56

per Ricky
Infatti l'ho detto
quella funzione apre i file non con estensione excel (.pdf, .txt etc)
quindi Raimea deve sostituire tutto (compreso le dichiarazioni su Public ormai inutili)
e usare solo questa macro
Codice: Seleziona tutto
Sub aprisquadre()
Percorso = Application.ActiveWorkbook.Path
Nfile = "\" & "squadre.xls"
Application.Workbooks.Open Percorso & Nfile
End Sub
Per il funzionamento delle macro si deve impostare la protezione a Bassa o Media.
Menu Strumenti -> Macro -> Protezione...
Avatar utente
Avatar3
Utente Senior
 
Post: 569
Iscritto il: 04/04/11 09:04

aprire file nella stessa cartella

Postdi raimea » 11/07/11 05:58

:D 8)
bingooooo
grazie ad entrambe, con quest'ultima macro
riesco a far aprire i file anche su altri pc con percorso diverso dal mio

a chi interessa, l'unico accorgimento, e' che il file principale e gli altri file (secondari)
devono essere nella stessa cartella.

grazie riky, grazie, 1000 avatar :P
http://www.lelugarine.eu
S.O. Seven7, Excell 2010
Avatar utente
raimea
Utente Senior
 
Post: 1101
Iscritto il: 11/02/10 07:33
Località: lago

Re: aprire file nella stessa cartella

Postdi Avatar3 » 11/07/11 08:55

:)
Per il funzionamento delle macro si deve impostare la protezione a Bassa o Media.
Menu Strumenti -> Macro -> Protezione...
Avatar utente
Avatar3
Utente Senior
 
Post: 569
Iscritto il: 04/04/11 09:04

aprire file nella stessa cartella

Postdi raimea » 07/10/12 07:48

ciao
con questa vostra macro , apro correttamente un file che e' nella stessa cartella.
Codice: Seleziona tutto
Sub apriover()

Percorso = Application.ActiveWorkbook.Path

nfile = "\" & "over.xls"

Application.Workbooks.Open Percorso & nfile

End Sub


ora ho il problema di quando il file e' gia aperto.
office 2003 , mi chiede cosa voglio fare in questo caso ?
se riapro SI, perdo le modifiche.
se rispondo No, la macro mi da errore--> metodo open dell'oggetto workbook non riuscito

vorrei poter risolvere cio' ,
magari con la comparsa di un messagbox che mi dice --> file gia aperto.
e non mi presenta piu il messaggio di office
grazie
ciao
http://www.lelugarine.eu
S.O. Seven7, Excell 2010
Avatar utente
raimea
Utente Senior
 
Post: 1101
Iscritto il: 11/02/10 07:33
Località: lago

Re: aprire file nella stessa cartella

Postdi Flash30005 » 07/10/12 09:07

prova questa macro
Codice: Seleziona tutto
Private Function FileAperto(pathNomeFile As String) As Boolean
   On Error Resume Next
   Open pathNomeFile For Binary Access Read Write Lock Read Write As #1
   Close #1
   If Err.Number <> 0 Then
      FileAperto = True
      Err.Clear
   End If
End Function

Sub apriover()
Dim nomeFile As String
percorso = Application.ActiveWorkbook.Path
nfile = "\" & "over.xls"

nomeFile = percorso & nfile
    If FileAperto(nomeFile) = True Then
    MsgBox "File già aperto !"
    Else
    Application.Workbooks.Open percorso & nfile
    End If
End Sub



Ciao

(copia tutto anche la funzione sopra la macro e inseriscila all'inizio del modulo)
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: aprire file nella stessa cartella

Postdi raimea » 07/10/12 15:23

tutto ok :o

funziona tutto come volevo
grazie 1.000
ciao
http://www.lelugarine.eu
S.O. Seven7, Excell 2010
Avatar utente
raimea
Utente Senior
 
Post: 1101
Iscritto il: 11/02/10 07:33
Località: lago

Re: aprire file nella stessa cartella

Postdi raimea » 23/10/12 19:22

ciao
sto avendo lo stesso problema mentre vado a prelevare dei dati in un altro file,
solo se questo e' gia aperto , mi si ferma la macro e mi chiede cosa voglio fare.

se il file dove prelevo e' chiuso e' tutto ok.

questa la macro con cui prelevo.
Codice: Seleziona tutto
Sub prel1()

scelta = MsgBox(Prompt:="devo prelevare i dati dal file luga49 ? ", Buttons:=vbYesNo, _
Title:="Posso PRELEVARE da lotto49 ?")
If scelta = 6 Then          '6 = SI; 7=No    istruzioni per cancellare = SI

Inizio = Timer
UserForm2.Show vbModeless
DoEvents

ActiveSheet.Unprotect

 
    Range("b4:c103").Select   ' cancello dati precedenti
    Selection.ClearContents

Dim masopen As Boolean
ActiveSheet.Unprotect

Application.ScreenUpdating = False
Set Ws2 = ThisWorkbook.Sheets("masaniello 1") '<<<foglio dove incollo
nomeFile = ThisWorkbook.Name
Nomefoglio = "Masaniello 1"

masopen = ckf("luga.49k_V3.29.xls") '<<< dichiarazione da inserire, fai F8 e vedi, True=file gia' aperto
percorso = Application.ActiveWorkbook.Path
Application.EnableEvents = False  '<<<<<<<< per non far partire il lampeggio in fgl1
nfile = "\" & "luga.49k_V3.29.xls"
If masopen = False Then Application.Workbooks.Open percorso & nfile

'----------- primo prelievo le date-----------------

Set Ws1 = Worksheets("Archivio_UK49s") '<<< il fgl dove copio
Ws1.Activate
'ActiveSheet.Unprotec

'------prelevo solo le celle con dei valori  e non quelle vuote-----
Application.Calculation = xlManual

InicC = 4               ' la riga di ws2 dove iniziare ad incollare le date
InicAB = 4               ' la riga di ws2 dove iniziare ad incollare i dati pari /dispari

Rini = Ws2.Range("Du27").Value   ' in DU27 e' scritta da quale estrazione iniz. il controllo
For RR1 = Rini To 7000 ' il range ws1 di estrazioni dove operare

'---copio le date----
If Not IsNumeric(Ws1.Range("b" & RR1).Value) And Ws1.Range("b" & RR1).Value <> "" Then
Ws2.Range("c" & InicC).Value = Ws1.Range("b" & RR1).Value
InicC = InicC + 1
End If
'--- copio pari 7 dispari---
If Not IsNumeric(Ws1.Range("AB" & RR1).Value) And Ws1.Range("AB" & RR1).Value <> "" Then
Ws2.Range("B" & InicAB).Value = Ws1.Range("AB" & RR1).Value
InicAB = InicAB + 1
End If

Next RR1

Application.Calculation = xlCalculationAutomatic
'------------------------

Application.EnableEvents = True    '< per non far partire il lampeggio in fgl1

Application.CutCopyMode = False  '<<< toglie avviso di molti dati
If masopen = False Then ActiveWorkbook.Close savechanges:=False
Workbooks(nomeFile).Activate
Sheets(Nomefoglio).Select
Range("c4").Select  ' la cella ws2 dove incollare i dati
   
     Range("e1").Select
     
     Application.ScreenUpdating = True
   
    ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
    ActiveWindow.DisplayGridlines = False
'--------------------------------------------------------------------------------------

ActiveWindow.ScrollColumn = 1
Application.ScreenUpdating = True

ActiveWindow.DisplayGridlines = False
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True _
, AllowFormattingColumns:=True, AllowFormattingRows:=True


Unload UserForm2
fine = Timer
MsgBox ("Tempo impiegato " & Int((fine - Inizio) / 60) & " min " & (fine - Inizio) Mod 60 & " Sec")

End If   'Qui continua se rispondi NO

End Sub


questa la relativa funzione inserita nello stesso modulo:
Codice: Seleziona tutto
Function ckf(nomeFile) As Boolean
    For Each Wb In Workbooks
        If Wb.Name = nomeFile Then
            ckf = True: Wb.Activate: Exit Function  '<<MODIFICATA
        End If
    Next Wb
    End Function


come posso aggirare l'avviso di office 2003 nel caso il file e' gia aperto ?=
grazie
http://www.lelugarine.eu
S.O. Seven7, Excell 2010
Avatar utente
raimea
Utente Senior
 
Post: 1101
Iscritto il: 11/02/10 07:33
Località: lago

Re: aprire file nella stessa cartella

Postdi aetio » 07/06/13 15:04

Ciao,
riesumo questo 3d per esporre il mio problema (avente lo stesso titolo, per cui evito doppioni...):
In una cartella [Excel 2007] ho un file aperto dal quale con una macro vorrei aprire tutti i file con estensione xlsm contenuti in una cartella specifica. Il mio problema è che i nomefile cambiano di volta in volta, per cui mi servirebbe un codice generico, un'istruzione come : "apri tutti i file di tipo xlsm contenuti nella cartella c:\Documenti\Cartella1" indipendentemente dal loro nome".
Ho provato a scrivere varianti del codice sopra proposto, ma non riesco ad adattarlo alle mie esigenze.
Grazie assai per la soluzione
eZio
I-REMS Falco. Per non dimenticare....
aetio
Newbie
 
Post: 4
Iscritto il: 07/06/13 14:43

Prossimo

Torna a Applicazioni Office Windows


Topic correlati a "aprire file nella stessa cartella":


Chi c’è in linea

Visitano il forum: Nessuno e 7 ospiti