Страницы: 1
RSS
Открытие файла через блокнот, файл с расширением ".acsauto"
 
Доброго времени суток.

Подскажите, пожалуйста, код макроса для открытия файла через блокнот.
Файл с расширением ".acsauto" - это скрип одной из программ.
Если его просто открыть, то он начнет исполняться.
А мне необходимо внести в него изменения с помощью макроса.
 
А почему открывать через блокнот? Просто в переменную не годится?
Потом печатать в блокнот сложней чем в переменную
 
Shell?
 
А потом  SendKeys  
 
Вот например - скрипт, который если открыть, то он начнёт выполняться  :)
Сохранить как *.vbs

Код
Set fso = CreateObject("Scripting.FileSystemObject")
MyPath = Left(WScript.ScriptFullName, (Len(WScript.ScriptFullName)) - (Len(WScript.ScriptName)))

Set ts = fso.OpenTextFile(MyPath & "ExportProducts1.csv", 1)
arrstr = Split(ts.ReadAll, vbCrLf)
ts.Close

Set outFile = fso.CreateTextFile(MyPath & "ExportProducts2.csv")

For i = 0 To UBound(arrstr)
    If Len(arrstr(i)) Then
        a = Split(arrstr(i), ";", 4)
        s = a(0) & "/" & a(1) & "/" & a(2)
        outFile.WriteLine s & Mid(arrstr(i), Len(s) + 1)
    End If
Next

outFile.Close

MsgBox "OK", vbInformation 
 
Проще
Код
Текст=CreateObject("Scripting.FileSystemObject").Getfile(Name).OpenasTextStream(1).ReadAll

или по старинке

Код
Open File For Binary As #1 
         CF = Input(FileLen(File), 1)
   Close #1 
 
Может и годится))
Я "чайник", поэтому увидел решение своей задачи через открытие блокнотом.
В приложении пример файла.
Мне необходимо дату в строке '## Parameters.Add "12.02.2014","Дата" и строке Rep.SetProperty "Дата","12.02.2014" менять на дату текущего дня.
Думал менять макросом Excel, но быть может есть другое решение? На сколько я понимаю скрип на VBA.
Может в нем можно внести изменения чтобы он сам брал нужную дату?
Изменено: Che_69 - 14.02.2014 13:51:42
 
А так?
Код
Shell ("notepad.exe  C:\Tmp\Test.txt")
 
 
Код
    Set fso = CreateObject("Scripting.FileSystemObject")
    MyPath = Left(WScript.ScriptFullName, (Len(WScript.ScriptFullName)) - (Len(WScript.ScriptName)))

    Set ts = fso.OpenTextFile(MyPath & "Экспорт.acsauto", 1)
    arrstr = Split(ts.ReadAll, vbCrLf)
    ts.Close

    Set outFile = fso.CreateTextFile(MyPath & "Экспорт.acsauto")

    For i = 0 To UBound(arrstr)-1
        If InStr(arrstr(i), "12.02.2014") Then
            arrstr(i) = Replace(arrstr(i), "12.02.2014", Right("0" & CStr(Day(Now)), 2) & "." & Right("0" & CStr(Month(Now)), 2) & "." & Year(Now))
        End If
        outFile.WriteLine arrstr(i)
    Next

    outFile.Close

    MsgBox "OK", vbInformation 
Скрипт parser.vbs положить в папку с файлом
Код
Экспорт.acsauto
имя конечно может быть любое.

P.S.
А вообще конечно можно в самом скрипте ставить текущую дату - в первой строке это вообще скорее всего комментарий, ни на что не влияющий, а внизу попробуйте прописать

Код
Rep.SetProperty "Дата", format(now(),"dd.mm.yyyy") 
А ниже ведь ещё и время есть - оно не важно?
Rep.SetProperty "Значения времени","09:00-21:00"
Изменено: Hugo - 14.02.2014 14:19:25
 
Мой варинт:

Код
Private Sub CommandButton1_Click()
Dim FILL, FILL2, strText, objFSO, objFile, strText2
Const ForReading = 1
Const ForWriting = 2
FILL = ActiveWorkbook.Path & "\Экспорт данных-Сводка по группе, за интервал.acsauto"
FILL2 = ActiveWorkbook.Path & "\Экспорт данных-Сводка по группе, за интервал_.acsauto"
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.OpenTextFile(FILL, ForReading)
strText = objFile.ReadAll
objFile.Close
 strText2 = Replace(strText, "12.02.2014", Format(Date, "dd.mm.yyyy"))
 Set objFile = objFSO.CreateTextFile(FILL2, ForWriting)
objFile.Write strText2
objFile.Close
End Sub
 
Огромное спасибо!!!
Это то, что было мне нужно.
Единственный вопрос остался - есть ли возможность того, чтобы исходник оставался, дабы его менять каждый день, а обновленный файл сохранялся в другое место?
 
Hugo, прописал в самом скрипте то что вы посоветовали, но он теперь не выгружает файл:(
 
Ну значит оно так не работает, значит не VBA. В моём скрипте vbs тоже так не работает.
Да, я не стал менять построчный перебор массива  - так можно ещё что-нибудь в код добавить, например выкинуть пустые строки, или ещё что-нибудь.
 
Hugo, а что нужно добавить, чтобы обновленный файл сохранялся в другом месте, а файл в котором искали значения остался прежним?
а то ваш скрипт получается разовым))
 
Так откроет любой файл с таким расширением, найдёт дату, заменит на текущую и сохранит с именем "Експорт"

Код
Private Sub CommandButton1_Click()
    Dim FILL, FILL2, strText, objFSO, objFile, strText2, FL, DT
    Const ForReading = 1: Const ForWriting = 2
    FL = Dir(ActiveWorkbook.Path & "\*.acsauto")
    If FL = "" Then Exit Sub
    FILL = ActiveWorkbook.Path & "\" & FL
    FILL2 = ActiveWorkbook.Path & "\Экспорт.acsauto"
    Set objFSO = CreateObject("Scripting.FileSystemObject")
    Set objFile = objFSO.OpenTextFile(FILL, ForReading)
    strText = objFile.ReadAll
    objFile.Close
    DT = Split(Split(Replace(strText, Chr(34), ""), "Rep.SetProperty Дата,")(1), Chr(13))(0)
     strText2 = Replace(strText, DT, Format(Date, "dd.mm.yyyy"))
     Set objFile = objFSO.CreateTextFile(FILL2, ForWriting)
    objFile.Write strText2
    objFile.Close
End Sub
 
Так и в моём скрипте тоже достаточно всего лишь изменить второе упоминание имени - как в первом примере.
Берём один файл, читаем, закрываем, открываем на запись другой файл.
 
У меня любую дату ищет
 
Спасибо всем ОГРОМЕННОЕ!!!
Очень помогли))
Теперь попробую разобраться в ваших кодах и почерпнуть новые знания))
 
Да, изучайте-изменяйте.
В моём коде тоже можно любую дату интегрировать - например искать ",""Дата""" или """Дата""," и соответственно реагировать, даже без переменной.
В общем, как угодно можно делать, по задаче.
Страницы: 1
Читают тему
Наверх