2013-09-16 2 views
2

Stack-folks,Indice hors limites lors de la définition d'un classeur déjà ouvert, VBA

J'ai un problème troublant. J'écris une macro qui permet à un utilisateur de sélectionner et de travailler avec un classeur déjà ouvert. Après avoir obtenu le nom de l'utilisateur à l'aide d'un formulaire utilisateur, lorsque j'essaie de définir le classeur ou d'interagir avec celui-ci, j'obtiens un indice hors erreur. J'ai confirmé que le classeur est ouvert et que l'objet ExcelAp se connecte à la bonne instance d'Excel. Voici le code correspondant:

Option Explicit 

.... 

Public Sub TerminalOpen() 
Dim WorkbookOpen  As VbMsgBoxResult 
Dim ExcelAp    As Excel.Application 
Dim FedExWkbk   As Excel.Workbook 

.... 

Else 
    Set ExcelAp = Excel.Application 
    WorkbookSelection.Show 
    WkbkFedExTracking = Trim(VBA.Left(WkbkFedExTracking, InStr(1, WkbkFedExTracking, ".", vbTextCompare) - 1)) 
    Set FedExWkbk = ExcelAp.Workbooks(WkbkFedExTracking) <<<<< This is where the error occurs 
    FedExWkbk.Activate 
End If 

Pour mémoire, j'ai aussi essayé liaison tardive du ExcelAp sans joie. Cette approche semble avoir fonctionné dans d'autres cas, mais n'est pas tout à fait si amicale dans celui-ci. Comme toujours, si vous pouvez donner des conseils, je suis tout ouïe!

EDIT: Je voulais juste ajouter que le nom du classeur est stocké dans la chaîne WkbkFedExTracking. Il est nettoyé uniquement au nom du classeur sans la partie .xlsx. Je voulais que cela soit clair. En outre, sur le débogage, j'ai vérifié cela par rapport au nom du classeur ouvert, et c'est correct.

+0

Vérifiez à nouveau si WkbkFedExTrack le nom de l'un des classeurs ouverts. – Bathsheba

+0

Il est, désolé de ne pas être clair à ce sujet dès le départ. Je l'ai ajouté dans les modifications il y a un instant. Je suis certain à 100% que c'est le nom du classeur approprié. – MattB

+0

Quel est le nom réel du classeur? J'ai remarqué que vous utilisez 'InStr' qui trouvera le premier. au lieu de 'InStrRev' qui trouvera le dernier. Donc, si le nom du classeur est 'This.is.a.workbook.xls' alors votre code aurait' This' au lieu de 'This.is.a.workbook' – tigeravatar

Répondre

0

Ce problème a été résolu. Il s'agissait d'une combinaison d'une extension .xlsx supprimée sur le nom d'index du classeur et d'une instance erronnée d'Excel en raison d'une application mal placée.Visible = ligne vraie. Voir les commentaires sur le post original pour plus de détails.

Questions connexes