L'importation de plusieurs pages à partir d'un fichier excel en plusieurs tables par nom de la feuille
Salut à tous et merci pour votre aide. Je suis en train de constituer un semblant d'Accès simple solution de gestion de données pour une utilisation dans un bureau ici et j'ai de la difficulté que mon expérience dans le vba est minime, au mieux.
Ce que j'ai ici deux liés, mais l'Accès déconnecté 2007 applications et j'ai besoin d'un système pour l'utilisateur d'importer et d'exporter facilement cette information. J'ai un script qui travaille maintenant pour exporter toutes les tables de l'application en un seul fichier excel avec chaque tableau sur une feuille de calcul différente, le problème est que lorsque je vais à l'importation il semble que pour trouver la première feuille pour l'importation.
Ce que je suis l'espoir de trouver une méthode pour effectuer une itération sur chaque feuille de calcul, saisir le nom de la feuille, puis de fusionner les données dans la table en se basant sur le nom de la feuille.
À préciser:
- Plusieurs copies d'Une Application sont envoyés à différents ministères
- Application: les Utilisateurs d'entrer des informations dans les tables
- Application: les Utilisateurs appuyez sur commande pour exécuter l'exportation macro
- Fichier Excel est créé avec chaque tableau sur une feuille avec les noms correspondants (par exemple, tblCourse, tblStudent, tblFaculty, etc.)
- Les utilisateurs de l'Application B reçoivent feuille de calcul excel
- L'application B: les Utilisateurs appuyez sur la commande pour exécuter le script d'import (C'est la solution, je suis à la recherche d')
- Utilisateur est invité à indiquer l'emplacement du fichier
- Importer le script ouvre un classeur excel
- Script itère sur chaque feuille, se lit le nom, et importe les données de la table de correspondance nom
Merci d'avance pour toute aide que vous pouvez fournir, beaucoup apprécié.
Modifier
De travail script (Merci grandement pour grahamj42 de l'aide ici):
Private Sub Command101_Click()
'Dim excelapp As New Excel.Application
Dim excelApp As Object
Set excelApp = CreateObject("Excel.Application")
'Dim excelbook As New Excel.Workbook
Dim excelbook As Object
Set excelbook = excelApp.Workbooks.Add
'Dim excelsheet As New Excel.Worksheet
'Dim excelsheet As Object
'Set excelsheet = excelbook.Sheets
Dim intNoOfSheets As Integer, intCounter As Integer
Dim strFilePath As String, strLastDataColumn As String
Dim strLastDataRow As String, strLastDataCell As String
strFilePath = "C:\Users\UserName\Documents\Export\DatabaseExport03-28-2013.xlsx"
Set excelbook = excelApp.Workbooks.Open(strFilePath)
intNoOfSheets = excelbook.worksheets.Count
Dim CurrSheetName As String
For intCounter = 1 To intNoOfSheets
excelbook.worksheets(intCounter).Activate
DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel9, ActiveSheet.Name, _
strFilePath, True, _
excelbook.Worksheets(intCounter).Name & "!" & _
Replace(excelbook.Worksheets(intCounter).UsedRange.Address, "$", "")
Next
excelbook.Close
excelApp.Quit
Set excelApp = Nothing
End Sub
Noter que dans le DoCmd.Transférerfeuillecalcul commande il y a un Contientnomschamps propriété est définie à 'True' ici, parce que ma des feuilles de calcul à l'exportation avec les noms de champs comme en-têtes de colonne.
- Vous pouvez utiliser SQL, ou Transférerfeuillecalcul, mais je suis curieux de savoir, si toutes les interactions sont à l'importation, pourquoi ne pas simplement envoyer un Accès base de données avec les tables?
- Le problème est que l'Application A sera envoyé en plusieurs formes à différents utilisateurs dans les différents départements. Je veux éviter d'avoir leur envoyer de l'ensemble de la base de données Access fichiers quand ils vont à soumettre leurs informations, si une feuille de calcul excel est un outil facile format de fichier commun de transmettre et de sauvegarder.
Vous devez vous connecter pour publier un commentaire.
Votre utilisation de
Selection
sans rien sélectionner fera référence à la cellule sélectionnée dans la feuille de calcul lorsqu'il a été enregistré. Alors que je ne vois pas, dans votre cas, pourquoi cela devrait être en dehors de la table, vous pourriez faire mieux comme ça, sans rien sélectionner en utilisantWorksheet.UsedRange
:J'ai fait un peu de la combinaison de deux des morceaux de code, comme je n'ai pas coder en dur l'emplacement ou le nom de fichier.