使用我的自定义function区上的button在不同的Excel文件上运行相同的VBAmacros

我创build了一个VBAmacros,需要在多个不同的文件上执行相同的任务。 理想情况下,我想在我的function区上创build一个button并单击button执行任务。 如何使macros可用于多个文件并使用新打开的工作表中的数据执行任务? 我已经将该macros添加到PERSONALS.xlsb文件,并可以看到每次打开Excel时可用的macros,但macros只执行PERSONALS.xlsb文件上的任务,而不是新打开的文件。

Sub Export_Files() Dim sExportFolder, sFN Dim rDiscription As Range Dim rHTMLcode As Range Dim oSh As Worksheet Dim oFS As Object Dim oTxt As Object 'sExportFolder = path to the folder you want to export to 'oSh = The sheet where your data is stored sExportFolder = "C:\Users\bhinton\Desktop\ActionTags" Set oSh = Sheet1 Set oFS = CreateObject("Scripting.Filesystemobject") For Each rDiscription In oSh.UsedRange.Columns("C").Cells Set rHTMLcode = rDiscription.Offset(, 6) 'Add .txt to the article name as a file name sFN = rDiscription.Value & ".html" Set oTxt = oFS.OpenTextFile(sExportFolder & "\" & sFN, 2, True) oTxt.Write rHTMLcode.Value oTxt.Close Next End Sub 

代替

 Set oSh = Sheet1 

你需要使用

 Set oSh = ActiveSheet 

使用ActiveSheet意味着代码将使用新打开的工作簿和我认为是你想要的活动工作表。

或者,如果您始终希望当前活动工作簿的Sheet1,则可以这样做:

 Set oSh = ActiveWorkbook.Worksheets("Sheet1") 

这里有一种方法来提示用户select文件,然后遍历它们:

 Option Explicit Sub OpenFilesAndIterate() Dim DataDialog As FileDialog Dim NumFiles As Long, Counter As Long Dim MyWorkbook As Workbook Dim MySheet As Worksheet 'prompt the user to select data files Set DataDialog = Application.FileDialog(msoFileDialogOpen) With DataDialog .AllowMultiSelect = True .Title = "Please pick the files you'd like to operate on:" .ButtonName = "" .Filters.Clear .Filters.Add ".xlsx files", "*.xlsx" .Show End With 'assign the number of files selected for an easy loop boundary NumFiles = DataDialog.SelectedItems.Count 'check to see if the user clicked cancel If NumFiles = 0 Then Exit Sub 'Start looping through and do work For Counter = 1 To NumFiles Set MyWorkbook = Workbooks.Open(DataDialog.SelectedItems(Counter)) Set MySheet = MyWorkbook.Worksheets("Sheet1") ' 'insert your code to operate on worksheet here ' MyWorkbook.Save MyWorkbook.Close SaveChanges:=False Next Counter End Sub 

在Excel的选项中,单击“自定义function区”。 在可以添加的东西列表的上方,应该有一个下拉框,您可以在其中selectmacros。 该列表应该填充macros以添加到您的function区!

自定义功能区