Здравствуйте! Возможно ли средствами VBA реализовать следующую задумку. Есть на диске компьютера в какой-то папке файл ( например "Сводка") Такой же файл есть на внешней карте памяти. При работе с одним из этих файлов на любом из носителей в него вносятся изменения. Возможно ли и как сделать так, чтобы при закрытии рабочего файла, автоматически был найден файл с таким-же именем и происходила его замена на новый на флэшке либо диске? Спасибо!
Здравствуйте! Возможно ли средствами VBA реализовать следующую задумку. Есть на диске компьютера в какой-то папке файл ( например "Сводка") Такой же файл есть на внешней карте памяти. При работе с одним из этих файлов на любом из носителей в него вносятся изменения. Возможно ли и как сделать так, чтобы при закрытии рабочего файла, автоматически был найден файл с таким-же именем и происходила его замена на новый на флэшке либо диске? Спасибо!pechkin
Sub CopyNewFile() Dim wb As Workbook: Set wb = ThisWorkbook
If Not wb.Saved Then Dim msg As String msg = "В книге имеются не сохраненные изменения." & vbCrLf & _ "Сохранить книгу?" If MsgBox(msg, vbExclamation + vbYesNo) = vbYes Then wb.Save End If End If
'_______________________________________________________ Dim fso As Object Set fso = CreateObject("Scripting.FileSystemObject")
Const pZ As String = "Z:\Бюджет.xlsb" Dim pD As String: pD = wb.FullName
'******************************************************* If pD = pZ Then MsgBox "Открытый ""Бюджет"" - с флешки!", vbCritical Exit Sub End If
If Not fso.DriveExists("Z") Then ' НЕТ ФЛЕШКИ!!! MsgBox "Отсутствует флешка!", vbCritical Exit Sub End If '*******************************************************
If fso.FileExists(pZ) Then ' есть на "Z" ' файлы Dim fD As Object: Set fD = fso.GetFile(pD) Dim fZ As Object: Set fZ = fso.GetFile(pZ)
' даты последнего изменения файлов Dim dD As Date: dD = fD.DateLastModified Dim dZ As Date: dZ = fZ.DateLastModified
'################################################################################# If Abs(dD - dZ) < TimeSerial(0, 0, 5) Then MsgBox "КОПИРОВАНИЕ НЕ НУЖНО." & vbCrLf & _ String(50, "_") & vbCrLf & _ "Время последнего изменения файла:" & vbCrLf & _ " - на диске ""D"": " & dD & vbCrLf & _ " - на диске ""Z"": " & dZ & vbCrLf & vbCrLf & _ "Размер файла:" & vbCrLf & _ " - на диске ""D"": " & Format(fD.Size, "#,##0 байт") & vbCrLf & _ " - на диске ""Z"": " & Format(fZ.Size, "#,##0 байт"), vbInformation
Else Dim fNew As Object, fOld As Object ' файлы по новизне Select Case True Case dD > dZ Set fNew = fD Set fOld = fZ
Case dZ > dD Set fNew = fZ Set fOld = fD End Select
If MsgBox(msg, vbQuestion + vbOKCancel) = vbOK Then fNew.Copy (fOld.Path) Else MsgBox "Операция копирования отменена.", vbExclamation End If End If '#################################################################################
Else ' нет на "Z" If MsgBox("Файла нет на диске ""Z""." & vbNewLine & _ "Сохраняем копию с диска ""D""?", vbQuestion + vbOKCancel) = vbOK Then fso.GetFile(pD).Copy (pZ) End If End If End Sub
[/vba]
что-то похожее. видимо.
[vba]
Код
Option Explicit
Sub CopyNewFile() Dim wb As Workbook: Set wb = ThisWorkbook
If Not wb.Saved Then Dim msg As String msg = "В книге имеются не сохраненные изменения." & vbCrLf & _ "Сохранить книгу?" If MsgBox(msg, vbExclamation + vbYesNo) = vbYes Then wb.Save End If End If
'_______________________________________________________ Dim fso As Object Set fso = CreateObject("Scripting.FileSystemObject")
Const pZ As String = "Z:\Бюджет.xlsb" Dim pD As String: pD = wb.FullName
'******************************************************* If pD = pZ Then MsgBox "Открытый ""Бюджет"" - с флешки!", vbCritical Exit Sub End If
If Not fso.DriveExists("Z") Then ' НЕТ ФЛЕШКИ!!! MsgBox "Отсутствует флешка!", vbCritical Exit Sub End If '*******************************************************
If fso.FileExists(pZ) Then ' есть на "Z" ' файлы Dim fD As Object: Set fD = fso.GetFile(pD) Dim fZ As Object: Set fZ = fso.GetFile(pZ)
' даты последнего изменения файлов Dim dD As Date: dD = fD.DateLastModified Dim dZ As Date: dZ = fZ.DateLastModified
'################################################################################# If Abs(dD - dZ) < TimeSerial(0, 0, 5) Then MsgBox "КОПИРОВАНИЕ НЕ НУЖНО." & vbCrLf & _ String(50, "_") & vbCrLf & _ "Время последнего изменения файла:" & vbCrLf & _ " - на диске ""D"": " & dD & vbCrLf & _ " - на диске ""Z"": " & dZ & vbCrLf & vbCrLf & _ "Размер файла:" & vbCrLf & _ " - на диске ""D"": " & Format(fD.Size, "#,##0 байт") & vbCrLf & _ " - на диске ""Z"": " & Format(fZ.Size, "#,##0 байт"), vbInformation
Else Dim fNew As Object, fOld As Object ' файлы по новизне Select Case True Case dD > dZ Set fNew = fD Set fOld = fZ
Case dZ > dD Set fNew = fZ Set fOld = fD End Select
If MsgBox(msg, vbQuestion + vbOKCancel) = vbOK Then fNew.Copy (fOld.Path) Else MsgBox "Операция копирования отменена.", vbExclamation End If End If '#################################################################################
Else ' нет на "Z" If MsgBox("Файла нет на диске ""Z""." & vbNewLine & _ "Сохраняем копию с диска ""D""?", vbQuestion + vbOKCancel) = vbOK Then fso.GetFile(pD).Copy (pZ) End If End If End Sub
Там правда не совсем про это, но похоже. Они говорят, что можно попробовать установить Internet Explorer по умолчанию. Дескать
Цитата
Информация в реестре не удаляется после деинсталляции постороннего браузера обозначенного как предустановленный, в основном, это происходит когда деинсталлируется Google Chrom
Там правда не совсем про это, но похоже. Они говорят, что можно попробовать установить Internet Explorer по умолчанию. Дескать
Цитата
Информация в реестре не удаляется после деинсталляции постороннего браузера обозначенного как предустановленный, в основном, это происходит когда деинсталлируется Google Chrom