Realizzazione Macro per recupero dati

Anonimo
2020-04-28T09:11:09+00:00

Ciao David

Ho una domanda porvi

Mi serve un comando macro per fare in modo che delle informazioni contenute in un riga qualsiasi di un foglio definito di "inserimento dati"  venga copiata come singola riga e poi trasferita in un foglio a parte di elaborazione dati e ogni volta tale riga venga incollata nella prima riga libera che trova nel foglio di destinazione, la mia difficoltà nel riuscire a fare tale comando sta nel fatto che la riga da copiare dal foglio di inserimento dati può essere ogni volta diversa e compresa tra la riga 2 e la riga 200 la riga da copiare deve essere subordinata al clik effettuato su un collegamento ipertestuale contenuto nella colonna B il quale è presente in tutte le righe dalla 2 all 200 e cliccando sul quale si va ad elaborare un documento in PDF.

Spero di essere stato abbastanza chiaro

se hai problemi fammi sapere

ciao Cristian

Microsoft 365 e Office | Excel | Per la casa | Windows

Domanda bloccata. Questa domanda è stata eseguita dalla community del supporto tecnico Microsoft. È possibile votare se è utile, ma non è possibile aggiungere commenti o risposte o seguire la domanda.

0 commenti Nessun commento
Risposta accettata dall'autore della domanda
Anonimo
2020-04-30T18:24:59+00:00

Ciao Cristian,

Const sColonne_da_Copiare As String = "A:AV"                 '<<=== Modifica

    Const sFoglio_Destinazione As String = "Foglio3"           '<<=== Modifica 

Il foglio 3 lo richiamerò io come mi servirà in seguito

Ho scaricato il tuo file e credo che il problema principale sia che sul foglio Inserimento dati siano presenti righe nascoste.

Per superare il problema, nel modulo di codice del foglio Inserimento datiincolla il seguente codice:

'=========>>

Option Explicit

'--------->>

Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink)

    Dim destSH As Worksheet

    Dim srcRng As Range, destRng As Range

    Dim LRow As Long

    Const sColonne_da_Copiare As String = "A:AV"                 '<<=== Modifica

    Const sFoglio_Destinazione As String = "Foglio3"              '<<=== Modifica

    Set srcRng = Intersect(ActiveCell.EntireRow, _

                           Me.Columns(sColonne_da_Copiare))

    Set destSH = ThisWorkbook.Sheets(sFoglio_Destinazione)

    With destSH

        Debug.Print Target.Range.Cells.Count

        LRow = LastRow(destSH, .Columns(sColonne_da_Copiare))

        Set destRng = .Range("A" & LRow + 1)

    End With

    srcRng.Copy Destination:=destRng

End Sub

'<<=========

In un modulo standard, incolla:

'=========>>

Option Explicit

'--------->>

Public Function LastRow(SH As Worksheet, _

                        Optional Rng As Range, _

                        Optional minRow As Long = 1)

    If Rng Is Nothing Then

        Set Rng = SH.Cells

    End If

    On Error Resume Next

    LastRow = Rng.Find(What:="*", _

                       after:=Rng.Cells(1), _

                       Lookat:=xlPart, _

                       LookIn:=xlFormulas, _

                       SearchOrder:=xlByRows, _

                       SearchDirection:=xlPrevious, _

                       MatchCase:=False).Row

    On Error GoTo 0

    If LastRow < minRow Then

        LastRow = minRow

    End If

End Function

'<<=========

===

Regards,

Norman

La risposta è stata utile?

0 commenti Nessun commento

16 risposte aggiuntive

Ordina per: Più utili
  1. Anonimo
    2020-04-30T13:09:44+00:00

    Ciao sono riuscito a farlo funzionare,( avevo una impostazione che bloccava l'esecuzione della macro generale),

    ma ha ancora un problema,

    la prima riga viene copiata correttamente al secondo passaggio la riga viene copiata nella seconda riga, alla terza selezione la copia non avviene su una terza riga ma sempre sulla seconda e cosi per tutte le successive azioni  e quindi vengono sovrascritte e non si forma il data base che vorrei che si formasse.

    riesci a capire come mai

    ciao Grazie

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2020-04-30T12:43:16+00:00

    Ciao Cristian,

    Scusa ancora ma anche il file che mi hai inviato non copia le righe sul foglio 2 o 

    forse non mi funziona correttamente

    Non sono d'accordo! Nel mio file di prova, vedi le due righe copiate dal primo foglio.  Per ottenerew questo risultato ho fatoo clic sui due collegamenti ipertestuali nel primo foglio.  Faccendo clic su uno dei due collegamenti ipertestuali nel primo foglio tu otterai la copia di una terza riga mel secondo foglio.

    posso inviarti il mio file cosi che tu possa verificare se ci sono dei problemi che impediscono il suo funzionamento? 

    Potresti  caricare il file problematico, dopo averlo depurato dei dati sensibili, su un servizio di condivisione di file, ad esempio Microsoft OneDrive o DropBox, e postare un link al file in una risposta qui.

    Per caricare il file su Microsoft OneDrive, vedi:

       Condividere file e cartelle di OneDrive

    Nel caso di DropBox, vedi:

    Come faccio a condividere file e cartelle in Dropbox?

    ===

    Regards,

    Norman

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2020-04-30T12:24:41+00:00

    Scusa ancora ma anche il file che mi hai inviato non copia le righe sul foglio 2

    o forse non mi funziona correttamente, posso inviarti il mio file cosi che tu possa verificare se ci sono dei problemi che impediscono il suo funzionamento?

    ciao Cristian

    La risposta è stata utile?

    0 commenti Nessun commento
  4. Anonimo
    2020-04-30T11:19:34+00:00

    Ciao Cristian,

    Scusa se disturbo

    ma sembra non funzionare comunque,

    non ho capito bene come farla funzionare occorre aggiungere parti, o info.

    Potresti scaricare il mio file di prova Cristian20200428.xlsm. In questo file, facendo clic su un collegamento ipertestuale sul foglio inserimento dati, la riga corrispondente viene copiata sulla prima riga vuota sul foglio Foglio2.

    ===

    Regards,

    Norman

    La risposta è stata utile?

    0 commenti Nessun commento