2013-04-30 3 views
0

Voici mon problème: Je souhaite récupérer des données d'une feuille de calcul Excel Excel (* .xlsx) dans une autre feuille de calcul Excel sans l'ouvrir. J'ai donc donné une chance à OLEDB avec le fournisseur ACE.Récupération des données d'une feuille de calcul Excel dans une feuille Excel dans un bloc

La connexion a fonctionné et j'ai fait ce que je voulais, en bouclant mon jeu d'enregistrements. Mais maintenant je veux une optimisation, c'est-à-dire mettre mon jeu d'enregistrements en Excel dans un bloc au lieu de le boucler.

pourquoi je fait quelque chose comme ceci:

Sub RetrieveData() 

Dim con As ADODB.Connection 
Dim rs As ADODB.Recordset 

Set con = New ADODB.Connection 
Set rs = New ADODB.Recordset 

With con 
    .Provider = "Microsoft.ACE.OLEDB.12.0" 
    .ConnectionString = "Data Source=Path\File.xlsx; _ 
     Extended Properties=""Excel 12.0 Xml;HDR=NO;IMEX=1""" 
    .Open 
    Set rs = .Execute("Select * From [Sheet1$]") 

'Problem here 
    Range(Cells(1, 1), Cells(rs.RecordCount, rs.Fields.Count - 1)) = rs 
    .Close 
End With 
Exit Sub 

La chose ici est que je suis en train de traiter avec les technologies que je ne connais pas grand-chose à leur sujet et ne peut pas trouver de la documentation sur les (par exemple Microsoft ACE 12.0 Provider pour OLEDB).

Cordialement.

(Et ne hésitez même pas à corriger ma pauvre grammaire)

Répondre

2

Je pense que c'est ce que vous avez besoin:

Cells(1,1).CopyFromRecordset rs 

assez simple, vous ne pensez pas. Mais le mettre à la place de cette ligne:

Range(Cells(1,1)................ = rs 

Et rappelez-vous de supprimer un commentaire: 'Problem here :)

Par ailleurs, les données que vous obtenez dans votre feuille ne comprennent pas les colonnes rubrique. Mais j'espère que vous allez faire face à cela séparément.

+0

Merci beaucoup! Cela fonctionne très bien! Je me demandais: comment avez-vous compris cela? Ce serait mieux pour tout le monde si je pouvais juste résoudre mes problèmes moi-même;) –

+2

Quelques années d'expériences :) pour plus d'informations, vous pouvez vérifier [ce lien] (http://msdn.microsoft.com/fr-fr/ library/ff839240% 28v = office.14% 29.aspx) ... –

Questions connexes