Страницы: 1
RSS
Создание текстового файла в нужной кодировке
 
Есть таблица которая макросом создает текстовый файл, но не в той кодировке.  
Нужна кодировка MS-DOS.  
 
На форуме подходящего решения не нашел, или применить правильно не смог...
 
Я в свое время решил этот вопрос сторонней программой fDosWin    
http://useful.orgfree.com/fdoswin.html  
 
К примеру создал макросом некий текстовый файл:  
 
MyMask = "Диск:\Путь"  
fName = "m" & Format(Date, "mmdd") & "_"  & "." & Format(i, "000") ' файл должен иметь вид m1907_.001  
   Open MyMask & fName For Output As #1  
   Print #1, Format(Now, "yy/mm/dd hh:mm:ss")    
   Print #1, ""  
   Print #1, ""  
   Print #1, sendOduData ' заранее подготовленная текстовая переменная на ~дцать МБ ;)  
   Close #1  
     
   FullNameToOdu = Chr(34) & MyMask & fName & Chr(34) ' Обращаем внимание на необходимость кавычек: Chr(34) - в пути/имени могут быть пробелы и проч.  
 
' теперь вызываем fDosWin    
fDosWin = "Диск:\Путь к fDosWin\" & "fdoswin.exe /dos /off " & FullNameToOdu  
   Y = Shell(fDosWin)  
 
на выходе имеем файл в кодировке 866 (DOS) живущий по адресу FullNameToOdu  
Работает с 2007 г. ежедневно.  
 
ЗЫ Ваш файл не смотрел
Bite my shiny metal ass!      
 
Спасибо, но данный вариант не подходит, в силу невозможности устновки сторонних программ.
 
fDosWin не требует установки
Bite my shiny metal ass!      
 
У нас администрация пресекает сторонний софт.  
Хотелось бы решить эту роблему внутренними средствами Excel.
 
Дык, а так?  
Sub Макрос1()  
   ActiveWorkbook.SaveAs Filename:="E:\AP\POFF_.txt", FileFormat:=xlTextMSDOS _  
       , local:=-1  
End Sub
Я сам - дурнее всякого примера! ...
 
Это пройденный материал, так тоже не подходит. Я с "FileFormat" мутил по разному.  
Откройте файл и посмотрите как работает макрос и что я хочу.  
 
Код:  
 
Public NameExcelFile As String  
 
Sub CreateTXT()  
 
' ActiveWorkbook.Save  
   
Dim i, j, NumFile, MaxRows, MaxCols As Integer  
Dim OutStr As String  
 
 i = 10  
 While Worksheets("Данные").Cells(i, 1).Value <> ""  
   i = i + 1  
 Wend  
 MaxRows = i - 1  
   
 i = 1  
 While Worksheets("Данные").Cells(10, i).Value <> ""  
   i = i + 1  
 Wend  
 MaxCols = i - 1  
   
   
 Filename = "POFF_1_.txt"  
   
 'FileFormat:=xlTextMSDOS _  
      , CreateBackup:=False  
   
         
 Filename = Mid(Filename, 1, InStr(1, Filename, ".", 0) + 3)  
   
   
 NumFile = FreeFile()  
 
 Open "E:\AP\" + Filename For Output As #NumFile  
   
 For i = 1 To MaxRows  
   For j = 1 To MaxCols  
     If CStr(Worksheets("Данные").Cells(i, j).Value) <> "" Then  
       If Worksheets("Данные").Cells(i, j).NumberFormatLocal = "0%" Then  
         OutStr = OutStr + CStr(Worksheets("Данные").Cells(i, j).Value * 100) + "% "  
       Else  
         OutStr = OutStr + CStr(Worksheets("Данные").Cells(i, j).Value) + ","  
       End If  
     End If  
   Next  
   If OutStr <> "" Then  
     OutStr = Mid(OutStr, 1, Len(OutStr) - 1)  
     Print #NumFile, OutStr  
     OutStr = ""  
   End If  
 Next  
   
 Close #NumFile  
 MsgBox ("Файл E:\AP\" + Filename + " создан!")  
 
End Sub
 
В силу того, что компьютер слабый или что-то ещё (не админ и копаться в этом не собираюсь), иные большие xls - файлы не выгружаются из 1С. Посему эскпортирую в формате *.тхт но в Access. А оттуда уже, без проблем получаю нужную картинку в *.xls. При этом на выходе из Access_а можно создать дополнительные фильтра, что в конечном файле приведет к меньшим манипуляциям. Нужны подробности..?
"..Сладку ягоду рвали вместе, горьку ягоду я одна."
 
IronAnry, я не про FileFormat писал. Вы попробуйте мой вариант и отпишитесь.
Я сам - дурнее всякого примера! ...
 
В данном примере, конечно же, достаточно варианта от KukLP, а если потом когда-нибудь понадобятся другие кодировки, можете воспользоваться этими функциями:   
 
http://excelvba.ru/code/encode
 
Всем спасибо за помощь, вот найденное решение, может кому пригодится:  
[Код ниже в текстовом файле]
 
Так хуже?
 
Никто конечно, никому не запрещает одевать трусы через голову, но я взял и сохранил файл ТС своим макросом от 20.07.2012, 17:45. См. скрин.
Я сам - дурнее всякого примера! ...
 
А это сам сохраненный файл.
Я сам - дурнее всякого примера! ...
Страницы: 1
Читают тему
Наверх
Loading...