Condividi tramite

Non copiare i collegamenti

Anonimo
2017-11-19T16:10:06+00:00

Ciao a tutti,

Grazie al codice scritto da Norman in questo thread, riesco a creare in pochi secondi dei file che richiederebbe qualche ora se il tutto avvenisse manualmente. Mi sono accorto dopo varie ricerche che nella creazione dei nuovi file include dei collegamenti sulla cartella nella quale utilizzo il codice. Infatti utilizzo i file creati per registrare dei valori e poi mediante la cartella dove sono stati creati, importo questi valori e nella circostanza mi vien chiesto se voglio aggiornare i collegamenti. Ho fatto ricerca e grazie a quest altro thread e al suggerimento di Norman di scaricare il componente aggiuntivo di Bill Manville sono riuscito a cancellare questi collegamenti. Adesso vi chiedo: è possibile modificare il codice utilizzato per creare i file senza i collegamenti alla cartella dai quali vengono creati? Grazie

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

  1. Anonimo
    2017-11-22T16:05:44+00:00

    Ciao Geacs,

    vedi questo file

    File Geacs

    Nel quale sono presenti alcuni nomi come da immagine:

    e lanciando la procedura Tester ottengo tre file di cui riporto un esempio da dove si vede che non sono presenti i nomi in quanto cancellati dal ciclo For Each Nome ....:

    C'è da dire che, invece, la modifica proposta da Norman non fa sì che i nomi non vengano portati perché prima del copia/incolla della procedura "Crea Fogli" viene creato un foglio nella cartella di lavoro. Foglio di cui viene fatta la copia per creare la nuova cartellla di lavoro, con la conseguenza di portare con se, in dote, i nomi presenti nella cartella di lavoro di origine.

    ciao

    0 commenti Nessun commento

16 risposte aggiuntive

Ordina per: Più utili
  1. Anonimo
    2017-11-22T00:11:14+00:00

    Se sei certo che quei nomi non sono utilizzati allora potresti fare queste integrazioni alla procedura del buon Norman.

    La routine "Public Sub CreateWorkbook" potrebbe essere modificata così (dove in grassetto ci sono le righe aggiunte per cancellare tutti i nomi presenti nella nuova cartella di lavoro appena creata dalla procedura "tester"):

    Public Sub CreateWorkbook( _

           FirstRow As Long, _

           EndRow As Long, _

           Codice As String)

        Dim newSH As Worksheet

        Dim srcRng As Range, destRng As Range

        Dim arrHeaders As Variant, arrDati As Variant, arrOut As Variant

        Dim sPercorso As String

    Dim nome As Name

        Const sIntestazioni As String = _

              "Nome,Operatore,Luogo,Appartenenza,Anzianità,Ore"

        Set srcRng = Intersect(myRng, srcSH.Rows(FirstRow & ":" & EndRow))

        Set newSH = myWB.Worksheets.Add

        arrHeaders = Split(sIntestazioni, ",")

        With newSH

            .Range("A1").Resize(1, UBound(arrHeaders) + 1).Value = arrHeaders

            Set destRng = .Range("A2")

            arrDati = srcRng.Columns(1).Value

            Call QuickSort(arrDati, _

                           1, _

                           LBound(arrDati, 1), _

                           UBound(arrDati, 1), _

                           True)

            With destRng.Resize(srcRng.Rows.Count)

                .Value = arrDati

                .EntireColumn.AutoFit

            End With

            .Copy

            Application.DisplayAlerts = False

            .Delete

            Application.DisplayAlerts = True

        End With

        sPercorso = myWB.Path & Application.PathSeparator

        With ActiveWorkbook

            .Sheets(1).UsedRange.EntireColumn.AutoFit

            Call CreaFogli(ActiveWorkbook)

    For Each nome In .Names

    nome.Delete

    Next nome

            .SaveAs Filename:=sPercorso & Codice & ".xlsx", _

                    FileFormat:=51

            .Close

        End With

    End Sub

    0 commenti Nessun commento
  2. Anonimo
    2017-11-21T22:42:36+00:00

    Ciao Casanmaner, 

    Innanzitutto grazie per l'attenzione mostrata, quei nomi che vedi nell'immagine fanno parte della cartella nella quale utilizzo il codice per la creazione dei file. Ma nessuno di questi sono necessari nelle cartelle create. Quindi non ci sarebbe nessun collegamento e nessuna interruzione nei nomi creati. Questo spiega perché desidero che al codice esistente venga aggiunta la parte che vada a cancellare quei nomi.

    0 commenti Nessun commento
  3. Anonimo
    2017-11-21T18:51:44+00:00

    Ciao geacs,

    ma per caso nei fogli origine ci sono delle formule che fanno riferimento a quei nomi?

    E quelle formule vengono copiate nel nuovo file?

    Se così fosse credo eliminando i riferimenti, o non riportandoli, avresti comunque una serie di formule che restituirebbero #NOME perché non troverebbero il nome a cui fanno riferimento.

    0 commenti Nessun commento
  4. Anonimo
    2017-11-21T11:57:05+00:00

    Ciao a tutti,

    Per capire meglio quello che si presenta dopo aver creato i nuovi file, allego un immagine di quello che compare nella gestione dei nomi:

    Questi nomi definiti si trovano nella cartella dove utilizzo il codice per creare i nuovi file. Purtroppo mi vengono copiati anche nei nuovi file anche se effettivamente come potete vedere non riporta un vero collegamento anche se nel momento in cui li utilizzo per importare dei valori mi chiede se voglio aggiornare i collegamenti.

    E' possibile fare in modo che nei file creati non vengano inclusi?

    0 commenti Nessun commento