2016-09-06 2 views
1

Ich erhalte einen Index außerhalb des Bereichsfehlers, wenn ein anderer Benutzer mein Add-In ausführt, aber keine Probleme bei der Ausführung desselben Codes selbst habe. Dies geschieht beim Festlegen eines Arbeitsmappenwerts. Der Dateiname wird generiert, indem das aktuelle Datum abgerufen und als Gendate gespeichert wird. Von diesem wird der Dateiname basierend auf dem Dateipfad, den der Benutzer erstellt hat, erstellt und gespeichert. In diesem Beispiel ist der Wert von gv.Range ("b2"). Text c: \ Benutzer \ Benutzername \ Desktop \ ReportGeneration. fp ist daher C: \ Benutzer \ dmulhausen \ Desktop \ ReportGeneration \ TSReports9_6_201615h5m32s.xlsx Dies erzeugt keinen Fehler für mich, aber es erzeugt einen Fehler für einen anderen Benutzer des Skripts.Index außerhalb des Bereichsfehler 9 vba

Dim ai As Workbook 'add in data ---Initialized in Report Setup 
Dim dwb As Workbook 'destination workbook ---Initialized in Report Setup 
Dim ss As Worksheet 'source sheet 
Dim ds As Worksheet 'destination sheet or writing sheet 
Dim rv As Worksheet 'reporting variables sheet ---Initialized in Report Setup 
Dim pv As Worksheet 'ts variables sheet ---Initialized in Report Setup 
Dim gv As Worksheet 'global ai variables ---Initialized in Report Setup 
Dim tempstr As String 
Dim fp As String 'file path ---Initialized in Report Setup 
Dim gendate As Date 
Dim reportscreated As Integer 
Dim initialized As Boolean 
Dim sheetnames(1 To 12) As String 

Sub reportsetup() 
    Set ai = Workbooks("TSReports add in.xlam") 
    Set rv = ai.Worksheets("ReportVars") 
    Set pv = ai.Worksheets("TS1_2Vars") 
    Set gv = ai.Worksheets("globalVars") 
    If (IsEmpty(gv.Range("b2").Value)) Then 
     MsgBox ("Please select a designated folder for reports") 
     With Application.FileDialog(msoFileDialogFolderPicker) 
      .AllowMultiSelect = False 
      .Show 
      If .SelectedItems.Count > 0 Then 
       gv.Range("b2").Value = .SelectedItems(1) 
      End If 
      ai.Save 
     End With 

    End If 
    initialized = True 
    gendate = Now() 
    tempstr = "TSReports" & Month(gendate) & "_" & Day(gendate) & "_" & Year(gendate) & Hour(gendate) & "h" & Minute(gendate) & "m" & Second(gendate) & "s" 
    fp = gv.Range("b2").Text & "\" & tempstr & ".xlsx" 
    Workbooks.Add 
    Application.DisplayAlerts = False 
    Application.AlertBeforeOverwriting = False 
    Application.DisplayAlerts = False 
    ActiveWorkbook.SaveAs Filename:=fp 
    Set dwb = Workbooks(tempstr) '*******Error occurs here******* 

Antwort

0

See: Windows().Activate works on every computer except one

Dies sollte das Problem beheben.

tempstr = "TSReports" & Month(gendate) & "_" & Day(gendate) & "_" & _ 
      Year(gendate) & Hour(gendate) & "h" & Minute(gendate) & "m" & _ 
      Second(gendate) & "s" & ".xlsx" 

fp = gv.Range("b2").Text & "\" & tempstr 

Workbooks.Add 
Application.DisplayAlerts = False 
Application.AlertBeforeOverwriting = False 
Application.DisplayAlerts = False 
ActiveWorkbook.SaveAs Filename:=fp 
Set dwb = Workbooks(tempstr) 

aber dies wäre robuster:

Set dwb = Workbooks.Add 
Application.DisplayAlerts = False 
Application.AlertBeforeOverwriting = False 
Application.DisplayAlerts = False 
dwb.SaveAs Filename:=fp 
Verwandte Themen