2009-11-26 10 views
8

Fondamentalmente ho bisogno di raccogliere poche cifre da un'altra cartella di lavoro (che si trova e può essere aperta da un Form utente, quindi la posizione e i nomi sono variabili). Ho bisogno di usare VBA per questo, perché ho anche bisogno di compilare un grafico con questi dati. Preferirei non dover aprire l'altra cartella di lavoro per farlo, ma se è molto più facile allora è OK.Come faccio a fare riferimento a un'altra cartella di lavoro (aperta o chiusa) e recuperare valori, in VBA? - Excel 2007

Il form viene fatto e funziona benissimo, e ho il codice ho bisogno di popolare il grafico, tuttavia non posso ottenere VBA per tirare indietro i dati dalla cartella di lavoro e assegnarlo alle variabili che ho bisogno di.

Qualche idea su come posso convincere VBA a farlo? Sarebbe molto apprezzato.

Grazie,

Rob.

risposta

11

È necessario aprire il file in un modo o nell'altro se si desidera accedere ai dati al suo interno. Ovviamente, in un modo è quello di aprire nella vostra istanza di applicazione di Excel, ad esempio: -

(codice non testato)

Dim wbk As Workbook 
Set wbk = Workbooks.Open("C:\myworkbook.xls") 

' now you can manipulate the data in the workbook anyway you want, e.g. ' 

Dim x As Variant 
x = wbk.Worksheets("Sheet1").Range("A6").Value 

Call wbk.Worksheets("Sheet2").Range("A1:G100").Copy 
Call ThisWorbook.Worksheets("Target").Range("A1").PasteSpecial(xlPasteValues) 
Application.CutCopyMode = False 

' etc ' 

Call wbk.Close(False) 

Un altro modo per farlo sarebbe quello di utilizzare il provider di Excel ADODB ad aprire una connessione a il file e quindi utilizzare SQL per selezionare i dati dal foglio che si desidera, ma dal momento che si sta comunque lavorando da Excel non credo che ci sia alcun motivo per farlo, piuttosto che aprire la cartella di lavoro. Si noti che esistono parametri facoltativi per il metodo Workbooks.Open() per aprire la cartella di lavoro in sola lettura, ecc.

Problemi correlati