Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Выгрузка из Эксель в текстовый документ без разделителей... / 14 сообщений из 14, страница 1 из 1
16.04.2010, 13:54
    #36582440
igoryava
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выгрузка из Эксель в текстовый документ без разделителей...
Вобщем есть макрос, который берет ДБФ-файл, вытягивает оттуда таблицу в Эксель и с Экселя сохраняет файл в текстовый. Когда открываю полученый текстовый файл (в Фаре), то разделителем столбцов(бывших) являеться Таб. Как сделать так, чтоб при экспорте в текстовый формат строчки были без разделителей (т.е. чтоб были одни пробелы)????


Вот на всякий случай тело макроса: ....

Код: 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.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
156.
157.
158.
159.
160.
161.
162.
163.
164.
165.
166.
167.
168.
169.
170.
171.
172.
173.
174.
175.
176.
177.
178.
179.
180.
181.
182.
183.
184.
185.
186.
187.
188.
189.
190.
191.
192.
193.
194.
Private Sub CommandButton1_Click()
If (Trim(TextBox1.Text) = "" Or Trim(TextBox2.Text) = "" Or Trim(TextBox3.Text) = "") Then
    MsgBox ("Не заданы некоторые !!! ТЕКСТОВЫЕ ДАННЫЕ !!!")
    Exit Sub
End If
If (OptionButton1.Value = True) Then
    TextBox6.Text = ComboBox1.Text + " за " + ComboBox2.Text + " мiсяць " + Str(DTPicker2.Year) + " року"
    UserForm1.CommonDialog1.Filename = UserForm1.TextBox5.Text
    Workbooks.Open Filename:=UserForm1.CommonDialog1.Filename
    A1 = Trim(UserForm1.CommonDialog1.Filename)
    a2 = Len(A1)
    i = a2
    fr = True
    While (fr)
        If (i <>  0 ) Then
            a3 = Left(A1, i)
            If (Mid(a3, Len(a3)) = ".") Then
                a4 = Len(a3)
            ElseIf (Mid(a3, Len(a3)) = "\") Then
                a5 = Len(a3)
                fr = False
            End If
            i = i -  1 
        Else
            fr = False
        End If
    Wend
    a6 = Mid(A1, a5 +  1 , a4 -  1  - a5)
    Sheets(a6).Select
    fr = True
    i =  2 
    k = "F" + Trim(Str(i))
    While (fr)
        If (Range(k).Text <> "") Then
            A1 = Range(k).Text *  100 
            Range(k).Value = A1
            Range(k).Select
            Selection.NumberFormat = "0"
            i = i +  1 
            k = "F" + Trim(Str(i))
        Else
            fr = False
        End If
    Wend
    Sheets.Add
    Sheets(a6).Select
    Rows("1:1").Select
    Selection.Delete Shift:=xlUp
    Columns("G:G").Select
    Selection.Copy
    Sheets("Лист1").Select
    Columns("A:A").Select
    ActiveSheet.Paste
    Sheets(a6).Select
    Columns("E:E").Select
    Application.CutCopyMode = False
    Selection.Copy
    Sheets("Лист1").Select
    Columns("B:B").Select
    ActiveSheet.Paste
    Sheets(a6).Select
    Columns("F:F").Select
    Application.CutCopyMode = False
    Selection.Copy
    Sheets("Лист1").Select
    Columns("C:C").Select
    ActiveSheet.Paste
    Rows("1:1").Select
    Application.CutCopyMode = False
    Selection.Insert Shift:=xlDown
    Range("A1").Select
    ActiveCell.FormulaR1C1 = "ВЕДОМОСТЬ"
    Range("B1").Select
    ActiveCell.FormulaR1C1 = Trim(TextBox1.Text)
    Range("C1").Select
    Sheets(a6).Select
    Range("D2").Select
    Sheets("Лист1").Select
    ActiveCell.FormulaR1C1 = "='" + a6 + "'!R[1]C[1]"
    Selection.NumberFormat = "0"
    Range("D1").Select
    ActiveCell.FormulaR1C1 = Trim(TextBox2.Text)
    Selection.NumberFormat = "0"
   Range("E1").Select
    ActiveCell.FormulaR1C1 = Trim(TextBox3.Text)
    Selection.NumberFormat = "0"
    Range("F1").Select
    ActiveCell.FormulaR1C1 = Trim(DTPicker1.Value)
    Selection.NumberFormat = "General"
fr = True
ddd =  0 
ddd1 =  0 
    i =  2 
    k = "D" + Trim(Str(i))
    k1 = "C" + Trim(Str(i))
    k2 = "A" + Trim(Str(i))
    k3 = "B" + Trim(Str(i))
    While (fr)
        If (Trim(Range(k1).Text) <> "") Then
            If (Trim(Range(k2).Text) <> "" And Trim(Range(k3).Text) <> "") Then
                Range(k).FormulaR1C1 = TextBox6.Text 'Здесь может быть основание платежа
                ddd1 = ddd1 +  1 
                ddd = ddd + Range(k1).Value
                i = i +  1 
                k = "D" + Trim(Str(i))
                k1 = "C" + Trim(Str(i))
                k2 = "A" + Trim(Str(i))
                k3 = "B" + Trim(Str(i))
            Else
                Rows(Trim(Str(i)) + ":" + Trim(Str(i))).Select
                Selection.Delete Shift:=xlUp
            End If
        Else
            fr = False
        End If
    Wend
    Range("G1").Select
    ActiveCell.FormulaR1C1 = ddd
    Selection.NumberFormat = "0"
    Range("C1").Select
    ActiveCell.FormulaR1C1 = ddd1
    Selection.NumberFormat = "0"
    q = MsgBox("Общее количество платежей - " + Trim(Str(ddd1)) + ", общая сумма - " + Trim(Str(ddd /  100 )), vbInformation, "Результат по " + Trim(Str(a6)) + ".dbf")
   
A1:
    CommonDialog1.Filename = ActiveWorkbook.Path + "\" + a6 + ".txt"
    CommonDialog1.Filter = "*.txt"
    CommonDialog1.ShowSave
    If (CommonDialog1.Filename = ".txt") Then
        GoTo A1
    Else
        If (CommonDialog1.Filename <> "*.txt") Then ActiveWorkbook.SaveAs Filename:=CommonDialog1.Filename, _
        FileFormat:=xlTextMSDOS, CreateBackup:=False
    End If
    Windows(a6 + ".txt").Activate
    ActiveWindow.Close (False)
    a8 = a6 + ".txt"
    a9 = ActiveWorkbook.Path + "\zagruzka.bat " + a8 + " " + ActiveWorkbook.Path
    q = Shell(a9, vbMaximizedFocus)
    CommonDialog1.Filename = ""
ElseIf (OptionButton2.Value = True) Then
    Shell (ActiveWorkbook.Path + "\zagruzka.bat" + a8)
    MsgBox ActiveWorkbook.Path
    'здесь идет информация если ВЫГРУЗКА идет в ЭКСЕЛ
End If
End Sub

Private Sub CommandButton2_Click()
CommonDialog1.Filename = ActiveWorkbook.Path + "\" + "*.dbf"
CommonDialog1.Filter = "*.dbf"
CommonDialog1.ShowOpen
If (CommonDialog1.Filename = "*.dbf") Then
    TextBox5.Text = ""
    CommandButton1.Enabled = False
Else
    TextBox5.Text = CommonDialog1.Filename
    CommandButton1.Enabled = True
End If
End Sub

Private Sub CommandButton3_Click()
TextBox6.Text = ComboBox1.Text + " за " + ComboBox2.Text + " мiсяць " + Str(DTPicker2.Year) + " року"
End Sub

Private Sub DTPicker1_CallbackKeyDown(ByVal KeyCode As Integer, ByVal Shift As Integer, ByVal CallbackField As String, CallbackDate As Date)

End Sub

Private Sub TextBox2_Change()

End Sub

Private Sub TextBox3_Change()

End Sub

Private Sub UserForm_Activate()
DTPicker1.Value = Date
ComboBox1.AddItem "Пенсiя "
ComboBox1.AddItem "Допомога "
ComboBox1.ListIndex =  0 
ComboBox2.AddItem "Сiчень"
ComboBox2.AddItem "Лютий"
ComboBox2.AddItem "Березень"
ComboBox2.AddItem "Квiтень"
ComboBox2.AddItem "Травень"
ComboBox2.AddItem "Червень"
ComboBox2.AddItem "Липень"
ComboBox2.AddItem "Серпень"
ComboBox2.AddItem "Вересень"
ComboBox2.AddItem "Жовтень"
ComboBox2.AddItem "Листопад"
ComboBox2.AddItem "Грудень"
ComboBox2.ListIndex =  0 
End Sub
...
Рейтинг: 0 / 0
16.04.2010, 20:10
    #36583188
PlanB
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выгрузка из Эксель в текстовый документ без разделителей...
разбираться в вашем динозавре желания не возникает, глядя на размер =))) однако, есть мнение, что при выгрузке из excel кроме как через пробел инфу в текстовик не вытащить: как-то столбцы-то должны различаться.

замените в текстовике tab на пробелы, дописав макрос в рекордере, и будет вам счастье.
...
Рейтинг: 0 / 0
16.04.2010, 22:38
    #36583302
Hugo121
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выгрузка из Эксель в текстовый документ без разделителей...
Есть же ещё сохранение в prn - там нет табов, но зато куча пробелов:
Код: plaintext
1.
        1         2 
        3         4 
...
Рейтинг: 0 / 0
19.04.2010, 17:55
    #36586170
igoryava
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выгрузка из Эксель в текстовый документ без разделителей...
PlanB,

>замените в текстовике tab на пробелы, дописав макрос в рекордере, и будет вам счастье.

Так а какой макрос дописать и куда именно?

P.S. Вы уж не серчайте, просто я в программировании пока не силен)). Мне дали макрос не доделаный и сказали сделай)).
...
Рейтинг: 0 / 0
19.04.2010, 18:22
    #36586235
PlanB
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выгрузка из Эксель в текстовый документ без разделителей...
igoryavaМне дали макрос не доделаный и сказали сделай)).да, знакомая ситуация =))) а так и учатся...igoryavaТак а какой макрос дописать и куда именно?ну, где в текстовик вываливаете, там и допишите. а как символ tab заменить на пробел, вы уж сами поищите =))
работа с текстовыми файлами, в целом, сводится к простому циклу по строкам.
что-то вроде
авторdo while not eof(дискриптор)
loopэто аналогично
авторfor i=1 to n
next iтолько вместо неизвестного n - кол-во строк файла (EOF = EndOfFile). дискриптор - идентификатор, который присваивается файлу при открытии.
внутри цикла запихайте замену ф-цией Replace()

ps: почитайте про работу со строковыми выражениями в VB прям в гугле...
...
Рейтинг: 0 / 0
23.04.2010, 16:15
    #36595242
igoryava
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выгрузка из Эксель в текстовый документ без разделителей...
PlanB,

Блин, вообще скоро голова расколется((...Может еще какие подказки будут?
...
Рейтинг: 0 / 0
23.04.2010, 16:46
    #36595359
Hugo121
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выгрузка из Эксель в текстовый документ без разделителей...
igoryava,
prn не пробовали?:
Код: plaintext
1.
2.
 If (CommonDialog1.Filename <> "*.txt") Then ActiveWorkbook.SaveAs Filename:=CommonDialog1.Filename, _
        FileFormat:=xlTextPrinter, CreateBackup:=False
на выходе что-то такое будет, но без табов:
Код: plaintext
1.
2.
3.
4.
        1 
        2 
        3 
        1         2         3 
...
Рейтинг: 0 / 0
24.04.2010, 12:48
    #36596133
Thermik
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выгрузка из Эксель в текстовый документ без разделителей...
авторВобщем есть макрос, который берет ДБФ-файл, вытягивает оттуда таблицу в Эксель и с Экселя сохраняет файл в текстовый. Когда открываю полученый текстовый файл (в Фаре), то разделителем столбцов(бывших) являеться Таб. Как сделать так, чтоб при экспорте в текстовый формат строчки были без разделителей (т.е. чтоб были одни пробелы)????




Еще раз открыть файл, заменить ТАВ на пробелы и сохранить снова.
...
Рейтинг: 0 / 0
26.04.2010, 15:34
    #36598703
igoryava
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выгрузка из Эксель в текстовый документ без разделителей...
Thermik

Еще раз открыть файл, заменить ТАВ на пробелы и сохранить снова.

Так а если 1500 строк, то в каждой стоке убирать Табы?)))
...
Рейтинг: 0 / 0
26.04.2010, 16:02
    #36598768
Hugo121
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выгрузка из Эксель в текстовый документ без разделителей...
igoryava, у Вас AT386? :)
...
Рейтинг: 0 / 0
26.04.2010, 16:17
    #36598820
igoryava
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выгрузка из Эксель в текстовый документ без разделителей...
И еще... Я макрос запускаю на Win2000 SP4, а на ХР работает так, как надо...Что это может быть?
...
Рейтинг: 0 / 0
26.04.2010, 16:25
    #36598840
Gwa
Gwa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выгрузка из Эксель в текстовый документ без разделителей...
igoryavaВобщем есть макрос, который берет ДБФ-файл, вытягивает оттуда таблицу в Эксель ..


Excel открывает dbf-файл без всяких макросов
...
Рейтинг: 0 / 0
26.04.2010, 16:32
    #36598860
igoryava
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выгрузка из Эксель в текстовый документ без разделителей...
Gwa,
Просто макросом все автоматизировано, чтобы делать все экспорты одним махом)
...
Рейтинг: 0 / 0
27.04.2010, 10:44
    #36600066
PlanB
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выгрузка из Эксель в текстовый документ без разделителей...
igoryavaThermik

Еще раз открыть файл, заменить ТАВ на пробелы и сохранить снова.

Так а если 1500 строк, то в каждой стоке убирать Табы?)))ДА, я за написал как...прочитайте про работу со стораками, это самые азы...потом пригодится
...
Рейтинг: 0 / 0
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Выгрузка из Эксель в текстовый документ без разделителей... / 14 сообщений из 14, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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