我正在尝试在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
答案 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
声明仅引用以点开头的字段!