Che_69 Пользователь Сообщений: 10 |
Доброго времени суток. Подскажите, пожалуйста, код макроса для открытия файла через блокнот. |
А почему открывать через блокнот? Просто в переменную не годится? |
|
Юрий М Модератор Сообщений: 60577 Контакты см. в профиле |
|
Hugo Пользователь Сообщений: 23252 |
#5 14.02.2014 13:42:55 Вот например — скрипт, который если открыть, то он начнёт выполняться
|
||
Александр Моторин Пользователь Сообщений: 958 |
#6 14.02.2014 13:44:22 Проще
или по старинке
|
||||
Che_69 Пользователь Сообщений: 10 |
Может и годится)) Изменено: Che_69 — 14.02.2014 13:51:42 |
Юрий М Модератор Сообщений: 60577 Контакты см. в профиле |
#8 14.02.2014 14:04:18 А так?
|
||
Hugo Пользователь Сообщений: 23252 |
#9 14.02.2014 14:08:28
Скрипт parser.vbs положить в папку с файлом
имя конечно может быть любое. P.S.
А ниже ведь ещё и время есть — оно не важно? Изменено: Hugo — 14.02.2014 14:19:25 |
||||||
Александр Моторин Пользователь Сообщений: 958 |
#10 14.02.2014 14:21:09 Мой варинт:
|
||
Che_69 Пользователь Сообщений: 10 |
Огромное спасибо!!! |
Che_69 Пользователь Сообщений: 10 |
Hugo, прописал в самом скрипте то что вы посоветовали, но он теперь не выгружает файл:( |
Hugo Пользователь Сообщений: 23252 |
Ну значит оно так не работает, значит не VBA. В моём скрипте vbs тоже так не работает. |
Che_69 Пользователь Сообщений: 10 |
Hugo, а что нужно добавить, чтобы обновленный файл сохранялся в другом месте, а файл в котором искали значения остался прежним? |
Александр Моторин Пользователь Сообщений: 958 |
#15 14.02.2014 14:46:42 Так откроет любой файл с таким расширением, найдёт дату, заменит на текущую и сохранит с именем «Експорт»
|
||
Hugo Пользователь Сообщений: 23252 |
Так и в моём скрипте тоже достаточно всего лишь изменить второе упоминание имени — как в первом примере. |
Che_69 Пользователь Сообщений: 10 |
Спасибо всем ОГРОМЕННОЕ!!! |
Hugo Пользователь Сообщений: 23252 |
#19 14.02.2014 15:12:49 Да, изучайте-изменяйте. |
Similar to Tarik’s answer, I would probably use something like the following:
In a class module called NotepadManager:
Option Explicit
Private Const CAPTION$ = "Notepad"
Private MHwnd As Long
'based on code lifted from:
'http://www.pbdr.com/vbtips/api/FindCloseAPI.htm
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" _
(ByVal lpClassName As Any, ByVal lpWindowName As Any) As Long
Private Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" _
(ByVal hWnd As Long, ByVal lpString As String, _
ByVal aint As Long) As Long
Private Declare Function GetWindow Lib "user32" _
(ByVal hWnd As Long, ByVal wCmd As Long) As Long
Private Declare Function EnumWindows Lib "user32" _
(ByVal wndenmprc As Long, ByVal lParam As Long) As Long
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" _
(ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, _
lParam As Any) As Long
Private Declare Function SetForegroundWindow Lib "user32" ( _
ByVal hWnd As Long) As Long
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Private Const WM_CLOSE = &H10
Private Const GW_HWNDFIRST = 0
Private Const GW_HWNDLAST = 1
Private Const GW_HWNDNEXT = 2
Private Const GW_HWNDPREV = 3
Private Const GW_OWNER = 4
Private Const GW_CHILD = 5
Private Const GW_MAX = 5
Private mstrTarget As String
Private mblnSuccess As Boolean
Public Sub writeMessageToNotepad(ByRef message As String)
focusNotepad
Sleep 2000
SendKeys (message)
End Sub
Public Sub startNotepad()
Dim ret
ret = Shell("notepad", vbNormalFocus)
End Sub
Public Sub focusNotepad()
If MHwnd = 0 Then
MHwnd = hwndFindWindow(CAPTION$)
End If
If MHwnd = 0 Then MsgBox "Error: Cannot find notepad."
Debug.Print SetForegroundWindow(MHwnd)
End Sub
Private Function hwndFindWindow(strApplicationTitle As String) As Long
Dim hWndTmp As Long
Dim nRet As Integer
Dim TitleTmp As String
Dim TitlePart As String
Dim MyWholeTitle As String
Dim mCounter As Long
Dim hWndOver As Integer
Dim sClassName As String * 100
hwndFindWindow = False
TitlePart = UCase$(strApplicationTitle)
'loop through all the open windows
hWndTmp = FindWindow(0&, 0&)
Do Until hWndTmp = 0
TitleTmp = Space$(256)
nRet = GetWindowText(hWndTmp, TitleTmp, Len(TitleTmp))
If nRet Then
'retrieve window title
TitleTmp = UCase$(VBA.Left$(TitleTmp, nRet))
'compare window title & strApplicationTitle
If InStr(TitleTmp, TitlePart) Then
hwndFindWindow = FindWindow(vbEmpty, TitleTmp)
Exit Do
End If
End If
hWndTmp = GetWindow(hWndTmp, GW_HWNDNEXT)
mCounter = mCounter + 1
Loop
End Function
Private Function EnumCallback(ByVal app_hWnd As Long, _
ByVal param As Long) As Long
Dim buf As String * 256
Dim title As String
Dim length As Long
' Checks a returned task to determine if App should be closed
' get window's title.
length = GetWindowText(app_hWnd, buf, Len(buf))
title = Left$(buf, length)
' determine if target window.
If InStr(UCase(title), UCase(mstrTarget)) <> 0 Then
' Kill window.
SendMessage app_hWnd, WM_CLOSE, 0, 0
mblnSuccess = True
End If
' continue searching.
EnumCallback = 1
End Function
And in a normal module:
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Sub test()
Dim m As New NotepadManager
m.startNotepad
m.focusNotepad
Sleep 2000
m.writeMessageToNotepad "My message"
Debug.Print "done"
End Sub
However, I’ve often found that ensuring you have window focus is the most difficult thing when you have a user interacting with the machine at the time.
Я пытаюсь сделать это впервые, и недавно начал работать над VBA. Поэтому, пожалуйста, помогите мне понять, где я иду не так. Я пытаюсь открыть блокнот через макрос, но он показывает ошибку. Пожалуйста, найдите ниже код, который я использую:
const strfilename = "C:UsersDesktopabc.txt"
попробовал с
set OFS = myOFSO.OpenTextFile(strfilename)
Это отображение
код ошибки 424
Пожалуйста, предоставьте ваш вклад. Заранее спасибо за помощь.
2018-03-02 16:35
3
ответа
Можно просто вызвать команду оболочки для запуска notepad.exe с путем к файлу.
returnvalue = Shell("notepad.exe " & strfilename, vbNormalFocus)
2018-03-02 16:44
Откройте любой файл с программой по умолчанию для типа файла: (с одной строкой кода)
CreateObject("Shell.Application").Open("c:UsersDesktopabc.txt")
Если вы хотите использовать этот метод с типом файла, который еще не связан с приложением:
- Нажмите (Клавиша Windows)
- Начать печатать
default
- Нажмите «Приложения по умолчанию» (Windows 10) или «Программы по умолчанию» (Windows 7).
2019-07-02 15:26
Ниже код поможет вам открыть блокнот из Excel.
Dim fso As Object
Dim sfile As String
Set fso = CreateObject("shell.application")
sfile = "C:UsersUniversalDesktoptest.txt"
fso.Open (sfile)
2018-03-02 18:31
Попробуйте этот подход
Sub Test()
Dim strCont As String
strCont = LoadFileStr$(ThisWorkbook.Path & "Sample.txt")
Range("A1").Value = strCont
End Sub
Function LoadFileStr$(FN$)
With CreateObject("Scripting.FileSystemObject")
LoadFileStr = .OpenTextFile(FN, 1).readall
End With
End Function
2018-03-02 17:03
Если вы хотите создать новый текстовый файл и хотите писать в нем, вы можете использовать этот подход:
Sub writeToTextFile()
Dim i As Long
Open ThisWorkbook.Path & "newFile.txt" For Output As #1
Print #1, "This could be the first line"
Print #1, "this the second"
For i = 3 To 10
Print #1, "this is the " & i & ". line"
Next
Close #1
End Sub
2019-07-02 15:36
Excel VBA Запись текстового файла
В VBA мы можем открыть, прочитать или записать текстовый файл. Запись текстового файла означает, что данные у нас есть на листе Excel, и мы хотим, чтобы это был текстовый файл или файл блокнота. Поэтому есть два метода: свойство FileSystemObject VBA и метод Open and Write в VBA.
В большинстве корпоративных компаний после завершения отчета они стараются загрузить отчет в базу данных. Они используют формат «текстовые файлы» для обновления базы данных для загрузки в базу данных. Обычно мы копируем данные из Excel и вставляем их в текстовый файл. Мы полагаемся на текстовые файлы, потому что с ними очень легко работать из-за их легкости и простоты. Используя кодирование VBAИспользование кодирования VBAКод VBA представляет собой набор инструкций, написанных пользователем на языке программирования приложений Visual Basic в редакторе Visual Basic (VBE) для выполнения определенной задачи. Подробнее, мы можем автоматизировать задачу копирования данных из файл Excel в текстовый файл. В этой статье показано, как копировать или записывать данные из файла Excel в текстовый файл с помощью кода VBA.
Оглавление
- Excel VBA Запись текстового файла
- Как записать данные в текстовые файлы с помощью VBA?
- Синтаксис открытого текстового файла
- Пример №1
- Шаг 1: Объявить переменную
- Шаг 2: Определите номер файла
- Шаг 3: Назначьте путь к файлу
- Шаг 4: Назначьте бесплатную функцию файла
- Шаг 5: Откройте текстовый файл
- Шаг 6: Используйте метод печати/записи
- Шаг 7: Сохраните и закройте текстовый файл
- Пример #2
- Рекомендуемые статьи
- Как записать данные в текстовые файлы с помощью VBA?
Как записать данные в текстовые файлы с помощью VBA?
Запись данных из Excel в текст сложна и требует очень хороших знаний кодирования VBA. Выполните следующие шаги, чтобы написать код VBA для копирования dataWrite Код VBA для копирования DataFile Copy — это встроенная функция VBA, которая используется для копирования файла из одного места в другое. Чтобы использовать эту функцию, мы должны указать текущий путь к файлу, а также путь к файлу назначения. читать больше из Excel в текстовый файл.
Прежде чем мы покажем вам, как писать код, позвольте мне объяснить, как открыть текстовый файл с помощью оператора open.
Синтаксис открытого текстового файла
Открыть [File Path]Для [Mode]Как [File Number]
Путь к файлу: Путь к файлу, который мы пытаемся открыть на компьютере.
Режим: Режим — это контроль, который мы можем иметь при открытии текстовых файлов. У нас может быть три типа контроля над текстовым файлом.
- Режим ввода: Это предполагает управление открывающимся текстовым файлом только для чтения. Если мы используем «Режим ввода», мы ничего не можем сделать с файлом. Вместо этого мы можем просто прочитать содержимое текстового файла.
- Режим вывода: Мы можем написать содержание на этой опции. Мы должны помнить, что он перезапишет все существующие данные. Итак, мы должны опасаться возможной потери старых данных.
- Режим добавления: Этот режим полностью противоположен Выходной режим. Используя этот метод, мы можем записать новые данные в конец существующих данных в файле.
Номер дела: Это подсчитает количество текстовых файлов всех открытых текстовых файлов. Он распознает открытые номера файлов в виде целых чисел от 1 до 511. Однако присвоение номера файла сложно и приводит к путанице. Для этого мы можем использовать бесплатную функцию File.
Бесплатный файл возвращает уникальный номер для открытых файлов. Таким образом, мы можем присвоить уникальный номер файла без повторяющихся значений.
.free_excel_div{фон:#d9d9d9;размер шрифта:16px;радиус границы:7px;позиция:относительная;margin:30px;padding:25px 25px 25px 45px}.free_excel_div:before{content:»»;фон:url(центр центр без повтора #207245;ширина:70px;высота:70px;позиция:абсолютная;верх:50%;margin-top:-35px;слева:-35px;граница:5px сплошная #fff;граница-радиус:50%} Вы можете скачать этот шаблон текстового файла записи VBA здесь — Шаблон текстового файла записи VBA
Пример №1
Выполните следующие шаги, чтобы написать код для создания нового текстового файла.
Предположим, у вас уже есть текстовый файл с именем «Hello.txt» в памяти вашего компьютера, и мы покажем вам, как записать в него данные.
Шаг 1: Объявить переменную
Объявите переменную для хранения пути к файлу как строку.
Код:
Sub TextFile_Example1 () Dim Path As String End Sub
Шаг 2: Определите номер файла
Чтобы определить, на какой номер файла мы ссылаемся, объявите еще одну переменную как IntegerVariable. Поскольку IntegerIn VBA целое число — это тип данных, который может быть присвоен любой переменной и использоваться для хранения целочисленных значений. В VBA скобка для максимального числа целочисленных переменных, которые можно сохранить, аналогична скобке в других языках. Используя оператор DIM, любую переменную можно определить как целочисленную переменную.Подробнее.
Код:
Sub TextFile_Example1() Dim Path As String Dim FileNumber As Integer End Sub
Шаг 3: Назначьте путь к файлу
Теперь назначьте путь к файлу с именем для переменной Path.
Код:
Sub TextFile_Example1() Dim Path As String Dim FileNumber As Integer Path = «D:Excel FilesVBA FileHello.txt» ‘Измените путь в соответствии с вашими требованиями End Sub
Шаг 4: Назначьте бесплатную функцию файла
Теперь назначьте функцию «Свободный файл» для хранения уникальных номеров файлов для переменной «Номер файла».
Код:
Sub TextFile_Example1() Dim Path As String Dim FileNumber As Integer Path = «D:Excel FilesVBA FileHello.txt» ‘Измените путь в соответствии с вашими требованиями FileNumber = FreeFile End Sub
Шаг 5: Откройте текстовый файл
Теперь нам нужно открыть текстовый файл, чтобы работать с ним. Как мы объяснили, нам нужно использовать оператор OPEN, чтобы открыть текстовый файл.
Шаг 6: Используйте метод печати/записи
Как только файл откроется, нам нужно что-то в нем написать. Нам нужен метод «Запись» или «Печать» для записи в текстовый файл.
Код:
Sub TextFile_Example1() Dim Path As String Dim FileNumber As Integer Path = «D:Excel FilesVBA FileHello.txt» ‘Измените путь в соответствии с вашими требованиями FileNumber = FreeFile Open Path For Output As FileNumber Print #FileNumber, «Welcome» Print #FileNumber , «to» Print #FileNumber, «VBA» End Sub
Во-первых, нам нужно указать номер файла (здесь мы присвоили файлу переменную «FileNumber»), затем нам нужно добавить содержимое, которое мы хотим добавить в текстовый файл.
Шаг 7: Сохраните и закройте текстовый файл
Как только мы запишем содержимое в текстовый файл, нам нужно сохранить и закрыть текстовый файл.
Код:
Sub TextFile_Example1() Dim Path As String Dim FileNumber As Integer Path = «D:Excel FilesVBA FileHello.txt» ‘Измените путь в соответствии с вашими требованиями FileNumber = FreeFile Open Path For Output As FileNumber Print #FileNumber, «Welcome» Print #FileNumber , «to» Print #FileNumber, «VBA» Close FileNumber End Sub
Теперь запустите код вручную или с помощью сочетания клавиш Excel. Ярлык Excel. Ярлык Excel — это метод выполнения ручного задания более быстрым способом. Подробнее F5. Он запишет указанный контент в указанный текстовый файл.
Пример #2
Теперь мы увидим, как записать данные листа Excel в текстовый файл.
Для этого примера мы создали простые данные в Excel, как показано ниже.
Шаг 1: Продолжая старый пример, определите еще две переменные как Integer, чтобы найти последнюю строку и последний столбец.
Код:
Sub TextFile_Example2() Dim Path As String Dim FileNumber As Integer Dim LR As Integer Dim LC As Integer End Sub
Шаг 2: Найдите последнюю использованную строку и столбец на листе.
Шаг 3: Теперь назначьте путь к файлу и номер файла.
Шаг 4: Используйте оператор OPEN, чтобы открыть текстовый файл.
Шаг 5: Нам нужно перебирать строки и столбцы, поэтому объявите еще две переменные как Integer.
Шаг 6: Теперь откройте цикл, чтобы перебрать строку (для следующего цикла в VBAFor Next Loop В VBAВсе языки программирования используют цикл For Next в VBA. После оператора FOR в этом цикле есть критерий, и код повторяется до тех пор, пока не критерии достигнуты. читать дальше)
Шаг 7: Чтобы выполнить цикл по столбцам, откройте еще один цикл внутри существующего цикла.
Шаг 8: Нам нужно писать одну и ту же строку данных, пока она не достигнет последнего столбца. Поэтому для этого примените оператор IF в VBA.
Шаг 9: Теперь сохраните и закройте текстовый файл.
Этот код запишет данные в текстовый файл, но чтобы открыть текстовый файл после записи, нам нужно использовать приведенный ниже код.
Код:
Sub TextFile_Example2() Dim Path As String Dim FileNumber As Integer Dim LR As Integer Dim LC As Integer Dim k As Integer Dim i As Integer LR = Worksheets(«Text»).Cells(Rows.Count, 1).End(xlUp) .Row LC = Рабочие листы («Текст»). Ячейки (1, Столбцы. Количество). Конец (xlToLeft). Путь к столбцу = «D: Excel FilesVBA FileHello.txt» FileNumber = FreeFile Открытый путь для вывода в виде FileNumber For k = 1 В LR Для i = 1 В LC Если i <> LC Затем напечатать #FileNumber, Cells(i, k), иначе Напечатать #FileNumber, Cells(i, k) End If Next i Next k Закрыть FileNumber Shell «notepad.exe » & Путь, vbNormalFocus End Sub
Итак, запускаем код с помощью клавиши F5 или вручную. Затем он скопирует данные ниже.
Рекомендуемые статьи
Эта статья представляет собой руководство по записи текстового файла VBA. Здесь мы узнаем, как копировать/записывать данные с рабочего листа в текстовый файл с практическими примерами и загружаемым шаблоном. Ниже вы можете найти несколько полезных статей по Excel VBA:
- VBA Подождите
- Диалоговое окно файла VBA
- Функция InStr VBA
Открытие текстового файла из кода VBA Excel с помощью метода OpenTextFile объекта FileSystemObject. Синтаксис и параметры метода OpenTextFile.
OpenTextFile – это метод объекта FileSystemObject, который открывает указанный текстовый файл и создает объект TextStream, обеспечивающий последовательный доступ к файлу для чтения, записи или добавления данных.
object.OpenTextFile (filename, [iomode], [create], [format])
object – экземпляр объекта FileSystemObject.
Параметры метода OpenTextFile
Параметр | Описание |
---|---|
filename | Имя открываемого файла, включая путь к нему. Строковое выражение. Обязательный параметр. |
iomode | Параметр, задающий режим ввода-вывода для открытого файла. ForReading (1) – только для чтения, ForWriting (2) – только для записи, ForAppending (8) – для добавления данных в конец файла. Необязательный параметр. По умолчанию – только для чтения. |
create | Параметр, задающий, можно ли создать новый файл, если файл, указанный параметром filename, не существует. Значение типа Boolean. True – новый файл будет создан, False – нет. Необязательный параметр. По умолчанию – False. |
format | Параметр, задающий в каком формате будет открыт файл. TristateUseDefault (-2) – в формате настроек системы по умолчанию, TristateTrue (-1) – в формате Юникод, TristateFalse (0) – в формате ASCII. Необязательный параметр. По умолчанию – в формате ASCII. |
Пример открытия текстового файла
Создайте на диске «C» текстовый файл с именем testfile.txt, запишите в него что-нибудь, сохраните и закройте. Следующая процедура откроет файл testfile.txt, считает весь текст и отобразит его в информационном окне MsgBox:
Sub Primer() Dim fso, fl ‘Создаем новый экземпляр объекта FileSystemObject Set fso = CreateObject(«Scripting.FileSystemObject») ‘Присваиваем переменной fl новый объект TextStream, ‘связанный с открытым для чтения файлом Set fl = fso.OpenTextFile(«C:testfile.txt») ‘Считываем весь текст из файла и ‘отображаем в информационном окне MsgBox fl.ReadAll ‘Закрываем файл fl.Close End Sub |
Используемые переменные:
- fso – экземпляр объекта FileSystemObject;
- fl – экземпляр объекта TextStream, связанный с открытым для чтения файлом.
Возможно у вас на диске «C» уже есть текстовый файл с именем testfile.txt, если вы его создавали с помощью процедуры из примера в статье VBA Excel. Метод CreateTextFile.