2013-08-16 27 views
6

Sono responsabile di un foglio di calcolo Excel 2010 di grandi dimensioni con collegamenti a tutti i tipi di origini dati esterne incluso Bloomberg, 65 fogli di lavoro con moduli vba e riferimenti ad altri componenti aggiuntivi vba.Progetto VBA Excel ha generato più oggetti cartella di lavoro

Ho notato che il progetto VBA ha acquisito più oggetti cartella di lavoro.

C'è lo standard ThisWorkbook. Tuttavia, un certo numero di fogli di lavoro sono stati trasformati in oggetti cartella di lavoro da Excel, lasciando il foglio di lavoro originale come copia di quello precedente, meno il codice.

Questo non sembra essere il risultato delle azioni di nessuno. In effetti, non pensavo fosse possibile avere più di un oggetto Workbook!

Ad esempio, avevo un foglio di lavoro chiamato wksInputs che ora è stato trasformato in un oggetto Cartella di lavoro e il wksInputs originale è ora chiamato wksInputs1.

example

Non riesco a cancellare l'oggetto wksInputs cartella di lavoro.

Per favore qualcuno potrebbe aiutare a spiegare cosa sta succedendo qui, e come potrei essere in grado di risolvere il problema ...?

Molte grazie.

+0

È possibile caricare uno screenshot dell'elenco delle cartelle del progetto VBA? Carica su un sito come imgur.com e includi il link/URL nella tua domanda post. –

+0

David, sfortunatamente mi è stato impedito di caricare su tali siti in base agli standard di sicurezza del mio ufficio. Ho provato a includere un'immagine in precedenza, ma StackOverflow dice che non ho il privilegio necessario ... Vorrei provare qualcos'altro, poiché so che sarebbe davvero di aiuto per gli altri a vedere il problema ... –

+0

Sì, questo è sarà davvero impossibile senza vedere quello che stai vedendo. –

risposta

0

Questo problema si è verificato nel mio codice quando ho passato un foglio di lavoro a un Comparto come parametro, come questo:

BuildCodeStrings chiamata (Sheet2, sAccount)
BuildCodeStrings Sub (wsSource Come foglio di lavoro, s As String

Per risolvere il problema, ho creato una nuova cartella di lavoro, ho copiato tutti i dati da tutti i fogli legittimi del mio originale in fogli con lo stesso nome nella mia nuova cartella di lavoro. Quindi copiato tutto il codice dall'originale alla nuova cartella di lavoro.

Poi ho cambiato il richiamo del sottoprogramma per

BuildCodeStrings di chiamata ("IC Accounts", sAccounts)
BuildCodeStrings Sub (sSource come stringa, s As String)

e ha aggiunto una riga di codice per il mio subroutine BuildCodeString:

Set wsSource = ThisWorkbook.Sheets (sSource)

Non so cosa causa questo problema, ma questa soluzione ha funzionato per me.

3

Ecco la mia soluzione, funziona in modo coerente e non è necessario copiare manualmente i fogli e il codice in una cartella di lavoro vuota. Ho testato questo metodo su diverse cartelle di lavoro danneggiate che mi hanno dato l'errore "Errore di automazione - Errore irreversibile" al momento del lancio.

NOTA: Il file danneggiato originale è stato salvato come .XLSM

  1. Aprire una cartella di lavoro di Excel vuoto
  2. scheda Sviluppo> sicurezza Macro> Disattiva tutte le macro senza notifica
  3. Chiudere Excel
  4. doppio clic sul file danneggiati, ad esempio, MyFile.xlsm
  5. File> Salva come ...> MyFile.xlsb (non .xlsm), scegliendo il formato .xlsb è questo il trucco
  6. Scheda Sviluppatore> Sicurezza macro> Abilita tutto L macro (o qualsiasi livello di sicurezza si preferisce)
  7. Chiudere Excel
  8. doppio clic MyFile.xlsb

Il file è stato corretto! È possibile ri-salvare il file MyFile.xlsb come .xlsm se necessario. Nella mia esperienza i file .xlsm si corrompono abbastanza facilmente, quindi ho intenzione di prendere l'abitudine di usare sempre il formato .xlsb.

Speranza qualcuno trova questa utile :)

+1

Purtroppo non ha funzionato per me –

0

ho avuto lo stesso problema in PowerPoint (2007), dove "Slide1" era vuoto e non può essere rimosso. La risposta da @Scoox mi ha segnalato una soluzione: i file

  1. esportazione tutti i moduli di VBA in testo (.BAS)
  2. Salvare il .pptm (o .xlsm) file come .pptx (o .xlsx)
  3. Chiudere PowerPoint (o Excel)
  4. Apri questo .pptx/.xlsx e salvarlo indietro come un/.xlsm
  5. Importa il testo originale VBA .pptm (BAS) File
  6. manualmente ri-associato tutti i pulsanti per le macro funzioni originali
  7. Aggiungere qualsiasi riferimento esterno si aveva in file originale
  8. Salva e verificare se tutto va bene

Questo ha funzionato per me, credo che avrebbe funzionato con Excel, anche.

Problemi correlati