【问题标题】:In PowerPoint VBA: Would like to write data to an Excel File (via Excel App.Object)在 PowerPoint VBA 中:想将数据写入 Excel 文件(通过 Excel App.Object)
【发布时间】:2022-11-18 06:00:29
【问题描述】:

我正在使用支持 PowePoint 宏的客户端 (.PPTM) 来收集调查数据。当用户完成调查时,我希望 .PPTM 文件将调查完成日期写入 Excel 文件(通过 Excel .App 对象)。

.PPTM 和 .XLSX 文件都在同一个 SharePoint 文件夹中(访问权限都正确)。 .PPTM 客户端可以访问 .XLSX 文件并加载数据,但尝试写回数据无效。 .XLSX 文件只是一个只有 1 个工作表的空白文件。

已使用 Excel .app 对象和 Excel 工作表对象尝试通过“[object].Value = variable”语法写入数据。已经尝试过 .Range 和 .Cell 方法,但都没有运气。语句执行无误,但目标(已寻址)单元格中未显示任何数据。

我附上了一个演示代码块,其中包含此任务的所有关键方面。这里缺少什么吗?还是有一些特殊的限制阻止 Excel .App 对象将数据写入 Excel 文件?非常感谢所有 cmets 和反馈。

Sub TEST()
       
Debug.Print Chr(10) & "|--TEST--|" & Chr(10)

Dim filePath As String, fileName As String

Dim fileTabName As String

Dim DataFile As Excel.Application  ' process support var
Dim DataFile_Tab As Worksheet      ' process support var

Dim results_Row As Integer, results_Col As Integer

Dim date_Stamp As String

'---------------------------------------------
' Assign FilePath, FileName, FileTabName

filePath = "https://[ SharePoint folder path here ]/"
        
fileName = "Test_Target.xlsx?web=1"

fileTabName = "Target"

'---------------------------------------------
' Establish connection to Excel Data File

Set DataFile = New Excel.Application

DataFile.Workbooks.Open _
  filePath & fileName, _
  True, _
  True                       ' filePath & fileName & fileTabName, _

Set DataFile_Tab = DataFile.Worksheets(fileTabName)
    
date_Stamp = Format(Now(), "dd/mm/yyyy")

results_Row = 2
results_Col = 2
            
Debug.Print "DataFile_Tab.Cells(" & results_Row & ", " & results_Col & ").Value = '" & _
    date_Stamp & "'"

DataFile_Tab.Cells(results_Row, results_Col) = date_Stamp
DataFile_Tab.Cells(results_Row, results_Col).Value = date_Stamp
            
'---------------------------------------------
' Terminate connection to Excel Data File

Set DataFile = Nothing
Set DataFile_Tab = Nothing

End Sub

【问题讨论】:

    标签: excel vba object powerpoint


    【解决方案1】:

    您正在以只读模式打开工作簿(Workbooks.Open 的第三个参数),并且从不保存它。尝试以下(未经测试)。

    Dim app As Excel.Application
    Set app = New Excel.Application
    
    Dim dataFile As Excel.Workbook
    Set dataFile = app.Workbooks.Open(filePath & fileName, True)
    
    Dim tabName As String
    tabName = "Target"
    
    Dim resultsRow As Long, resultsCol As Long
    resultsRow = 2
    resultsCol = 2
    
    dataFile.Worksheets(tabName).Cells(resultsRow, resultsCol).Value = Date
    dataFile.Save
    dataFile.Close
    
    app.Quit
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-11-18
      • 1970-01-01
      • 2023-01-18
      • 1970-01-01
      • 1970-01-01
      • 2012-11-30
      • 1970-01-01
      • 2021-07-17
      相关资源
      最近更新 更多