2017-07-26 6 views
1

Quelqu'un a-t-il rencontré ce problème?VBA: Déclenchement et interruption du mode conception

Le programme que je suis en cours d'exécution est quelque chose comme ceci:

  1. Trouver les fichiers dans le dossier
  2. Ouvrir le document du dossier
  3. table de lecture dans un tableau
  4. boucle à 2 ou 1
  5. Fermer document, set = nothing
  6. Ecriture d'un tableau dans un tableur.

Au cours de ma boucle, les documents que j'ouvre finissent par déclencher le mode de conception pour une raison quelconque. Cela provoque une rupture dans mon programme qui quitte le programme, ce qui me fait perdre la progression de ma macro et recommencer.

Y a-t-il un moyen pour moi d'éviter que cela n'arrive, ou de comprendre pourquoi? Je ne crois pas que les documents eux-mêmes sont en mode conception quand je les ouvre, mais que la fonctionnalité est déclenchée pour une raison quelconque.

est ici le code quand j'ouvre les documents:

For f = LBound(strPaths) To UBound(strPaths) 
    Set Files = New Collection 
    dirpath = strPaths(f) 
    strFile = Dir(dirpath & "*.xls*")  ' Record file into string. 
    Do While strFile <> "" 
     Files.Add strFile 
     strFile = Dir 
    Loop 
    numCSV = numCSV + Files.count 
    For Each strFile In Files 
     dirpath = strPaths(f) 
     wbkPath = dirpath & strFile 
     If InStr(1, wbkPath, "Bulk") > 0 Then GoTo NextFile 
     nrow = OpenDoc(wbkPath, wbkCSV) 
     If Not nrow <= 1 Then 
      scopeArray(k) = PullScope(wbkCSV, wshPalette, strFile, roffset, nrow, x) 
      roffset = roffset + nrow 
      k = 1 + k 
      ReDim Preserve scopeArray(k) 
     End IfNextFile: 
    Next strFile 
Next f 

Public Function OpenDoc(wbkPath, wbkCSV As Workbook) As Long 
    Dim r As Integer 

' With workbook still open, process. 
    Application.AskToUpdateLinks = False 
    Application.DisplayAlerts = False 
    Set wbkCSV = Workbooks.Open(wbkPath) 
    Application.DisplayAlerts = True 
    Application.AskToUpdateLinks = True 
    ' On Error GoTo NextDoc 
    Set wshTemp = wbkCSV.Worksheets(1) 

    r = WorksheetFunction.CountA(wshTemp.Columns(6)) - 1 
If r <= 1 Then 
    wbkCSV.Close 
    Set wbkCSV = Nothing 
End If 
OpenDoc = r 
End Function 

Un grand merci à toutes les réponses!

+0

Les valeurs de 'strPaths()' se terminent par le caractère barre oblique inverse? Vous semblez avoir laissé cette partie hors de votre poste. – braX

+0

En effet, ils le font. Cela aurait-il un impact? La façon dont ils sont formatés serait "C: \ Folder \ Subfolder" –

Répondre

0

Donc j'ai pensé que je fournirais une mise à jour pour cela.

Je n'ai pas encore déterminé exactement ce qui était à l'origine de cela, mais je pense que cela aurait pu être le simple fait que j'utilisais mon ordinateur pendant l'exécution du code.

ajoutant la ligne suivante arrêté la récurrence de cette erreur:

Application.Interactive = False 
' Code 
Application.Interactive = True 

Je soupçonne que ma dépendance à rafraîchir les navigateurs web avec F5 est le coupable probable.