Страницы: 1
RSS
работа с файлами на VBA: Закрытие txt.
 

Здравствуйте!

Подскажите пожалуйста как закрыть текстовый файл на VBA. Я сделал код  который создает файл и открывает.

Но я не знаю:

1.Как закрыть текстовый файл ?

ВОТ КОД:

Код
Option Explicit
Sub TEST()
Dim fso As FileSystemObject
Set fso = CreateObject("Scripting.FileSystemObject")
fso.CreateTextFile (ThisWorkbook.Path & "\linx_create_txt_for_txtdelenia_temporar.txt")
Shell "NotePad linx_create_txt_for_txtdelenia_temporar", vbNormalFocus
End Sub
Мне не так важно сохранять структуру кода моя задача открыть файл для пользователя и сохранив закрыть его.
Изменено: Macovei Leon - 08.07.2018 02:07:20
 
Поискал в интернетеи протестировал. Мне помогло.
Код
Public Sub Close_Notepad_ByName(NtpPath As String)

Dim oServ As Object
Dim cProc As Object
Dim oProc As Object
Dim strProcessName
strProcessName = "Notepad.exe"
Set oServ = GetObject("winmgmts:")
Set cProc = oServ.ExecQuery("select * from win32_process")
For Each oProc In cProc
    If InStr(1, oProc.Name, strProcessName, vbTextCompare) <> 0 Then ' check if Notepad
        If InStr(1, oProc.commandLine, NtpPath, vbTextCompare) <> 0 Then ' check Path
        oProc.Terminate
        End If
    End If
Next
Set oServ = Nothing
Set cProc = Nothing
End Sub
Sub test()

Dim StrPath As String
StrPath = "C:\Users\Fedor\Desktop\wx.txt"
Call Close_Notepad_ByName(StrPath)
End Sub
С уважением,
Федор/Все_просто
 
Цитата
Все_просто написал:
Мне помогло.
А меня крайне заинтересовало, что за нужда закрывать NotePad кодом Excel?
 
RAN, какая разница?
У человека был вопрос.  Я же поискал, нашел и отписал. Дальше, кажется, ему решать.
Изменено: Все_просто - 08.07.2018 08:57:31
С уважением,
Федор/Все_просто
 
Спасибо помогло
 
Цитата
Macovei Leon написал:
и сохранив закрыть его
- кто будет давать команду? Пользователь, нажимая кнопку кода, вместо нажатия кнопки блокнота?
 
Все_просто,  можно все в запрос запихнуть.

Код
Public Sub Close_Notepad_ByName(NtpPath As String)
 
Dim oServ As Object
Dim cProc As Object
Dim oProc As Object
Dim strProcessName
strProcessName = "Notepad.exe"
Set oServ = GetObject("winmgmts:")
set cProc = oServ.ExecQuery("select * from win32_process where name='" & strProcessName  & "' and СommandLine like '%" & NtpPath & "'")
For Each oProc In cProc
          oProc.Terminate
Next
Set oServ = Nothing
Set cProc = Nothing
End Sub
Изменено: БМВ - 08.07.2018 22:58:11
По вопросам из тем форума, личку не читаю.
Страницы: 1
Наверх