2014-10-17 193 views
0

我有下面的代码,它试图打开一个文件名,如果表是空的,每天都会改变。文件名始终被命名为这样:VBA EXCEL:修复“运行时错误'9'”:下标超出范围

  • “K:\共享\民\ TEMP \ Available_list_” &年(NOW())&月(NOW())&日(NOW())&“ .TXT”

这背后的原因是自动文件激活,而不是复制,粘贴,每次重命名文件。我更新代码以包含上述路径时收到此错误。 有人可以指出我的错误在哪里吗?您可能会发现下面的代码:

Private Sub UserForm_Initialize() 
Application.ScreenUpdating = False 
If IsEmpty(A_Regular.Range("A2")) Then 

Dim TxtPath, TxtName As String 

TxtPath = "K:\Shared\Num\Temp\Available_list_" & Year(Now()) & Month(Now()) & Day(Now()) & ".txt" 
TxtName = Year(Now()) & Month(Now()) & Day(Now()) & ".txt" 

Workbooks.OpenText Filename:=TxtPath, Origin:=437, StartRow:=1, _ 
DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, _ 
Tab:=True, Semicolon:=False, Comma:=False, Space:=False, _ 
Other:=True, OtherChar:=",", FieldInfo:=Array(Array(1, 1), _ 
Array(2, 1), Array(3, 5), Array(4, 1), Array(5, 1)), TrailingMinusNumbers:=True 
'-------------------------------------------------------------------------' 
'        Setup Sheet        ' 
'-------------------------------------------------------------------------' 
    With Workbooks(TxtName) 
'-------------------------------------------------------------------------' 
    Dim TotalFree, TotalFields As Double 
     TotalFree = Application.WorksheetFunction.CountIf(Range("D:D"), "FREE") 
     Range("A1:E" & TotalFree).Copy 
    End With 

    Workbooks("Matcher.xlsm").Activate 
    Activation.Visible = True 
    Activation.Activate 

     With Activation 
      Range("A:E").PasteSpecial 
      Range("1:1").Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove 
      Range("A1") = "GSM" 
      Range("B1") = "Type" 
      Range("C1") = "Date" 
      Range("D1") = "Status" 
      Range("E1") = "Number" 
      Range("F1") = "Pattern" 
      Call Encryption 
     End With 
    Activation.Cells.Clear 
    Windows(TxtName).Close 
    Control.Activate 
    Activation.Visible = False 
End If 

    Application.WindowState = xlMinimized 
    NumberManagement.Show 0 
End Sub 
+1

使用F8或F8 +班次调试代码,并告诉我们例外情况。 – 2014-10-17 11:57:59

回答

4

你打开一个名为"Available_list_" & Year(Now()) & Month(Now()) & Day(Now()) & ".txt"(文件名没有路径)的文件,但你尝试通过Year(Now()) & Month(Now()) & Day(Now()) & ".txt"没有Available_list引用表。当然这个名字的工作表不存在。

+0

我一直在寻找过去30分钟的错误,无法找到它。这是一个蹩脚的错误。谢谢。 – 2014-10-17 12:07:24

+1

不客气。您应该先创建TxtName,然后将其附加到TxtPath。这将避免冗余代码和错误的来源。祝你好运。 – Fratyx 2014-10-17 12:10:22

相关问题