Вы должны указать файл как ресурс. Скажем, у вас есть blah.xls
Создать blah.rc
файл со следующим содержимым
blah RCDATA blah.xls
скомпилировать его с компилятором ресурсов в blah.res
встраивать файл RES в исполняемом
{$R 'blah.res'}
в коде приложения, извлеките файл и запустите его с помощью этого кода
procedure ExtractAndRun(resourceID:string; resourceFn:string);
var
resourceStream: TResourceStream;
fileStream: TFileStream;
tempPath: string;
fullFileName: string;
begin
tempPath:=GetTempDir;
FullFilename:=TempPath+'\'+resourceFN;
if not FileExists(FullFilename) then
begin
resourceStream := TResourceStream.Create(hInstance, resourceID, RT_RCDATA);
try
fileStream := TFileStream.Create(FullFilename, fmCreate);
try
fileStream.CopyFrom(resourceStream, 0);
finally
fileStream.Free;
end;
finally
resourceStream.Free;
end;
end;
ShellExecute(0,'open', pchar(FullFilename), nil, nil, SW_SHOWNORMAL);
end;
вам придется добавить ShellAPI в вашей статье изеза
может быть, вы будете нуждаться в этом GetTempDir функции
function GetTempDir: string;
var
Buffer: array[0..MAX_PATH] of char;
begin
GetTempPath(SizeOf(Buffer) - 1, Buffer);
result := StrPas(Buffer);
end;
вызывать функцию как этот
extractAndRun('blah','blah.xls');
Я нахожусь не уверен, что вы спрашиваете. Вы можете уточнить свой вопрос? У вас есть это сейчас, извлекая ресурс из .exe, а затем используя CreateOleObject и Open вызовы, чтобы открыть его в Excel? Если да, то почему вы хотите внести изменения. – RobertFrank
Я добавляю данные из программы, предположительно, до того, как пользователь взаимодействует с листом, но я действительно не знал, как передать ресурс другим объектам. Благодаря! –