summaryrefslogtreecommitdiff
path: root/oox
diff options
context:
space:
mode:
authorMarkus Mohrhard <markus.mohrhard@googlemail.com>2015-08-17 19:05:59 +0200
committerMarkus Mohrhard <markus.mohrhard@googlemail.com>2015-09-10 02:12:39 +0200
commitcb2fadd35e2834a16c93c677fb3d0b2a39adb738 (patch)
tree3608373f474709e0d3091a67b920d294b1690b64 /oox
parent2846de32e6a38023d584dee843230b1806bf8dba (diff)
export the vba OLE container correctly
Change-Id: Ic4b0db9dc69079be4ebe686d0c7a8edc91c41fa5
Diffstat (limited to 'oox')
-rw-r--r--oox/source/ole/vbaexport.cxx19
1 files changed, 14 insertions, 5 deletions
diff --git a/oox/source/ole/vbaexport.cxx b/oox/source/ole/vbaexport.cxx
index 4c276036aa42..619c82050f39 100644
--- a/oox/source/ole/vbaexport.cxx
+++ b/oox/source/ole/vbaexport.cxx
@@ -19,6 +19,8 @@
#include "oox/helper/propertyset.hxx"
#include "oox/token/properties.hxx"
+#include <sot/storage.hxx>
+
#define USE_UTF8_CODEPAGE 0
#if USE_UTF8_CODEPAGE
#define CODEPAGE_MS 65001
@@ -592,6 +594,14 @@ void exportDirStream(SvStream& rStrm)
void VbaExport::exportVBA()
{
// start here with the VBA export
+
+ const OUString aVbaStreamLocation("/tmp/vba_out.bin");
+ SvFileStream aVbaStream(aVbaStreamLocation, STREAM_READWRITE);
+
+ tools::SvRef<SotStorage> aStorage(new SotStorage(aVbaStream));
+ SotStorage* pVBAStream = aStorage->OpenSotStorage("VBA", STREAM_READWRITE);
+ SotStorageStream* pDirStream = pVBAStream->OpenSotStream("dir", STREAM_READWRITE);
+
const OUString aDirFileName("/tmp/vba_dir_out.bin");
SvFileStream aDirStream(aDirFileName, STREAM_READWRITE);
@@ -601,12 +611,9 @@ void VbaExport::exportVBA()
aDirStream.Seek(0);
SvMemoryStream aMemoryStream(4096, 4096);
- OUString aCompressedFileName("/tmp/vba_dir_out_compressed.bin");
- SvFileStream aCompressedStream(aCompressedFileName, STREAM_READWRITE);
-
aMemoryStream.WriteStream(aDirStream);
- VBACompression aCompression(aCompressedStream, aMemoryStream);
+ VBACompression aCompression(*pDirStream, aMemoryStream);
aCompression.write();
css::uno::Reference<css::container::XNameContainer> xNameContainer = getBasicLibrary();
@@ -620,7 +627,9 @@ void VbaExport::exportVBA()
css::script::ModuleInfo aModuleInfo = xModuleInfo->getModuleInfo(aElementNames[i]);
SAL_DEBUG(aModuleInfo.ModuleType);
}
-
+ pDirStream->Commit();
+ pVBAStream->Commit();
+ aStorage->Commit();
}
css::uno::Reference<css::container::XNameContainer> VbaExport::getBasicLibrary()