Copia selezione manuale



  • Copia selezione manuale
    di Lisa.B (utente non iscritto) data: 24/01/2015 12:48:40

    Salve a tutti, sono alla mia prima esperienza di VBA, mi chiedevo se era possibile creare una macro che copiasse una selezione variabile fatta manualmente con il mouse (ogni volta differente) su di un file esterno a quello in cui sto lavorando.
    Il file non lo deve creare ma è già presente

    Grazie a chi mi aiuterà



  • di Lucas87 data: 24/01/2015 13:11:02

    Ciao
    Il file dove riportare i valori si trova sempre nella stessa posizione? Ha sempre lo stesso nome? È già aperto? Se è chiuso lo vuoi aprire e chiudere o solo tenere aperto?
    Puoi allegare i 2 file?



  • di Lisa.B (utente non iscritto) data: 24/01/2015 13:55:50

    Purtroppo sono file aziendali e non posso allegarli.
    Il file che devo aprire e dove va incolloata la selezione ha sempre lo stesso nome e è nella cartella assieme al file sorgente.
    È chiuso, la macro dovrebbe aprirlo con una psw, copiare la selezione fatta nel file sorgente con il muse nel foglio Mese_1 sempre dalla cella A1
    Una volta aperto e dopo che.gli è stato incollato la selezione, deve rimanere aperto, mentre il file sorgente chiudersi

    Spero di esser stata chiara



  • di Lisa.B (utente non iscritto) data: 24/01/2015 14:03:31

    Si potrebbe operare anche in un altro modo e risulterebbe più professionale ma lavorativamente parlando non so come poterlo fare.

    Potremmo lavorare sul file di destinazione dove tramite macro si attiva un message box che mi chiede il mese che voglio importare.
    In base al mese che voglio importare mi apre il file database anche esso è protetto da password è sempre nello stesso foglio saranno da impostare selezioni diverse in base al mese richiesto nel box

    Sinceramente non so se sia più semplice realizzare la prima soluzione o questa



  • di Lisa.B (utente non iscritto) data: 24/01/2015 15:27:21

    Se invece di allegare i file originali che per ovvie ragioni non mi è possibile, creo qualcosa di analogo, va bene ugualmente?



  • di Vecchio Frac data: 24/01/2015 17:41:21

    Di solito chiediamo file con la struttura originale ma con dati fittizi proprio per rispettare la riservatezza.





  • di Lisa.B (utente non iscritto) data: 24/01/2015 17:51:07

    La struttura dei file allegati è come l'originale. Calcolo è cosi sono tutti gli altri fogli poi che fanno riferimento a quello.

    Database idem, mah è con i dati di tutto l'anno ma quella è la struttura

    Se fosse possibile realizzare la seconda ipotesi, sarei molto più felice.

    Se vi va di aiutarmi, realizzatela per gennaio e febbraio, poi tutti gli altri mesi provo a realizzarla io seguendo il vostro procedimento



  • di Vecchio Frac data: 24/01/2015 18:45:49

    Da quel che vedo non è impossibile da fare...
    1) in CALCOLO premo un pulsante
    2) scelgo il mese, che viene importato da DATABASE e incollato in CALCOLO nel range corrispondente al mese scelto
    3) i range mensili hanno tutti la stessa struttura: cella per il mese, riga con i giorni, colonne nominate da a a z
    4) "il file database anche esso è protetto da password" --> la password è nota presumo

    Peccato che in CALCOLO non c'è la macro associata al pulsante... ma non è un problema ^_^





  • di Lisa.B (utente non iscritto) data: 24/01/2015 18:54:27

    Ciao Vecchio Frac è la srada che mi piacerebbe realizzare

    La macro non c'è xche' non conosco il vba è la prima volta che mi cemento in questa cosa.

    Tant'e' che ho chiesto di realizzarmi se possibile il msgbox che richiede il mese da copiare in calcolo e associarvi solo due mesi giuato x capire come è strutturato un vba e provare a finire il tutto da sola.

    La psw che apre calcolo è la stessa che apre database quindi solo chi ne è a conoscenza potrà accedervi. Ora naturalmente psw non ne ho messe



  • di Lisa.B (utente non iscritto) data: 24/01/2015 18:57:08

    Ops :cimento



  • di Vecchio Frac data: 24/01/2015 19:48:16

    Se vuoi posso strutturare il file come richiedi anche se io avrei impostato un controllo a discesa che scatena da sè la macro appena selezionato il mese che interessa (quindi niente pulsanti, niente msgbox, solo un controllo con un elenco a discesa con i nomi dei mesi).
    La parte più interessante è proprio la gestione della password... non è bello inserirla direttamente nel codice che apre il file protetto, perchè chiunque potrebbe leggerla. Ma facciamo un passo alla volta ^_^





  • di Raffaele_53 (utente non iscritto) data: 24/01/2015 19:52:51

    Alcune domande
    I due file sono presenti nella stessa cartella del Pc oppure sono in rete? Per adesso puoi usarli solo se presenti sul PC stesso
    Ci pensa il codice a trovare dove sono, l'unica cosa che devi verificare sono 4 righe 2 per i fogli e 1 per Nome-File +1 per la password
    Ps. Il Bottone, significa che dovrai digitare fisicamente il mese, non mi sembra una buona cosa, per adesso esiste solo un inputbox
    Si può fare con userform oppure una semplice convalida-dati ex in cella AH1
    Altra cosa se metti la password nel VBA, qualcuno può leggerla, oppure preferisci immetterla manualmente ogni volta

    Questo è solo una base da dove iniziare
     
    Sub Carica_Dati()
    Dim Rg As Object, R As Long, Nome As String, Path As String, Mese As String, Wk As Workbook
    Mese = InputBox("digitare un mese?", , 0)
    If Mese = "" Then Exit Sub
    Dim Sh1 As Worksheet: Set Sh1 = Worksheets("MESE DA CALCOLARE") ' da cambiare casomai
    Path = ThisWorkbook.Path & ""
    Nome = "Database2.xls" ' da cambiare casomai
    Set Wk = Application.Workbooks.Open(Path & Nome, 3, , , Password:="lello", WriteResPassword:="lello")  'lello...Modificare le due password
    Dim Sh2 As Worksheet: Set Sh2 = Wk.Worksheets("RIASSUNTO ANNUALE") ' da cambiare casomai
    Set Rg = Sh2.Range("A:A").Find(Mese, LookIn:=xlValues, LookAt:=xlWhole)
    If Not Rg Is Nothing Then
        R = Rg.Row
        Sh2.Range(Sh2.Cells(R, 1), Sh2.Cells(R + 22, 1 + 31)).Copy
        Sh1.Range("A1").PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
        Application.DisplayAlerts = False
        Windows("DATABASE2.xls").Close
        Application.DisplayAlerts = True
    End If
    Set Wk = Nothing
    Set Sh2 = Nothing
    Set Sh1 = Nothing
    Set Rg = Nothing
    End Sub



  • di Lisa.B (utente non iscritto) data: 24/01/2015 19:54:49

    Scusa la mia ignoranza mah... Se io ho due file entrambi bloccati con la stessa psw... Chi la legge conose la psw xche' è già entrato nel programma, sbaglio?

    Nel caso, posso mettere una psw anche alle vba in modo che non siano visibili?

    Tornando a qiello che mi hai detto prima.....

    Controllo a discesa, se è più gestibile va benissimo



  • di Raffaele_53 (utente non iscritto) data: 24/01/2015 19:58:20

    Ps. Ultima domanda, hai allegato file.xls(excel2003), mà Tu in ditta quale Excel usi?



  • di Lisa.B (utente non iscritto) data: 24/01/2015 20:06:20

    Abbiamo dei 2010 e 2003

    Io ho un 2003



  • di Raffaele_53 (utente non iscritto) data: 24/01/2015 20:11:39

    Allora in AH1 crei una convalida-DaTi/Elenco e in Origine metti-->Gennaio;Febbraio;Marzo, ecc ecc Metti i Mesi digitati correttamente Maiuscole-Minuscole
    Modifica la terza riga---->Mese = Range("AH1").value
    Poi vai sul Bottone col Mouse destro/assegna Macro e scegli Carica_Dati

    Dovrebbe funzionare per ambedue Excel (l'unica cosa che i file non siano in rete aziendale)



  • di Lisa.B (utente non iscritto) data: 24/01/2015 20:15:18

    Oh mio Dio.... E

    Ora riderete quando vi dirò che non ho capito nulla di ciò che avete scritto....

    Se è una base su cui partire, io sono già annegata



  • di Lisa.B (utente non iscritto) data: 24/01/2015 20:18:13

    Niente rete.... Stesso pc.... Stessa cartella



  • di Vecchio Frac data: 24/01/2015 20:43:32

    Avevo promesso un file, allego un file ^_^
    Nel frattempo la discussione è proseguita... Ciao Raffaele! :)
    Lisa, dai un'occhiata al mio file (è molto semplice) e vedi se ci capisci qualcosa.

    Allego: CALCOLO vfrac1.xls





  • di Vecchio Frac data: 24/01/2015 20:46:24

    @Raffaele
    Due metodi diversi, stesso risultato. Tu hai usato Find e io il risultato della cella associata alla combobox. Le due idee sono equivalenti e il codice successivo è praticamente identico... quindi risulta che io ho copiato da te :D





  • di Lisa.B (utente non iscritto) data: 24/01/2015 20:47:39

    Sicuramente Vecchio Frac....

    Con tutto il rispetto del mondo...
    Non saprei come proseguire nel vba di Raffaele che comunque ringrazio x la gentilezza



  • di Raffaele_53 (utente non iscritto) data: 24/01/2015 20:57:01

    Basta che copi questo allegato nella cartella dove esiste il DB che funziona, naturale che prima devi complettare tutti i Mesi nel DB
    Ti ho messo anche un secondo Bottone SALVA, se non serve eliminalo

    Ciao VF



  • di Lisa.B (utente non iscritto) data: 24/01/2015 20:58:05

    È FANTASTICOOOOOO....

    Ora però ti chiedo un favore, giusto per capire come funziona.

    Mi spiegheresti i passaggi che fa per capire dove e come andare a modificare in caso di bisogno e per ultimarlo con tutti i mesi successivi?

    Se dovessi applicare il vba ad un altro database sempre simile ma con altrencelle, dove devo intervenire?



  • di Raffaele_53 (utente non iscritto) data: 24/01/2015 21:03:11

    Ciao VF
    Non è l'ho stesso, io ho 4 righe nel codice che l'utente deve verificare e corregere
    Tu neanche una Raf -4 VF 0, non capisco come hai risolto con la password?



  • di Raffaele_53 (utente non iscritto) data: 24/01/2015 21:20:29

    Se Ti riferisci al Mio?
    Devi prima inserire tutte le tabelle degli altri 9 mesi nel DB
    Una volta fatto avrai tutti i 12 mesi

    Ira nel foglio dove c'è i bottoni puoi importare un Mese
    Puoi modificarlo e lo puoi salvare nelle stesso mese scritto in A1
    Se desideri importi il mese di Marzo modifichi le celle che desideri (se Vuoi salvarlo nel DB mese= Marzo basta che premi il Bottone Salva.
    Se Invece desideri salvarlo nel DB mese= MAGGIO (Basta che scrivi MAGGIO in cella A1 e premi il Bottone Salva.

    Altro DB con più celle (si ma dovrai modificare il range di copia/incolla, oltre ai nomi fogli, Nome file e Password



  • di Vecchio Frac data: 24/01/2015 21:33:39

    @Raffaele
    Io non ho risolto la password. Ho ben detto che era un primo passo :)
    Anche il mio modello va aggiustato se Lisa cambia i nomi ai fogli, ma non credo che sia questo il punto.
    Sarebbe da verificare se il Workbooks.Open che abbiamo utilizzato, in presenza di file protetto da password, si preoccupa di chiedere la pwd e allora il problema è risolto... non servirebbe codificarla come parametro di Open.





  • di Vecchio Frac data: 24/01/2015 21:36:51

    Già che c'ero, ho verificato.
    Quando il codice tenta di aprire il file DATABASE.xls, chiede la pwd di apertura... basta inserirla e poi prosegue regolarmente. Quindi *non* serve inserirla di brutto nel codice. Ciò non toglie che la sicurezza sia garantita o che sia più efficace... non c'è niente di più facile della sprotezione di un file Excel, ma questa è un'altra storia ^_^





  • di Lisa B. (utente non iscritto) data: 24/01/2015 23:43:09

    Ragazzi che dirvi... GRAZIE DI CUORE

    Siete stati gentilissimi...

    Ora per capire come funziona e come posso adattare i 2 fogli "Calcolo vfrac" e "CALCOLO raf" (allo solo scopo di capire un pò il vba) vi chiedo la cortesia di adattare lo stesso VBA al DATABASE_X.

    Mi servirà a capire come e dove muovermi.

    GRAZIE DI CUORE RAGAZZI



  • di Raffaele_53 (utente non iscritto) data: 25/01/2015 00:23:10

    @VF
    L'avevo chiesto all'utente se preferiva digitarlo, oppure scriverlo nel VBA

    @Lisa
    Nel primo DB non ci và nessun VBA (solo completare i mesi), casomai controllare i nomi-foglio, nomi-file e password nell'allegato Calcolo.xls

    L'ultimo allegato è tutt'altra cosa.
    Sono quasi certo che si trattino di sigle-Turni-Lavoro. Mà posizionarlo in questo modo e un'altra storia. Apri un nuovo post e inserisci il file matrice e nuovamente anche questo.



  • di Lisa B. (utente non iscritto) data: 25/01/2015 00:36:34

    Sono riuscita a capire, modificare e far funzionare il VBA di Vecchio Frac anche con il DATABASE_X

    Domani proverò anche con il tuo Raffaele...

    GRAZIE ANCORA.... MI AVETE DATO TANTO!!!!!!!!!!!



  • di Lisa B. (utente non iscritto) data: 25/01/2015 00:38:54

    si si Raffaele, sono riuscita a farlo andare e è perfetto!!!

    Entrambi lo sono!!! Quello di Vecchio Frac è più semplice, il tuo è da studiare di più



  • di Lisa B. (utente non iscritto) data: 25/01/2015 01:24:52

    AIUTO VECCHIO FRAC

    Non riesco a capire una cosa! Ho modificato il tuo vba per far andare il DATABASE_X e va perfettamente!

    Ora ho copiato il vba sul file finale quello originale diciamo e quando lo lancio va sempre ad aprire il tuo file e poi mi da un errore con scritto 400



  • di Lisa.B (utente non iscritto) data: 25/01/2015 13:52:56

    Risolto parte del problema, mi ero scordata un passaggio

    Ora non ricerca piu' il file di Vecchi Frac ma continua a restituire l'errore 400 quando la lancio....



  • di Lisa.B (utente non iscritto) data: 25/01/2015 18:10:07

    Ho riavviato il pc, riprovato ora la macro e... va... Mah...

    Questa non l'ho capita.
    Direi che è risolta e ringrazio ancora Vecchio Frac e Raffaele x il grande aiuto che mi hanno dato



  • di Vecchio Frac data: 25/01/2015 18:56:43

    No, capita.
    L'errore 400 è il più ambiguo e strano degli errori (una finestra messaggio vuota con una X rossa e nient'altro).
    Però ho visto che il tuo ultimo file allegato ha una struttura del foglio molto diversa.
    Dovrai adattare il codice per farlo girare su quel modello.





  • di Lisa.B (utente non iscritto) data: 26/01/2015 08:30:53

    Ciao Frac

    Si son rimasta un po' a capire il procedimento ea vedere come lavora il vba, poi provando son riuscita ad adattarlo anche al secondo database.

    Grazie di cuore ancora



  • di LisaB. (utente non iscritto) data: 26/01/2015 15:00:32

    Vecchio Frac ho ancora bisogno di te

    Se nella tua macro volessi mettere la psw per evitare di inserirla tutte le volte, come devo fare?



  • di Vecchio Frac data: 26/01/2015 16:19:00

    Sulla scia dell'esempio già postato da Raffaele, si tratta di un parametro del metodo Open dell'oggetto Workbook.
    Una pratica abbastanza sconsigliabile ma come dicevo nemmeno mettere una password è una cosa sicura... utile solo per evitare uno sguardo superficiale al file, ma che con poco sforzo si può superare :)
     
    Set data_base = Workbooks.Open(Filename:=ThisWorkbook.Path & "Database.xls", ReadOnly:=True, Password:="la_mia_password")
        






  • di Lisa B. (utente non iscritto) data: 26/01/2015 16:25:18

    Beh... Facile mah non per tutti! io non saprei come fare per aprire un file protetto.

    Grazie ancora una volta per l'aiuto che mi hai dato. Avevo provato ad aggiungere la dicitura password =....... Ma mi dava errore.

    Ora è ok

    KISSSS