|
|||||||
GetObject
Время создания: 16.03.2019 23:43
Текстовые метки: GetObject
Раздел: Разные закладки - VBA - GetOpen
Запись: xintrea/mytetra_db_adgaver_new/master/base/1493352736bhlko0a2al/text.html на raw.githubusercontent.com
|
|||||||
|
|||||||
При нажатии на кнопку открывается экселовский файлик, только вот почему-то не просит обновить связи! Если открываю файл из-под винды - все нормально, но если через форму аксесса, открывается файлик и связи не обновляются и нет запроса на обновление. Private Sub Кнопка3_Click() Set obj = GetObject("путь к файлу xlsx") obj.Application.Visible = True obj.Parent.Windows(1).Visible = True End Sub Вот тебе рукотворный запрос на обновление. Запускается процедурой Links_Excel_Test Public Sub Links_Excel_Test() Dim objExcel As Object Dim strCaption As String On Error Resume Next Set objExcel = GetObject(, "Excel.Application") If objExcel Is Nothing Then Err.Clear
Set objExcel = CreateObject("Excel.Application") If objExcel Is Nothing Then Err.Clear: MsgBox "Не установлен MS Excel!", vbCritical, "Ошибка": Exit Sub End If With objExcel .Visible = True .DisplayAlerts = False .ActivateMicrosoftApp 4& 'xlMicrosoftAccess = 4 With .Workbooks .Open "путь к файлу xls", 0 If MsgBox("Обновить ссылки?", vbQuestion Or vbYesNo) = vbYes Then Excel_UpdateLinks .Item(.Count) End With End With Set objExcel = Nothing End Sub Private Sub Excel_UpdateLinks(objWorkbook As Object) Dim arrLinks As Variant Dim i As Long, lngRetVal As Long Dim strFileName As String Dim dlgOpenFile As Object 'FileDialog arrLinks = objWorkbook.LinkSources(1&) 'xlExcelLinks=1 If Not IsEmpty(arrLinks) Then If IsArray(arrLinks) Then For i = 1 To UBound(arrLinks) If Len(Dir$(arrLinks(i))) = 0 Then lngRetVal = MsgBox("Не нашли файл по ссылке " & """" & arrLinks(i) & """" & vbNewLine & _ "Искать бум?", vbCritical Or vbYesNo, "Обновление ссылок") If lngRetVal = vbYes Then strFileName = arrLinks(i)
If Len(Dir$(strFileName)) = 0 Then Do While Len(Dir$(strFileName, vbDirectory)) = 0 strFileName = Left$(strFileName, InStrRev(strFileName, "\") - 1) If InStr(1, strFileName, "\") = 0 Then strFileName = CurDir: Exit Do Loop End If Set dlgOpenFile = Application.FileDialog(1&) 'msoFileDialogOpen With dlgOpenFile .InitialFileName = strFileName
.AllowMultiSelect = False .Title = "Укажите файл для восстановления ссылки" If .Show = -1 Then objWorkbook.ChangeLink arrLinks(i), .SelectedItems(1), 1& 'xlExcelLinks Else MsgBox "Не указано новое положение файла для восстановления ссылки!" & vbNewLine & _ "Ссылка не будет восстановлена.", vbInformation End If End With strFileName = "" End If End If Next i End If End If If IsArray(arrLinks) Then Erase arrLinks Set dlgOpenFile = Nothing Set objWorkbook = Nothing End Sub
obj.Workbooks.Open "Путь к файлу", True Вот это заремь .ActivateMicrosoftApp 4& 'xlMicrosoftAccess = 4
...
Next i objWorkbook.UpdateLink objWorkbook.LinkSources
Erase arrLinks End If End If 'If IsArray(arrLinks) Then Erase arrLinks'а это убери ...
|
|||||||
Так же в этом разделе:
|
|||||||
|
|||||||
|