如何使用另一个宏编辑“此工作簿”宏

时间:2018-09-13 13:34:44

标签: excel vba excel-vba module

还有另一个问题,希望有人可以帮助我。

对于过去曾经为我提供帮助的人,我非常感谢这个社区,很高兴能与他们分开。

以下是一些背景信息。

我已经从主列表(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”中的行,那么我该如何彻底检查对象? (删除并导入更新的对象)

0 个答案:

没有答案