Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
Tanik_muh
Зарегистрирован: 21.05.2007 Сообщения: 8
|
Добавлено: Пн Май 21 2007 16:22 Заголовок сообщения: Вопрос по VBA для Excel |
|
|
У меня такая проблема
пользователи заполняют таблицу на первом листе книги, программа, которую я уже написала, формирует из этой таблицы другую на втором листе примерно такого вида:
А В...
1 ИмяФайла:Пример
2 НомерДок:123**4567890001
3 СвидГР:123456789,001
4 СвидГН:123456789,001
и т.д.
Дальше этот лист сохраняется в файл Пример.txt (MS-DOS)
НО
некоторые строчки Excel, перед тем как отправтить в файл, заковычивает
и получается такая вот ерунда:
ИмяФайла:Пример
НомерДок:123**4567890001
"СвидГР:123456789,001"
"СвидГН:123456789,001"
и т.д.
А мне этот файл нужно дальше отправлять и там эти ковычки никого не радуют
Заранее спасибо |
|
Вернуться к началу |
|
|
критикан
Зарегистрирован: 18.02.2005 Сообщения: 247
|
Добавлено: Вт Май 22 2007 16:07 Заголовок сообщения: инструкция к гиперхронокапсулированному филомедиатангенциалу |
|
|
Open pathname For mode [Access access] [lock] As [#]filenumber [Len=reclength]
mode Required.Keyword specifying the file mode: Append, Binary, Input, Output, or Random
---------------------------
а вы прочитали инструкцию по работе с гиперхронокапсулированным филомедиатангенциалом? |
|
Вернуться к началу |
|
|
Tanik_muh
Зарегистрирован: 21.05.2007 Сообщения: 8
|
Добавлено: Вт Май 22 2007 16:17 Заголовок сообщения: |
|
|
А можно поподробнее.
Я с VBA работаю совсем недавно |
|
Вернуться к началу |
|
|
критикан
Зарегистрирован: 18.02.2005 Сообщения: 247
|
Добавлено: Ср Май 23 2007 08:11 Заголовок сообщения: начинающие программисты -- это те же пользователи, но хуже |
|
|
в вба для вывода информации в файл используются операторы (statement) put, print/print#, write/write#.
операторы print/print# используются для вывода в текстовый файл, пригодный для черновой печати (то есть все значения преобразуются в символьное представление -- выводятся без дополнительных изменений, -- значения выравнены по определённым позициям);
операторы write/write# используются для вывода в текстовый файл формата csv (то есть все значения преобразуются в символьное представление -- выводятся в кавычках -- или числовое -- выводятся без дополнительных изменений, -- значения разделены заданным разделителем -- обычно запятая/табуляция/точка с запятой);
оператор put используется для вывода в файл, предназначенный для последующего чтения программами (если это двоичный -- binary -- файл, то значения выводятся во внутреннем представлении, если это текстовый -- без указания binary, но с указанием random -- файл, то значения выводятся во внутреннем представлении с дополнительной информацией о типе)
но вообще говоря, есть специальный объект работы с внешним файлом
-----------------
начинающие программисты -- это те же пользователи, только гораздо хуже |
|
Вернуться к началу |
|
|
Tanik_muh
Зарегистрирован: 21.05.2007 Сообщения: 8
|
Добавлено: Чт Май 24 2007 08:06 Заголовок сообщения: |
|
|
Что-то у меня совсем ум за разум походу....
Все эти Put, Write и Print работают просто супер, все записывают, без всяких кавычек. Но формат текста не MS-DOS.
Там когда открываешь файл по F3, зайти в пункт меню Вид, то галочка стоит у пункта
ANSI (кодировка Windows) A
а нужно, чтобы стояла галочка у
ANSI (кодировка DOS) S |
|
Вернуться к началу |
|
|
Tanik_muh
Зарегистрирован: 21.05.2007 Сообщения: 8
|
Добавлено: Чт Май 24 2007 08:10 Заголовок сообщения: |
|
|
я извиняюсь за неточность
я хотела сказать что файл будет читаться, если галочку поставить на ANSI (кодировка DOS) |
|
Вернуться к началу |
|
|
Tanik_muh
Зарегистрирован: 21.05.2007 Сообщения: 8
|
Добавлено: Чт Май 24 2007 08:41 Заголовок сообщения: |
|
|
Короче сама нашла!!!
Если кому интересно, то привожу ниже
Значит вначале нужно объявить
Public Declare Function CharToOem Lib "user32" Alias "CharToOemA" (ByVal lpszScr As String, ByVal lpszDst As String) As Long
Потом написать фукцию перевода в кодировку DOS
Function ANSITOOEM(ByVal sAnsi As String) As String
Dim sOem As String
sOem = String(Len(sAnsi), Chr(0))
CharToOem sAnsi, sOem
ANSITOOEM = sOem
End Function
А потом вызвать ее где-нить в процедуре
Sub Zap
ChDir "C:\"
Open "testfile.txt" For Output As #1
For t = 1 To 42
k = Cells(t, 1).Value
p = ANSITOOEM(k)
Print #1, p
Next t
Close #1
End Sub
И все |
|
Вернуться к началу |
|
|
критикан
Зарегистрирован: 18.02.2005 Сообщения: 247
|
Добавлено: Чт Май 24 2007 19:44 Заголовок сообщения: - |
|
|
++++++++
Последний раз редактировалось: критикан (Чт Май 24 2007 20:10), всего редактировалось 1 раз |
|
Вернуться к началу |
|
|
критикан
Зарегистрирован: 18.02.2005 Сообщения: 247
|
Добавлено: Чт Май 24 2007 19:54 Заголовок сообщения: to fuck=to programme & to be fucked=to programme with basic |
|
|
ведь могут, когда хотят! (c)
----------------
to fuck means to programme and to be fucked means to programme with basic. К дамам это не относится, равно как и мои предыдущие сентенции |
|
Вернуться к началу |
|
|
Tanik_muh
Зарегистрирован: 21.05.2007 Сообщения: 8
|
Добавлено: Пт Май 25 2007 07:29 Заголовок сообщения: |
|
|
критикан: все хотела тебе сказать: нежнее надо, еще нежнее! |
|
Вернуться к началу |
|
|
|