工作簿不接受变量

时间:2018-07-09 14:19:46

标签: excel excel-vba vba

我正在尝试在Excel上创建一些宏,我已经尝试了所有方法,但是我认为我缺少了一些东西。我正在尝试创建两个执行以下操作的宏:

宏1 =使用指定的名称创建一个新的工作簿并存储所创建文件的路径

宏2 =用文本文件中的数据填充创建的工作簿。

到目前为止,Macro1运行良好,并且创建了工作簿,它甚至还可以将文件的路径传递到第二个宏中。第二个Macro暂停一半,并显示消息

  

下标超出范围(错误9)

显示在

With Workbooks(nameOfFile)

下面是我的宏

Global nameOfFile As String

Sub createNewSheet()

Dim version As String

version = InputBox("What version is being tested?")
Workbooks.Add
ActiveWorkbook.SaveAs _
Filename:="C:\Users\Uk000827\Documents\RegimeProject\RTD_Regime " & version
nameOfFile = "C:\Users\Uk000827\Documents\RegimeProject\RTD_Regime " & version
End Sub

Sub addValueFromList()

Dim strFilename As String: strFilename = "C:\Users\Uk000827\Documents\RegimeProject\IntelArchive.txt"
Dim strTextLine As String
Dim iFile As Integer: iFile = FreeFile
Dim r As Integer

r = 1
Open strFilename For Input As #iFile

MsgBox nameOfFile 
With Workbooks(nameOfFile)
    Do Until EOF(1)
        Line Input #1, strTextLine
        Cells(r, 1) = strTextLine
        r = r + 1

    Loop
End With
Close #iFile

End Sub

2 个答案:

答案 0 :(得分:1)

尝试进行此调整以创建createNewSheet(createNewBook ...?)

Sub createNewSheet()

    Dim version As String

    version = InputBox("What version is being tested?")

    Workbooks.Add
    with activeworkbook
        .SaveAs Filename:=environ("USERPROFILE") & "\Documents\RegimeProject\RTD_Regime " & version, _
                FileFormat:=xlOpenXMLWorkbook
        nameOfFile = .name
    end with
End Sub

答案 1 :(得分:1)

您正在尝试按其完整路径访问工作簿。您只需通过文件名(路径中的内容)即可。

但是此代码存在一个真正的问题:如果在正在执行的两个宏之间激活了另一个工作簿,则第二个工作簿将仅写入另一个工作簿,而不是名为nameOfFile的工作簿。那是因为您的with声明实际上没有任何作用。

您可能希望使用.Sheets(1).Cells(r, 1) = strTextLine之类的内容来填充单元格。 With声明仅引用以点开头的字段!