【问题标题】:Sub procedure or function procedure not defined error子过程或函数过程未定义错误
【发布时间】:2014-08-30 06:04:23
【问题描述】:

早上好,我尝试使用 VBA 中的宏将数据插入到 Excel 工作表中。 我已经阅读了很多教程,但我不明白有些方法不起作用(比如 Range)。 我的宏:

Sub Main()

Dim FolderPath As String, path As String, count As Integer
FolderPath = "C:\Users\Victor\Documents\Algorithme et JS"
count = 0
path = FolderPath & "\*.docx"

Filename = Dir(path)

Do While Filename <> ""
   Filename = Dir()
   count = count + 1
Loop

MsgBox count
Workbook("Sheet1.xlsx").Worksheets("Feuille1").Range("A1").Value = count

End Sub

所以这个宏返回“7”(我的文件夹中有 7 个 .docx)与“MsgBox 计数”行,但最后一行不起作用,并返回“未定义子过程或函数过程。” 说真的,我不明白,当我阅读教程时,他们很容易做到这一点...... 我的宏忘记了什么?

PS : 对不起,我的英语不是我的母语。

【问题讨论】:

  • Workbook 更改为Workbooks。这只是一个错字
  • 对不起,我有同样的错误 =/
  • 你想用workbook 行做什么?您是要在当前工作簿还是已关闭的工作簿中插入值?
  • 我尝试使用封闭的工作簿。我尝试使用当前的工作簿,但它也不起作用。
  • 有问题,我忘了说我用的是LibreOffice,无法保存在.xlsm...

标签: vba excel range worksheet


【解决方案1】:

您需要先打开 Sheet1.xlsx,然后才能更新该单元格的值。下面是如何执行此操作的简短示例:

Dim wb As Workbook
Set wb = Workbooks.Open("C:\Users\Victor\Documents\Algorithme et JS\Sheet1.xlsx")
wb.Worksheets("Feuille1").Range("A1").Value = Count
wb.Close SaveChanges:=True

【讨论】:

  • 第一行不起作用,“数据工作簿的类型未知”。我忘了说我用的是 LibreOffice,有问题吗?
  • 我已经在我自己的计算机上使用 Microsoft Excel 测试了答案。该解决方案是否也适用于 LibreOffice 我不知道,因为我不使用它,而且您没有在问题中指定是这种情况。值得注意的是,在这种情况下使用 [excel] 和 [vba] 标签可能会被认为具有误导性。
  • 别着急,我安装的是Microsoft Excel,我觉得会更方便。
  • 非常感谢,我认为我的所有问题都来自 LibreOffice,我的代码和您的解决方案在 Microsoft Office 上运行没有问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-05-14
  • 2015-10-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多