Excel — Каков следующий шаг после #import при использовании Scripting.FileSystemObject в C ++?

Контекст: Windows 7, XLW 5.x, Microsoft Excel 2007, Visual Studio 2010, C ++

Учитывая следующий бит кода …

#import "c:\windows\system32\scrrun.dll" raw_interfaces_only, \
raw_native_types, \
named_guids, \
rename("DeleteFile", "_DeleteFile"), \
rename("MoveFile","_MoveFile"), \
rename("CopyFile", "_CopyFile"), \
rename("GetFreeSpace", "_GetFreeSpace")
using namespace Scripting;

Как мне теперь создать экземпляр FileSystemObject и вызвать его методы?

0

Решение

Это сработало для меня

std::wstring fileExists(std::wstring name)
{
VARIANT_BOOL b = 0;
::CoInitialize(NULL);
{
CComPtr<IFileSystem> spFSO;
HRESULT hr = spFSO.CoCreateInstance(L"Scripting.FileSystemObject");
if (SUCCEEDED(hr) && spFSO)
{
BSTR theName = SysAllocStringLen( name.data(), name.size());
hr = spFSO->FileExists(theName, &b);
}
}
::CoUninitialize();
return (b == -1) ? L"Exists" : L"Doesn't exist";
}

По крайней мере, это меня связало с функциональностью. Есть все еще правильное решение для ситуации, но это выходит за рамки публикации.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]