电子表格宏

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了电子表格宏相关的知识,希望对你有一定的参考价值。

参考技术A 不用宏也可以,用超链接就行了。
做一个目录表,目录表里的单元格输入对应的工作薄里的工作表名称,然后在目录表里每个工作表名称都插入超链接,链接到对应的工作表(具体是:右击该单元格-超链接-在“链接到”里“选文本档中的位置”-右边的“单元格引用”和“或在这编文档中选择位置”是让你选择要链接到的工作表地址)。所有目录到对应工作表的链接就是这样。
反之,在所有的工作表的某一空白单元格写“返回目录”,然后再用上述操作链接到目录就行了。
参考技术B 1、excel宏在哪里呢,打开excel表格,点击左上角的office图标,然后选择excel选项。
  2、在excel选项的常用中勾选在功能区显示“开发工具”选项卡,然后点击确定。
  3、此时在excel开发工具中就可以点击录制excel宏。
  4、设置excel宏的名称,快捷键,同时设置保存在何处,然后点击确定。
  5、在excel宏中有个是否使用相对引用需要注意一下,然后对excel表做一些更改,小编就改一下字体颜色。
  6、excel宏录制好之后便可以点击停止录制了。
  7、将光标定位在其它单元格,然后按自己设置的excel宏快捷键就可以自动修改字体颜色了。

使用 VBA 创建的 Excel 工作簿不包含宏

【中文标题】使用 VBA 创建的 Excel 工作簿不包含宏【英文标题】:Excel workbook created using VBA does not contain macros 【发布时间】:2015-11-30 21:42:59 【问题描述】:

您好,我最近在 Excel 中创建了一个用于通过电子邮件发送电子表格的 VBA 宏。我想通过电子邮件发送的电子表格是使用另一个 VBA 程序创建的。该程序将零件号作为输入,然后打开 Excel 并从 SQL Server 数据库中获取相应的数据。

我的问题是在检索信息过程中弹出的Excel不包含我创建的宏。如果我复制数据并打开一个新的空白 Excel 工作簿,我的宏就在那里。如果我保存电子表格然后重新打开它,我的宏也会出现。

VBA 创建新 Excel 工作簿的方式是否会导致我的宏不出现?有没有什么办法解决这一问题?最后,我想在 VBA 程序完成创建电子表格的那一刻通过电子邮件发送它。

这是关于我如何创建 Excel 工作簿的代码 sn-p。

xlApp = New Excel.Application ' Create new Workbook
xlApp.Visible = True
xlWorkbook = xlApp.Workbooks.Add
xlWorksheet = xlWorkbook.Worksheets(1)

Array.Sort(snarry)
On Error Resume Next

For i = 0 To inxms - 1 ' Select Column Widths
    xlWorksheet.Range(xlWorksheet.Cells(1, i + 2), xlWorksheet.Cells(2, i + 2)).EntireColumn.ColumnWidth = 10
Next i

' Display Measurement Types
offst = 7
xlWorksheet.Cells(1 + offst, 1) = "S/N"
For i = 0 To inxms - 1
    xlWorksheet.Cells(1 + offst, i + 2) = measures(i)
Next
xlWorksheet.Cells(1 + offst, inxms + 2) = "Ref#"

frst = True
For ims = 0 To inxms - 1
    frstmeas(ims) = True
Next ims
strSheetRev = ""
strSheetRef = ""
strskiprev = ""
strskipref = ""
offst = offst + 1
For i = 0 To inx - 1
    snskiprev = False
    snskipref = False
    For ims = 0 To inxms - 1
        Call FillMeasurements(Conn, xlWorksheet, pn, snarry(i), measures(ims), meastyp(ims), 1 + offst, ims + 2, inxms + 2, frst, frstmeas(ims), tester(ims), testdate(ims), numdg(ims), strRef, ckbNotes.Checked)
    Next
    xlWorksheet.Cells(1 + offst, 1) = snarry(i)
    offst = offst + 1
Next

' Add Tolerances
offst = offst + 1
xlWorksheet.Cells(1 + offst, 1) = "Max"
xlWorksheet.Cells(2 + offst, 1) = "Nom"
xlWorksheet.Cells(3 + offst, 1) = "Min"
For ims = 0 To inxms - 1
    Call FillTolerances(Conn, xlWorksheet, pn, measures(ims), meastyp(ims), 1 + offst, ims + 2, numdg(ims))
Next ims
offst = offst + 3

' Add Tester
offst = offst + 1
xlWorksheet.Cells(1 + offst, 1) = "Tested By"
xlWorksheet.Cells(1 + offst + 1, 1) = "Test Date"
For i = 0 To inxms - 1
    If (Not frstmeas(i)) Then
        xlWorksheet.Cells(1 + offst, i + 2) = tester(i)
        xlWorksheet.Cells(1 + offst + 1, i + 2) = Format(testdate(i), "MM/dd/yyyy")
    End If
Next

Conn.Close()

' Display Header
midloc = CInt((inxms + 1) / 2#)
If (midloc < 4) Then
    midloc = 4
End If
xlWorksheet.Cells(1, midloc) = "XXXXXXXXXXXX"
xlWorksheet.Cells(2, midloc) = txtTitle.Text
xlWorksheet.Cells(3, 1) = "XXXXXXXXXXXXX"
xlWorksheet.Cells(4, 1) = "XXXXXXXXXXXXXXXXX"
xlWorksheet.Cells(5, 1) = "XXXXXXXXXXXXXX"
xlWorksheet.Cells(3, inxms) = "XXXXXXXXXXX"
xlWorksheet.Cells(3, inxms + 1) = pn & "-" & strSheetRev
xlWorksheet.Cells(3, inxms + 2) = vendor

' Display messages for skipped sns
strSkip = ""
If (strskiprev <> "") Then
    strSkip = strSkip & "S/Ns skipped for Rev mismatch" & Chr(10) & Mid$(strskiprev, 2) & Chr(10) & Chr(10)
End If
If (strskipref <> "") Then
    strSkip = strSkip & "S/Ns skipped for Ref mismatch" & Chr(10) & Mid$(strskipref, 2)
End If
If (strSkip <> "") Then
    MsgBox (strSkip)
End If

txtPN.Text = ""
txtTitle.Text = ""
ckbNotes.Checked = False
GoTo Dne

BadSN:
    MsgBox ("Bad SN specification")
    GoTo Dne
Dne:
End Sub

【问题讨论】:

好的,不知道为什么期望“新的空白 Excel 工作簿”应该包含宏是合理的。您确定您不是通过使用 XLSTART 文件夹或您自己的默认模板来欺骗自己吗?和代码,显示一些代码,例如您如何创建新工作簿。 我将添加有关如何创建 excel 工作簿的代码。我期待新的 excel 工作簿包含宏,因为我创建了一个 excel 插件,所以我假设无论我打开什么工作表或制作什么新的空白工作簿,我的宏都会显示。不是这样吗? @RizwanChaudry - 请查看如何创建minimal reproducible example。我删除了一些注释掉的代码,但它仍然需要清理。 【参考方案1】:

“插件”是安装在特定计算机上并位于特定计算机上的东西。它不会嵌入到工作簿中。相反,有一个应用程序范围的设置来指示加载项是否“已安装”。在 VBA 中,属性 Application.AddIns(index).Installed 可用于启用或禁用加载项(通过索引标识,可以是加载项的名称)。不幸的是,“已安装”是用词不当。实际上它意味着启用/禁用,安装完全是另一回事。如果您的外接程序必不可少,则需要将其安装在需要它的每台计算机上。

【讨论】:

您好 rskar,我很抱歉您的建议在现在加载项出现在加载项列表中时有效,但加载项未执行。关于如何解决这个问题的任何建议?打开 excel 时,我的加载项会在 excel 中创建一个新菜单。我想因为 VBA 并没有真正启动 excel 并且只是创建一个新的工作簿,这可能是问题吗?感谢您的所有帮助和时间。

以上是关于电子表格宏的主要内容,如果未能解决你的问题,请参考以下文章

从 Writer 宏打开 OpenOffice 电子表格

如何寻址按钮? (OpenOffice 电子表格宏)

电子表格和word里的"宏"具体是啥意思

CopyFiles 使用电子表格列作为源和目标

VBA复制行高?

为 OOO Calc 电子表格中的每一行创建新的 txt/html 文件