powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / импорт данных в TXT
2 сообщений из 2, страница 1 из 1
импорт данных в TXT
    #35684338
maccen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Задача:
Есть диапазон ячеек:
А1 petrov
А2 С уважением
А3 Олег Валерьевич
А4 тел.м. 1111
А5 тел.р. 2222

А6 ivanov
А7 С уважением
А8 Петр Иванович
А9 тел.м. 5555
А10 тел.р. 6666

Как сделать так, чтобы при исполения макроса создавался файл текстовый petrov.txt, куда в б копировались данные :
С уважением
Олег Валерьевич
тел.м. 1111
тел.р. 2222
Вайл закрывается, создается ivanov.txt, в который копируются данные:
С уважением
Петр Иванович
тел.м. 5555
тел.р. 6666
Закрывается.

Есть код, только он сразу создает файл Test.txt, и туда перетаскивает все данные, а как реализовать, чтобы выполнить вышеуказанную задачку:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' ExportToTextFile
' This exports a sheet or range to a text file, using a 
' user-defined separator character.
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Public Sub ExportToTextFile(FName As String, _
    Sep As String, SelectionOnly As Boolean, _
    AppendData As Boolean)

Dim WholeLine As String
Dim FNum As Integer
Dim RowNdx As Long
Dim ColNdx As Integer
Dim StartRow As Long
Dim EndRow As Long
Dim StartCol As Integer
Dim EndCol As Integer
Dim CellValue As String


Application.ScreenUpdating = False
On Error GoTo EndMacro:
FNum = FreeFile

If SelectionOnly = True Then
    With Selection
        StartRow = .Cells( 1 ).Row
        StartCol = .Cells( 1 ).Column
        EndRow = .Cells(.Cells.Count).Row
        EndCol = .Cells(.Cells.Count).Column
    End With
Else
    With ActiveSheet.UsedRange
        StartRow = .Cells( 1 ).Row
        StartCol = .Cells( 1 ).Column
        EndRow = .Cells(.Cells.Count).Row
        EndCol = .Cells(.Cells.Count).Column
    End With
End If

If AppendData = True Then
    Open FName For Append Access Write As #FNum
Else
    Open FName For Output Access Write As #FNum
End If

For RowNdx = StartRow To EndRow
    WholeLine = ""
    For ColNdx = StartCol To EndCol
        If Cells(RowNdx, ColNdx).Value = "" Then
            CellValue = Chr( 34 ) & Chr( 34 )
        Else
           CellValue = Cells(RowNdx, ColNdx).Text
        End If
        WholeLine = WholeLine & CellValue & Sep
    Next ColNdx
    WholeLine = Left(WholeLine, Len(WholeLine) - Len(Sep))
    Print #FNum, WholeLine
Next RowNdx

EndMacro:
On Error GoTo  0 
Application.ScreenUpdating = True
Close #FNum

End Sub
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' END ExportTextFile
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

Because the ExportToTextFile procedure accepts input parameters, you must call it from other VBA code, such as the following:

Sub DoTheExport()
    ExportToTextFile FName:="C:\Test.txt", Sep:=";", _
       SelectionOnly:=False, AppendData:=True
End Sub

In the example DoTheExport procedure above, the file name and the separator character are hard coded in to the code. If you want to prompt the user for the file name and the separator character, use code like the following: 


Подскажите, а то записей вот такого рода 1000 в ручную можно что-то упустить из виду.
Всем заранее спасибо за ответы.
...
Рейтинг: 0 / 0
импорт данных в TXT
    #35687132
maccen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Решение нашлось такой задачи, только как теперь сделать так, чтобы информация с ячейек бралась по горизонтали, а не по вертикали:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
Sub Макрос1()


  Dim R1 As Range
  Dim k, n As Integer
  f1 = "C:\Test"
 
  n =  1 
  Set R1 = Range("A" + CStr(n))
  Do
  
  Open f1 + "\" + R1.Text + ".txt" For Output As # 1 
  
  n = n +  1 
  Set R1 = Range("A" + CStr(n))
  Print # 1 , R1.Text
  n = n +  1 
   Set R1 = Range("A" + CStr(n))
  Print # 1 , R1.Text
  n = n +  1 
   Set R1 = Range("A" + CStr(n))
  Print # 1 , R1.Text
  n = n +  1 
  Set R1 = Range("A" + CStr(n))
  Print # 1 , R1.Text
  n = n +  1 
  Close # 1 
  Set R1 = Range("A" + CStr(n))
  Loop While R1.Text <> ""
  End Sub

Данные:
А1-название директории
B1-название файла
C1 С уважением
D1 Петр Иванович
E1 тел.м. 5555
F1 тел.р. 6666

И как сделать так, чтобы создавалась еще директория, название которой бралось бы из ячейки А1, куда б копировался созданный файлик, имя которого берется из ячейки B1.
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / импорт данных в TXT
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]