Pagina precedente | 1 | Pagina successiva
Vota | Stampa | Notifica email    
Autore

Copiare colonne non contigue tra 2 files

Ultimo Aggiornamento: 22/05/2019 20:30
Post: 268
Registrato il: 13/12/2015
Città: MILANO
Età: 58
Utente Junior
2010
OFFLINE
19/05/2019 11:05

Ciao a tutti,
nel foglio di lavoro "Appoggio" del file "Colonne non contigue_VForum.xls vorrei copiare i dati di alcune colonne del file: "INTERROGAZIONEDOCUMENTI_FORUM.xlsb" e precisamente:
colonna A (consegna confermata): prelevo i dati della colonna D
colonna B (articolo): prelevo i dati della colonna G
colonna C (descrizione): prelevo i dati della colonna H
etc, etc

I dati nel file "INTERROGAZIONEDOCUMENTI_FORUM.xls" andrebbero presi fino all'ultima riga non vuota.

Quello che ho fatto è, purtroppo, poco dinamico:
  
Public Sub cercacopia()      
   Dim wk1 As Workbook 'dichiaro le variabili     
   Dim wk2 As Workbook     
   Dim sh1 As Worksheet     
   Dim sh2 As Worksheet     
   Dim strFile As String, strPath As String  
On Error GoTo RigaErrore 'gestione errori
       Application.ScreenUpdating = False          
       Set wk1 = ThisWorkbook 'metto i riferimenti ai files
       cartellainiziale = "C:\Users\Microsoft\Desktop\Imballi"
       With Application.FileDialog(msoFileDialogOpen) 
       .InitialFileName = cartellainiziale     
       .Title = "Seleziona cartella e File"     
       .AllowMultiSelect = False     
       .Show         
            If .SelectedItems.Count = 0 Then Exit Sub         
            strFile = .SelectedItems(1)     
       End With     
       Set wk2 = Workbooks.Open(strFile)     
       Set sh1 = wk1.Worksheets("Appoggio") 'metto i riferimenti ai fogli    
       Set sh2 = wk2.Worksheets("WGT21SFL")           

        With sh2         
        sh1.Range("A2:E70").ClearContents         
        .Range("A2:Y70").Copy 'copio i dati da un file all'altro 
        sh1.Range("A2").PasteSpecial xlPasteValues     
        End With
   
         Application.CutCopyMode = False
         Application.DisplayAlerts = False 'inibisco avviso  salvataggio del file sorgente     
        wk2.Close 'chiudo il file sorgente  
       Application.DisplayAlerts = True     
       Application.ScreenUpdating = True  'riga sempre eseguita RigaChiusura:     
    'Set a Nothing delle variabili oggetto     
       Set sh2 = Nothing     
       Set sh1 = Nothing     
       Set wk1 = Nothing     
       Set wk2 = Nothing     
       Exit Sub  
       'in caso di errore 
  RigaErrore:     
MsgBox Err.Number & vbNewLine & Err.Description     
Resume RigaChiusura       
End Sub
[Modificato da BG66 19/05/2019 11:16]
BG66
Excel 2010
Post: 11
Registrato il: 04/03/2019
Utente Junior
2019
OFFLINE
21/05/2019 10:35

Cosa significa 'poco dinamico' ?
A Me non dice niente.
Post: 5.676
Registrato il: 14/11/2004
Utente Master
Office 2019
OFFLINE
21/05/2019 11:08

Copia dati
Ciao BG, premesso che devi lanciare la macro per ogni file dal quale devi fare la copia, cancellando i dati precedenti, inoltre inserisci un range fisso da copiare

.Range("A2:Y70").Copy


questo dovresti renderlo dinamico in modo da copiare i dati che ti interessano

ed anche il foglio da copiare, tu lo chiami "Generale" ma nel file si chiama "WGT21SFL" quindi ti va in errore la macro.

In poche parole che dati devi riportare dal file, quali colonne tutte oppure solo alcune, nel foglio Appoggio vedo solo alcune colonne.

i dati devono accodarsi a quelli precedenti?

Fai sapere, Ciao By Sal [SM=x423051]

[Modificato da by sal 21/05/2019 11:10]
se ti piace la soluzione sostienici con una DONAZIONE a piacere. Grazie clicca qui
Post: 268
Registrato il: 13/12/2015
Città: MILANO
Età: 58
Utente Junior
2010
OFFLINE
21/05/2019 11:52

Ciao a tutti.

@giuliano72
Per poco dinamico intendo questa parte del codice:
 With sh2
      sh1.Range("A2:E70").ClearContents  
     .Range("A2:Y70").Copy 'copio i dati da un file all'altro 


@by Sal
a) I dati (fino all'ultima riga compilata) da prendere dal foglio"WGT21SFL" del file sorgente sono 5 e precisamente:
Consegna conf (colonna D)
Articolo (colonna G)
Descrizione (colonna H)
Q.tà saldo (colonna K)
Articolo (colonna Y)

b) I dati vanno sempre a cancellare quelli esistenti.

Grazie per l'aiuto

[Modificato da BG66 21/05/2019 11:55]
BG66
Excel 2010
Post: 5.677
Registrato il: 14/11/2004
Utente Master
Office 2019
OFFLINE
21/05/2019 16:17

Copia dati
Ciao BG66 ecco la macro che fa il lavoro.

Sub Copia()
Dim r As Long, c As Long, Ur As Long, x As Long
Dim Sh1 As Worksheet, Sh2 As Worksheet, Risp, Wkb As Workbook, strFile, ind As String, rng

ind = ActiveWorkbook.Path & "\" & ActiveWorkbook.Name
Set Sh1 = Worksheets("Appoggio")
Sh1.Activate

If Sh1.Cells(2, 1) = "" Then Ur = 2 Else Ur = Cells(Rows.Count, 1).End(xlUp).Row
Risp = MsgBox("Attenzione! elimino i dati presenti?", vbYesNo, "Pulizia dati")
If Risp = 6 Then Sh1.Range("A2:E" & Ur).ClearContents: r = Ur Else r = Ur + 1
Application.ScreenUpdating = False
With Application.FileDialog(msoFileDialogOpen)
    .InitialFileName = cartellainiziale
    .Title = "Seleziona cartella e File"
    .AllowMultiSelect = False
    .Show
    If .SelectedItems.Count = 0 Then Exit Sub
    strFile = .SelectedItems(1) 'seleziono il file
End With
Application.DisplayAlerts = False
Workbooks.Open Filename:=strFile
Set Sh2 = Worksheets(1) 'seleziono il primo foglio
Ur = Sh2.Cells(Rows.Count, 4).End(xlUp).Row
rng = Sh2.Range("A2:Y" & Ur)
ActiveWorkbook.Close
Application.DisplayAlerts = True
For x = 1 To UBound(rng)
    Sh1.Cells(r, 1) = rng(x, 4)
    Sh1.Cells(r, 2) = rng(x, 7)
    Sh1.Cells(r, 3) = rng(x, 8)
    Sh1.Cells(r, 4) = rng(x, 11)
    Sh1.Cells(r, 5) = rng(x, 25)
    r = r + 1
Next x
Sh1.Cells(1, 1).Select
Application.ScreenUpdating = True
Set Sh1 = Nothing
Set Sh2 = Nothing

End Sub


ti chiede se cancellare i dati precedenti, ho messo un pulsante per lanciare la macro

Ciao By Sal [SM=x423051]


[Modificato da by sal 21/05/2019 17:21]
se ti piace la soluzione sostienici con una DONAZIONE a piacere. Grazie clicca qui
Post: 269
Registrato il: 13/12/2015
Città: MILANO
Età: 58
Utente Junior
2010
OFFLINE
22/05/2019 20:30

[RISOLTO]

Cia by SAl,
è superOK.
Grazie ancora.

Alla prossima.
BG66
Excel 2010
Vota:
Amministra Discussione: | Chiudi | Sposta | Cancella | Modifica | Notifica email Pagina precedente | 1 | Pagina successiva
Nuova Discussione
 | 
Rispondi
Cerca nel forum
Tag discussione
Discussioni Simili   [vedi tutte]
Feed | Forum | Bacheca | Album | Utenti | Cerca | Login | Registrati | Amministra
Tutti gli orari sono GMT+01:00. Adesso sono le 15:57. Versione: Stampabile | Mobile | Regolamento | Privacy
FreeForumZone [v.6.1] - Copyright © 2000-2024 FFZ srl - www.freeforumzone.com