Userform1.Show正在寻找不同的工作簿?如何在活动的WorkBook中运行它?

时间:2015-09-18 15:44:11

标签: excel-vba vba excel

我看不到这个宏是如何附加到旧工作表的,它在复制到具有不同名称的新工作簿时不会运行。由于它是在WorkBook中运行的,因此与WorkBook名称拼写或位置没有冲突。每次保存时,WorkBook名称都会附加日期。

这是整个宏:

Sub PricingandUploadCenter()
    UserForm1.Show
End Sub

错误消息:

当我点击宏来运行它时,它说“找不到C:\ Inventory \ Pricing_2015_09_19.xslm”。检查名称的拼写,并验证文件位置是否正确。“

宏激活:

我已自定义功能区(文件|选项|自定义功能区)并添加了一个新组。在“自定义功能区”中,我选择了“从以下选择命令:”下拉框,我选择了“宏”。然后我选择了一个我已在VBA编辑器中创建的宏,它是上面显示的一行。

当我点击新创建的按钮时,它显示了UserForm1并在原始WorkBook中完美运行。

症状:

我将工作簿复制到新文件名。 VBA代码在复制的工作表中存在并可编辑。

现在当我点击按钮(从旧文件复制过来)时,我收到上面“错误信息”中显示的错误信息。

我无法看到此宏如何附加到旧工作表。

我在下面添加了UserForm1代码。

任何建议都将受到赞赏。

谢谢,CraigM

UserForm1代码:

使用UserForm1       .StartUpPosition = 0       .Left = Application.Left +(0.95 * Application.Width) - (0.95 * .Width)       .Top = Application.Top +(0.5 * Application.Height) - (0.5 * .Height)       。节目     

结束
With cmbGetData
    .Font.size = 11
    .Font.Name = "Arial"
   '.Font.Bold = True
End With

With cmbCouponCodes
    .Font.Name = "Arial"
    .Font.size = 11
   '.Font.Bold = True
End With

With cmbCustomerOrders
    .Font.Name = "Arial"
    .Font.size = 11
   '.Font.Bold = True
End With

With cmbDiamond
    .Font.size = 11
    .Font.Name = "Arial"
   '.Font.Bold = True
End With

With cmbCalRegularPrice
    .Font.size = 11
    .Font.Name = "Arial"
   '.Font.Bold = True
End With

With cmbDiscontinuedItems
    .Font.size = 11
    .Font.Name = "Arial"
   '.Font.Bold = True
End With

With cmbMasterOfMasters
    .Font.size = 11
    .Font.Name = "Arial"
   '.Font.Bold = True
End With

With cmbProductTags
    .Font.size = 11
    .Font.Name = "Arial"
   '.Font.Bold = True
End With

With cmbSalePrice
    .Font.size = 11
    .Font.Name = "Arial"
   '.Font.Bold = True
End With

With cbxSelectColumn
    .Font.size = 11
    .Font.Name = "Arial"
   '.Font.Bold = True
    .Height = 20

End With

With cbxSelectWorkSheet
    .Font.size = 11
    .Font.Name = "Arial"
    .Height = 20
   '.Font.Bold = True
   '.TextAlign = 2      'Center
End With

With cmbShippingClasses
    .Font.Name = "Arial"
    .Font.size = 11
   '.Font.Bold = True
End With

With cmbDeleteOldSheets
    .Font.size = 11
    .Font.Name = "Arial"
   '.Font.Bold = True
End With

With cmdExit
    .Font.Name = "Arial"
    .Font.size = 11
   '.Font.Bold = True
End With

With cmdPrepareBF_UpLoad
    .Font.Name = "Arial"
    .Font.size = 11
   '.Font.Bold = True
End With

With cmbSalePrice
    .Font.Name = "Arial"
    .Font.size = 11
   '.Font.Bold = True
End With

With cmbSaveWorkSheet
    .Font.Name = "Arial"
    .Font.size = 11
   '.Font.Bold = True
End With

With cmbSaveWorkbook
    .Font.Name = "Arial"
    .Font.size = 11
   '.Font.Bold = True
End With

With cmbSortWorkSheet
    .Font.Name = "Arial"
    .Font.size = 10
   '.Font.Bold = True
End With

With UserForm1.cmbSortWorkSheets
    .Font.Name = "Arial"
    .Font.size = 11
   '.Font.Bold = True
End With

With cmbCustomerData
    .Font.size = 11
    .Font.Name = "Arial"
   '.Font.Bold = True
End With

With cmbStoreExporterCategories
    .Font.size = 11
    .Font.Name = "Arial"
   '.Font.Bold = True
End With

With cmbStoreExporterProducts
    .Font.size = 11
    .Font.Name = "Arial"
   '.Font.Bold = True
End With

With cmbProductTags
    .Font.size = 11
    .Font.Name = "Arial"
   '.Font.Bold = True
End With

With cmbWebsiteUsers
    .Font.Name = "Arial"
    .Font.size = 11
   '.Font.Bold = True
End With

End Sub

1 个答案:

答案 0 :(得分:0)

对Excel功能区进行自定义时,系统会将更改保存到配置文件中。要查看配置文件的内容,请转到文件 - >选项 - >自定义功能区。在左下角,您会看到“导入/导出”选项。选择导出,并将文件保存在您喜欢的任何位置。然后,您可以使用记事本或任何XML查看器打开该文件。

作为示例,我创建了一个组,然后在未保存的工作簿中创建了一个名为Book1的宏。然后我用一个新名称保存了工作簿,宏没有工作。 我的自定义文件最初:

<mso:cmd app="Excel" dt="1" />
<mso:customUI xmlns:x1="http://schemas.microsoft.com/office/2009/07/customui/macro" xmlns:mso="http://schemas.microsoft.com/office/2009/07/customui">
    <mso:ribbon><mso:qat/>
        <mso:tabs>
            <mso:tab idQ="mso:TabHome">
                <mso:group id="mso_c2.F674B62" label="New Group" autoScale="true">
                    <mso:button idQ="x1:Book1_Test_0_F6780B4" label="Test" imageMso="ListMacros" onAction="Book1!Test" visible="true"/>
                </mso:group>
            </mso:tab>
        </mso:tabs>
    </mso:ribbon>
</mso:customUI> 

请注意标记<mso:button...>中有一个OnAction属性,并注意它是如何从Book1开始的。这就是文件查找位于Book1内部的宏Test的原因。只需删除它,保存自定义文件,然后重新导入它,该按钮就会在活动工作簿中查找Test宏。

请记住,当您重新导入自定义文件时,它将覆盖以前的所有自定义项(尽管它们都在您导出的文件中)。因此,在进行更改之前,请先复制文件,以防万一。“/ p>