Je veux copier la dernière cellule d'une colonne spécifique d'une feuille à une feuille de maître-hôtel, mais cela me donne l'erreur de l'objet non défini. Je ne sais pas où je me suis trompé?
3 Réponses :
Le problème suivant génère une erreur
1004: une application définie ou un objet défini forte>, mais je pose cela comme un rappel de garde d'avertissement sur des références parentales explicites appropriées lorsqu'il s'agit d'un mélange de classeurs XLS plus anciens et les nouveaux classeurs XLSX. SUB>
Vous voudrez peut-être exécuter ce code pour le voir aider à identifier le numéro de ligne de votre erreur d'origine. SUB> P>Votre classeur externe est un XLS avec 65536 rangées. Si ce workbook est un document de classeur XLSX ou similaire, il dispose de 148576 rangées. Les lignes.Count n'a pas de feuille de calculée explicite et tente d'essayer de rechercher de la ligne 1048576th sur une feuille de calcul contenant 65536 lignes. P>
xxx pré> Je comprends que l'ouverture de l'externe Le cahier de travail doit en faire le transport actif et les lignes. Enfoncer par défaut sur les lignes maximales sur l'une des feuilles de calcul de Tworkbook d'ActiveworkBook, mais laissant les lignes. Le parent de l'encombrement implicite est une recette de problèmes. P> blockQquote>
Salut, merci de m'aider. Lorsque j'ai essayé le code que vous avez fourni ci-dessus, cela me donne la même erreur et les points de débogage à la ligne de .worksheets ("Financial_Report"). J'ajouterai tout le code dans le commentaire ci-dessous.
Mettez simplement, que XLS que vous avez ouvert n'a pas une feuille de calcul appelée «financier_report». Si cela ressemble à cela, vérifiez que les espaces de début / de fin ou même effectuent une comparaison de caractère par caractère contre ce que vous avez saisi en code.
J'ai fait un chèque dessus et je me suis assuré que cela correspondait. Cependant, cela me donne toujours la même erreur. J'ai posté mon article entier, pourriez-vous suggérer comment je peux le réparer?
Double-cliquez sur l'onglet Nom de la feuille de travail et appuyez sur CTRL + C. Sur une nouvelle feuille de calcul XLSX vierge, collez-la dans A1. Je suis arrivé à votre code et copiez Financial_Report i> puis la collez-la dans B1. Dans A2 Mettez = Unicode (moyenne (1 $, rangée (1: 1), 1)) code> puis remplissez droit à B2 et faites glisser les deux vers le bas. Y a-t-il une divergence dans les chiffres?
En fait, cela dit 102. Est-ce que cela signifie qu'il y a une différence? Je copie également le nom de cet onglet et collez-le dans le code, mais cela donne la même erreur
Faites glisser A2: B2 vers le bas pendant au moins 1 rangée pour chaque personnage de 'Financial_Report'. Vous obtiendrez des erreurs dans les deux colonnes lorsque le chèque est terminé. 102 n'est que le f i>.
Il est dit 105. Cependant, je pense que l'erreur n'est pas le nom car j'ai écrit un autre code en référence au nom également, et il semble que ce nom n'était pas un problème pour ce code. Donc je ne crois pas que ce serait le cas ici
Sub Macro1_Query()
Dim wb As Workbook, ws As Worksheet
Set fso = CreateObject("Scripting.FileSystemObject")
Set fldr = fso.GetFolder("C:
y = ThisWorkbook.Sheets("sheet1").Cells(Rows.Count, 1).End(xlUp).Row + 1
For Each wbfile In fldr.Files
If fso.GetExtensionName(wbfile.Name) = "xls" Then
With Workbooks.Open(wbfile.Path)
With .Worksheets("financial_report")
wsLR = .Cells(.Rows.Count, 1).End(xlUp).Row
ThisWorkbook.Sheets("sheet1").Cells(y, 2) = .Cells(wsLR, 7).Value
End With
.Close savechanges:=False
End With
wb.Close
End if
Next wbfile
End sub
Vérifiez les constantes et vous êtes prêt à partir. Il produira une erreur si un classeur n'a pas obtenu la feuille de calcul spécifiée ("financière_report"). P>
Sub CopyCellFromWorkbooksEDIT()
' Source Folder Path
Const cStrPath As String = _
"C:\"
' Source Worksheet Name/Index
Const cStrSource As Variant = "financial_report"
Const cVntSource As Variant = "Y" ' Source Column Letter/Number
' Target Worksheet Name/Index
Const cStrTarget As Variant = "Sheet1"
Const cVntTarget As Variant = 1 ' Target Column Letter/Number
' FSO Objects
Dim objFSO As Object, objFolder As Object, objFile As Object
Dim objTarget As Worksheet ' Target Worksheet (ThisWorkbook)
Dim lngTarget As Long ' Target Column
Dim lngSource As Long ' Source Column
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFolder = objFSO.GetFolder(cStrPath)
Set objTarget = ThisWorkbook.Sheets(cStrTarget)
For Each objFile In objFolder.Files
If objFSO.GetExtensionName(objFile.Name) = "xls" Then
With Workbooks.Open(objFile.Path).Worksheets(cStrSource)
With objTarget
lngTarget = _
.Cells(.Rows.Count, cVntTarget).End(xlUp).Row + 1
End With
lngSource = .Cells(.Rows.Count, cVntSource).End(xlUp).Row
objTarget.Cells(lngTarget, cVntTarget) _
= .Cells(2, 7).Value ' (G2)
objTarget.Cells(lngTarget, cVntTarget + 1) _
= .Cells(lngSource, cVntSource).Value
.Parent.Close False
End With
End If
Next
End Sub
'*******************************************************************************
Bonjour, vbasic2008, merci beaucoup pour votre aide. Il fait la fonction de copie. Cependant, je souhaite copier la valeur de la cellule spécifique "G2" et la dernière cellule de colonne Y dans la même ligne de la feuille maître. Existe-t-il un moyen d'éditer votre code afin qu'il puisse le faire?
DAT NGUYEN: Dans quelles colonnes sur la fiche de maître-hôtel?
Donc, G2 ira à A, et la dernière cellule de colonne Y à B, et elle répète avec d'autres classeurs dans le même dossier
Il n'y a pas d'erreur pour le code, mais maintenant cela ne renvoie pas les valeurs. Lorsque j'ouvre la feuille principale, c'est une feuille vierge.
@DAT NGUYEN: Le code doit être dans le classeur principal, et il écrit sur "Stade1" ou tout ce que vous avez pour CSTRTARGET à partir de A2 s'il s'agit d'une feuille vide. Est-ce même d'ouvrir des fichiers (avez-vous changé le chemin du dossier (CSTRPATH))?
Désolé, c'était mon mauvais avant de ne pas entrer dans le chemin. Après avoir entré sur le chemin et l'avez dirigé dans le module de la feuille maître, cela indique l'erreur de la ligne "avec workbooks.open (objfile.path) .worksheets (CStrsource)" avec l'erreur disant: "Run- Erreur de temps 9 Indice hors de portée "
@DAT NGUYEN: Vous n'avez probablement pas de feuille avec le nom CStrsource dans le classeur ouvert. C'est la seule phrase avant le code
Je crois que ça fait. Je pourrais prendre une capture d'écran de celui-ci. Le classeur que je travaille actuellement a deux feuilles qui sont "financier_report" et "abonnement_financial_report". Je posterai la photo ci-dessous
@DAT NGUYEN: Je n'ai pas besoin d'une photo. Le code ouvre chaque fichier dans le dossier. Au moins l'un d'entre eux n'a pas obtenu la feuille mentionnée.
Donc, dans le dossier, je place les rapports avec la feuille maître. Signalez les classeurs, ils ont tous le "financier_report". La feuille maître ne le fait pas. Lorsque j'ouvre chaque rapport, il demande à activer la modification d'abord avant que je puisse le modifier. Cela provoque donc l'erreur du code?
@DAT NGUYEN: Probablement, cela fonctionne bien sur mon ordinateur.
C'est l'erreur. Je viens de le gérer à nouveau avec la feuille principale en dehors du dossier et ça marche. Merci beaucoup pour votre aide, vbasic2008. J'apprécie vraiment votre effort
Quelle ligne génère l'erreur et quelle est la valeur de
y code> lorsque l'erreur se produit? Survolez-y pour voir sa valeur dans une bulle de pointe.Le classeur est-il déjà ouvert lorsque ce code est exécuté?