Nonostante molti post che ho guardato attraverso la stessa frase della mia domanda, nessuna delle risposte soddisfa quello che sto cercando. Se riesci a collegarmi a uno, leggerei volentieri.VBA - Come copiare una riga in Excel da una cartella di lavoro a un'altra?
Ho una cartella di lavoro con fogli di lavoro. Per semplicità, diciamo che la mia cartella di lavoro ha un foglio di lavoro. E nel mio foglio di lavoro che si chiama "Foglio1", ci sono dati nelle celle da A1 a A4.
Quello che voglio il mio codice VBA da fare è:
- Copia riga 1 (o specificamente celle da A1 a A4) di cartella di lavoro 'A' nella variabile Gamma 'myRange'
- Creare una nuova cartella di lavoro, chiamiamo questa cartella di lavoro 'B'
- Dà alla cartella di lavoro 'default B "foglio1" un nuovo nome a "Nome test"
- Apri cartella di lavoro' B '(anche se mi rendo conto che il codice VBA "Workbooks.Add" apre una nuova prenota in modo che questo passaggio possa essere ridondante poiché Workbooks.Add copre la metà dei punti 2 e 3)
- Incolla "myRange" nella prima riga di "Workbook B"
- Salva "Cartella di lavoro B" con il nome "Test Book" e un timestamp racchiuso tra parentesi quadre. Il file deve essere anche l'estensione file "xls"
- Close 'Cartella di lavoro B' e riprendere a 'Cartella di lavoro A'
Quello che ho finora è questo:
Sub OpenAndSaveNewBook()
'Declarations
Dim MyBook As String
Dim MyRange As Range
Dim newBook As Workbook
'Get name of current wb
MyBook = ThisWorkbook.Name
Set MyRange = MyBook.Sheets("Sheet1").Range("A1,F1")
'Create/Open new wb
newBook = Workbooks.Add
'Save new wb with XLS extension
ActiveWorkbook.SaveAs Filename:=ThisWorkbook.Path & "/" & "TEST-BOOK", _
FileFormat:=xlNormal, CreateBackup:=False
'===NOTE: BEFORE THE FOLLOWING RUNS I NEED TO PERFORM ACTIONS ON CELLS VIA VBA ON
'===WORKBOOK 'A'. DOES THE NEWLY CREATE WORKBOOK BECOME THE PRIMARY/ACTIVE WORKBOOK
'===? AND SO THEN DO I NEED TO ACTIVATE WORKBOOK 'A'?
ActiveWorkbook.Close savechanges:=True
'Return focus to workbook 'a'
MyBook.Activate
End Sub
Come si può vedere, mi manca il codice che consente di gestire:
- l'incollatura dei miei dati copiati nella nuova cartella di lavoro
- il cambio della nuova Nome sheet1 della cartella di lavoro a qualcos'altro
- l'aggiunta di un timestamp alla stringa di nome di file su Salva
Infine, ho inserito una domanda nel mio codice, come credo di avere un malinteso del metodo ActiveWorkbook. AFAIK quando viene eseguito il codice "Workbooks.Add", questo diventa Active Workbook, ovvero uno con lo stato attivo. Questo influenza il codice VBA in esecuzione sulla cartella di lavoro 'A'? Questo significa che se volessi aggiungere del codice per manipolare le celle della cartella di lavoro 'A', allora avrei bisogno di usare "MyBook.Activate" dove 'MyBook' contiene la stringa del titolo effettivo della cartella 'A'?
Qualsiasi aiuto sarà molto apprezzato.
Grazie, QF
Fare 'newBook.SaveAs' e' newBook.Close' pure. Come hai scoperto, può essere fonte di confusione sapere a cosa si riferisce ActiveWorkbook, quindi è meglio usare riferimenti espliciti laddove possibile. – e100
Grazie per la risposta. Sono un principiante VBA e ricevo un messaggio di errore 'Qualifier Invalid' seguendo il tuo suggerimento. Immagino che questo sia dovuto al fatto che MyBook è del tipo sbagliato? Inoltre, questo non ha senso per me come dov'è il comando da incollare su newBook? Potresti elaborare? –
@ e100: stavo modificando il mio post quando hai postato questo commento :) –