powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Вопрос по Excel
5 сообщений из 5, страница 1 из 1
Вопрос по Excel
    #32328126
chkalov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть ли функция для программного открытия текстового файла и преобразования его в таблицу (разделитель - пробел, табуляция), вообщем подобное мастеру текстов
...
Рейтинг: 0 / 0
Вопрос по Excel
    #32328141
chkalov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Функция -то такая есть (я нашел уже), но она открывает и новый документ, а как сделать чтобы открывался новый лист, а не документ?
...
Рейтинг: 0 / 0
Вопрос по Excel
    #32328622
ZrenBy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Например так
Код: 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.
procedure U_PasteFromFile(WSheet:Variant; Range:Variant; FileName:String);
var hMem  : THandle;
    hFile : THandle;
    nSize : Integer;
    P     : PChar;
begin
  hFile := FileOpen(FileName,fmOpenRead);
  try
    nSize := FileSeek(hFile, 0 , 2 );
    FileSeek(hFile, 0 , 0 );
    hMem := GlobalAlloc(GMEM_MOVEABLE+GMEM_DDESHARE, nSize+ 1 );
    try
      P := GlobalLock(hMem);
      try
        nSize := FileRead(hFile,P^,nSize); P[nSize] := # 0 ;
        OpenClipboard( 0 );
        try
          EmptyClipboard;
          SetClipBoardData(Windows.CF_TEXT, hMem);
        finally
          CloseClipBoard;
        end;
      finally
        GlobalUnLock(hMem);
      end;
    finally
      GlobalFree(hMem);
    end;
  finally
    FileClose(hFile);
  end;

  try
    WSheet.Select;
    Range.Select;
    WSheet.PasteSpecial(Windows.CF_TEXT);
    Range.Select;
  except end;

  OpenClipboard( 0 );
  try
    EmptyClipboard;
  finally
    CloseClipboard;
  end;
end;

Код: plaintext
1.
2.
3.
4.
5.
6.
 . . .
    WSheet := MSExcel.ActiveWorkBook.WorkSheets.Add;

    U_PasteFromFile(WSheet,WSheet.Range['A1'],sFile1);
    U_PasteFromFile(WSheet,WSheet.Range['A'+IntToStr(nPos+ 2 )],sFile2);
 . . .
...
Рейтинг: 0 / 0
Вопрос по Excel
    #32328661
Processor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Чаще всего импортированный текстовый файл нуждается в доработке напильником. Кроме того, корешок листа (Worksheets(1).Name) называется так же, как и исходный файл.
После доработки лист копируешь в нужное место имеющейся книги:
а) проверяешь на несовпадение имени вставляемого листа с именами листов целевой книги;
б) выполняешь код:
Код: plaintext
wbS.Sheets( 1 ).Copy After:=wbD.Sheets(i)

где:
wbS - книга с импортированным (текстовым) файлом. Содержит 1 лист;
wbD - целевая книга;
i - номер листа в целевой книге, после (After) которого (или перед - тогда, соответственно, Before) надо вставить исходный лист.
Вариант .Move не проходит: в книге д.б. по крайней мере один лист;
в) закрываешь wbS БЕЗ СОХРАНЕНИЯ.
...
Рейтинг: 0 / 0
Вопрос по Excel
    #32330105
chkalov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Thanks very much
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Вопрос по Excel
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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