Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2008.01.27;
Скачать: [xml.tar.bz2];

Вниз

Скрыть Excel   Найти похожие ветки 

 
Ega23 ©   (2007-12-26 13:39) [0]

uses Excel2000;
Задача: тихо просмотреть у некоего Excel-файла (или группы файлов) некоторые атрибуты.
Проблема: если на файле стоит пароль на открытие, то запускается оболочка Excel, возникает окошко для ввода пароля, и открытие происходит только после введения пароля, что не нужно.
Собственно вопрос: можно ли узнать TExcelWorkbook.HasPassword без запуска оболочки Excel?


 
clickmaker ©   (2007-12-26 13:45) [1]


>  Ega23 ©   (26.12.07 13:39)

так пока Visible не поставишь, он же и не покажется, разве нет?


 
Ega23 ©   (2007-12-26 13:51) [2]


procedure TFMain.Button1Click(Sender: TObject);
var
 XLApp: TExcelApplication;
 WB: TExcelWorkbook;
 ss :string;
const LCID = LOCALE_USER_DEFAULT;
begin
 if not OpenDlg.Execute then Exit;
 XLApp := TExcelApplication.Create(nil);
 WB := TExcelWorkbook.Create(nil);
 try
   WB.ConnectTo(XLApp.Workbooks.Add(OpenDlg.FileName, LCID));
   if WB.HasPassword[LCID] then
     ss := "HasPassword"
   else
     ss := "not HasPassword";
   Memo1.Lines.Add(ss);
 finally
   XLapp.Quit;
   WB.Free;
   XLapp.Free;
 end;

end;


если пароля нет - всё ОК
если есть -
На WB.ConnectTo  - открывается Excel, появляется окно ввода пароля. После введения - всё ОК.


 
clickmaker ©   (2007-12-26 13:57) [3]

TWorkbook.Unprotect?


 
Ega23 ©   (2007-12-26 14:08) [4]


> TWorkbook.Unprotect?


А чем это поможет? Речь не о методе Protect/Unprotect, речь о пароле на файл (Файл - Сохранить как - Сервис - Общие Параметры - Пароль для открытия файла)

Вот мне, грубо говоря, нужно узнать - запаролен ли данный файл, или нет.


 
clickmaker ©   (2007-12-26 14:12) [5]

function Open(const Filename: WideString; UpdateLinks: OleVariant; ReadOnly: OleVariant;
                 Format: OleVariant; Password: OleVariant; WriteResPassword: OleVariant;
                 IgnoreReadOnlyRecommended: OleVariant; Origin: OleVariant; Delimiter: OleVariant;
                 Editable: OleVariant; Notify: OleVariant; Converter: OleVariant;
                 AddToMru: OleVariant; lcid: Integer): ExcelWorkbook; safecall;

не оно?


 
Ega23 ©   (2007-12-26 14:13) [6]

Так не известен пароль-то.  :)
Если документ запаролен - так и отписать "Данный документ запаролен на открытие"
Если нет - начать собирать атрибуты дальше.


 
clickmaker ©   (2007-12-26 14:21) [7]


> [6] Ega23 ©   (26.12.07 14:13)

а, всё, понял.
Прибить запрос пароля, короче.

Application.Interactive := False
Application.DisplayAlerts := False
не помогут?


 
Ega23 ©   (2007-12-26 14:27) [8]


> не помогут?


Не помогают...
Блин, неужели всё-таки по смещению искать придётся???


 
clickmaker ©   (2007-12-26 14:48) [9]

как вариант. Можно еще код Exception проверять, на то, что это именно неверный пароль, а не ошибка открытия файла

try
    XLApp.Workbooks.Open(OpenDlg.FileName, EmptyParam, EmptyParam,
      EmptyParam, "***", EmptyParam, EmptyParam, EmptyParam,
      EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam,
      EmptyParam, EmptyParam, LCID);
  except
    Memo1.Lines.Add("Has password");
    Exit;
  end;


 
Ega23 ©   (2007-12-26 14:50) [10]


> как вариант. Можно еще код Exception проверять, на то, что
> это именно неверный пароль, а не ошибка открытия файла


А если это именно ошибка открытия файла?  :)


 
Ega23 ©   (2007-12-26 14:51) [11]

Короче, эти exception-ы (Ошибка открытия и Неверный пароль) как-то различить можно?


 
clickmaker ©   (2007-12-26 14:57) [12]

хм... ErrorCode у них один. Разве что по Message, учитывая язык )


 
Ega23 ©   (2007-12-26 14:58) [13]


> хм... ErrorCode у них один. Разве что по Message, учитывая
> язык )


Мрачно.
А насколько корректно по структуре файла искать? Ведь, насколько я понимаю, сильно от формата файла будет зависеть. Точнее, от версии Excel



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2008.01.27;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.006 c
15-1198354859
I
2007-12-22 23:20
2008.01.27
Художественная литература на английском


4-1182417999
o6619
2007-06-21 13:26
2008.01.27
IContextMenu


2-1198780216
art36
2007-12-27 21:30
2008.01.27
Мастера! Скажите, как загрузить иконку сайта?


2-1199317113
Pesad
2008-01-03 02:38
2008.01.27
Пропорциональный вывод изображения на екран


1-1193126736
Prohodil Mimo
2007-10-23 12:05
2008.01.27
TMonthCalendar - как определить click на день





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский