Excel Word VBA:更新OLE源链接

Excel Word VBA:更新OLE源链接,excel,vba,ms-word,ole,Excel,Vba,Ms Word,Ole,我的word文档中有十几个链接的excel OLE对象。这些文件经常在网络中移动,因此我需要一种简单直观的方法来更新底层链接。我尝试了我在这个网站上找到的一个代码,但是当它更新源代码时,它似乎也更新了对象本身中显示的内容,所以所有对象都会更改为上次保存excel工作簿时焦点所在的工作表。我试图在更新源代码时保留格式和范围。任何帮助都会很好 以下是我目前尝试的代码: Private Sub CommandButton1_Click() Dim OldFile As String Dim xlso

我的word文档中有十几个链接的excel OLE对象。这些文件经常在网络中移动,因此我需要一种简单直观的方法来更新底层链接。我尝试了我在这个网站上找到的一个代码,但是当它更新源代码时,它似乎也更新了对象本身中显示的内容,所以所有对象都会更改为上次保存excel工作簿时焦点所在的工作表。我试图在更新源代码时保留格式和范围。任何帮助都会很好

以下是我目前尝试的代码:

Private Sub CommandButton1_Click()

Dim OldFile As String
Dim xlsobj As Object
Dim xlsfile_chart As Object
Dim dlgSelectFile As FileDialog 'FileDialog object '
Dim thisField As Field
Dim selectedFile As Variant
'must be Variant to contain filepath of selected item
Dim newFile As Variant
Dim fieldCount As Integer '
Dim x As Long
On Error GoTo LinkError
'create FileDialog object as File Picker dialog box
Set dlgSelectFile = Application.FileDialog
(FileDialogType:=msoFileDialogFilePicker)

With dlgSelectFile
.Filters.Clear 'clear filters
.Filters.Add "Microsoft Excel Files", "*.xls, *.xlsb, *.xlsm,*.xlsx" 'filter 
for only Excel files

'use Show method to display File Picker dialog box and return user's action
If .Show = -1 Then
 'step through each string in the FileDialogSelectedItems collection
 For Each selectedFile In .SelectedItems
   newFile = selectedFile 'gets new filepath
 Next selectedFile
 Else 'user clicked cancel
 Exit Sub
 End If
 End With
 Set dlgSelectFile = Nothing
 'update fields



 Set xlsobj = CreateObject("Excel.Application")
 xlsobj.Application.Visible = False
 Set xlsfile_chart = xlsobj.Application.Workbooks.Open(newFile, ReadOnly = 
True)

 Application.ScreenUpdating = False

  With xlsobj.Application
 .calculation = xlcalculationmanual
 .enableevents = False
 End With



  fieldCount = ActiveDocument.Fields.Count
   For x = 1 To fieldCount
   With ActiveDocument.Fields(x)
   If .Type = 56 Then
  .LinkFormat.SourceFullName = newFile
    End If
   End With
  Next x

  With xlsobj.Application
 .calculation = xlcalculationmanual
 .enableevents = True
 End With

 Application.ScreenUpdating = True



  MsgBox "Data has been sucessfully linked to report"

   'clean up
    xlsfile_chart.Close SaveChanges:=False
   Set xlsfile_chart = Nothing
   xlsobj.Quit
   Set xlsobj = Nothing


    Exit Sub
LinkError:
  Select Case Err.Number
   Case 5391 'could not find associated Range Name
    MsgBox "Could not find the associated Excel Range Name " & _
   "for one or more links in this document. " & _
   "Please be sure that you have selected a valid " & _
   "Quote Submission input file.", vbCritical
    Case Else
    MsgBox "Error " & Err.Number & ": " & Err.Description, vbCritical
   End Select


   ' clean up
    Set xlsfile_chart = Nothing
     xlsobj.Quit
     Set xlsobj = Nothing

    End Sub

单词的哪个版本?究竟是什么命令用于创建这些链接?如果在Word中按Alt+F9以显示字段代码,是否会看到任何字段(可能是链接)代替Excel数据?Excel&Word 2010。是,按Alt+F9键时会出现字段链接。示例如下:
{LINK Excel.SheetMacroEnabled.12“\\\\fp.usfed.org\\shared\\Business Services\\Internal\\FORMS&lets\\核保模板\\Test\\TEST2\\CP-Blank.xlsm分析工具集”“风险摘要!R3C1:R22C12”\a\p}