web-dev-qa-db-fra.com

Importation de données de feuille de calcul Excel dans une autre feuille de calcul Excel contenant VBA

Nous devons écrire une feuille de calcul Excel contenant du code VBA; le code lit et effectue des opérations sur les données de la première feuille de calcul.

L'utilisateur recevra des feuilles de calcul contenant des données mais qui ne contiennent pas le code VBA. Nous devons être en mesure d'importer automatiquement les données des feuilles de calcul contenant les données dans la feuille de calcul contenant le code VBA. Les feuilles de calcul contenant les données ont le même format de colonne et les mêmes types de données que la feuille de calcul de la feuille de calcul contenant les données.

Idéalement, vous ouvririez la feuille de calcul contenant le code VBA, vous vous présenteriez une interface utilisateur permettant à l'utilisateur de naviguer vers la feuille de calcul contenant les données, cliquez sur OK et les données seront importées.

Comment vous y prendriez-vous? Cela doit être fait en utilisant VBA dans des feuilles de calcul Excel.

Merci beaucoup.

13
Anthony

Cela devrait vous aider à démarrer: utiliser VBA dans votre propre classeur Excel, demander à l'utilisateur de saisir le nom de fichier de son fichier de données, puis copier simplement cette plage fixe dans votre classeur cible (qui pourrait être soit le même classeur que votre macro activée) ou un troisième classeur). Voici un rapide exemple vba de la façon dont cela fonctionne:

' Get customer workbook...
Dim customerBook As Workbook
Dim filter As String
Dim caption As String
Dim customerFilename As String
Dim customerWorkbook As Workbook
Dim targetWorkbook As Workbook

' make weak assumption that active workbook is the target
Set targetWorkbook = Application.ActiveWorkbook

' get the customer workbook
filter = "Text files (*.xlsx),*.xlsx"
caption = "Please Select an input file "
customerFilename = Application.GetOpenFilename(filter, , caption)

Set customerWorkbook = Application.Workbooks.Open(customerFilename)

' assume range is A1 - C10 in sheet1
' copy data from customer to target workbook
Dim targetSheet As Worksheet
Set targetSheet = targetWorkbook.Worksheets(1)
Dim sourceSheet As Worksheet
Set sourceSheet = customerWorkbook.Worksheets(1)

targetSheet.Range("A1", "C10").Value = sourceSheet.Range("A1", "C10").Value

' Close customer workbook
customerWorkbook.Close
26
jdh