还有另一个问题,希望有人可以帮助我。
对于过去曾经为我提供帮助的人,我非常感谢这个社区,很高兴能与他们分开。
以下是一些背景信息。
我已经从主列表(theFILE 1.1.xlsm)中创建了约3200个excel工作簿,每个工作簿都是从主列表中的一行编译而成的。
现在我已经可以使用此代码编辑工作表和单元格了;
Sub Macro2()
Application.ScreenUpdating = False
Dim sFile As String
Dim wb As Workbook
Dim FileName1 As String
Dim FileName2 As String
Dim wksSource As Worksheet
Const scWkbSourceName As String = "theFILE 1.1.xlsm"
Set wkbSource = Workbooks(scWkbSourceName)
Set wksSource = wkbSource.Sheets("Sheet1") ' Replace Sheet1 with the sheet name
Const wsOriginalBook As String = "theFILE 1.1.xlsm"
Const sPath As String = "E:\theFILES\"
SourceRow = 5
Do While Cells(SourceRow, "D").Value <> ""
FileName1 = wksSource.Range("A" & SourceRow).Value
FileName2 = wksSource.Range("K" & SourceRow).Value
sFile = sPath & FileName1 & "\" & FileName2 & ".xlsm"
'Open Source Row's File
Set wb = Workbooks.Open(sFile)
'(INSERT CODE FOR SPECIFIED JOB)
'CLOSE WORKBOOK W/O BEFORE SAVE
Application.EnableEvents = False
ActiveWorkbook.Save
ActiveWorkbook.Close
Application.EnableEvents = True
SourceRow = SourceRow + 1 ' Move down 1 row for source sheet
Loop
End Sub
请忍受我缺乏术语。
如果可能的话,我希望能够使用此代码打开每个工作簿并编辑“ Microsoft Excel对象”-“ ThisWorkbook”中的行。该模块(如果可以调用的话)包含一个BeforeSave函数,该函数每次用户保存时都会在隐藏的电子表格中记录一些信息。
这是当前的“ BeforeSave”宏
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Dim ws As Worksheet
Set ws = Sheets("EDITS")
Dim tbl As ListObject
Set tbl = ws.ListObjects("Table1")
Dim newrow As ListRow
Set newrow = tbl.ListRows.Add
SavePrompt.Show
With newrow
.Range(1) = Now
.Range(2) = SavePrompt.TextBox1.Text
End With
Unload SavePrompt
End Sub
我需要添加.Range(3)=计算机名和.Range(4)=用户名。 我需要每个工作簿都可以独立工作,因为主机可能会偶尔更改,而其他计算机将无法重新链接或编辑VBA。
首先可以编辑“ Microsoft Excel对象-ThisWorkbook”
如果是这样怎么办?我试过了 ThisWorkbook.VBProject.VBComponents(“ ThisWorkbook”)。CodeModule.insertLines 13,“ Test”
...允许Excel“信任对VBA项目对象模型的访问”后,我收到一条通知,指出“此时无法进入中断模式”,我选择了“继续”,而我的计算机没有就像代码一样,它确实像平常一样打开和关闭每个工作簿。最后,将“测试”添加到母版的“ ThisWorkbook”中。主工作簿(theFILE 1.1.xlsm)中没有宏,因此它只是从其外观添加到了下一个可用行。
然后我将最后一个代码更改为;
ActiveWorkbook.VBProject.VBComponents("ThisWorkbook").CodeModule.insertLines 13, "Test"
这似乎解决了错误,但是当计算机运行代码时,它开始挂断,并且Excel开始开始显示为“未响应。”
所以如果可能的话... 右键单击一行时,是否可以像在excel中那样添加/插入行并将前几行向下移动1?
如果Excel不允许编辑“ ThisWorkbook”中的行,那么我该如何彻底检查对象? (删除并导入更新的对象)