diff --git a/.gitignore b/.gitignore index a2f452a4..a71d269a 100644 --- a/.gitignore +++ b/.gitignore @@ -23,3 +23,4 @@ lib/ source.zip 7za.exe .backup/ +*.tmp_proj diff --git a/Tests/Properties/AssemblyInfo.cs b/Tests/Properties/AssemblyInfo.cs index f92060c9..e98e3166 100755 --- a/Tests/Properties/AssemblyInfo.cs +++ b/Tests/Properties/AssemblyInfo.cs @@ -49,5 +49,5 @@ // You can specify all the values or you can default the Build and Revision Numbers // by using the '*' as shown below: // [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("7.1.2.0")] -[assembly: AssemblyFileVersion("7.1.2.0")] +[assembly: AssemblyVersion("7.1.3.0")] +[assembly: AssemblyFileVersion("7.1.3.0")] diff --git a/VERSION b/VERSION index f1edf6b4..20a14b1d 100644 --- a/VERSION +++ b/VERSION @@ -1,2 +1,2 @@ -7.1.2 -7.1.2.0 +7.1.3 +7.1.3.0 diff --git a/XLToolbox/Excel/ViewModels/Instance.cs b/XLToolbox/Excel/ViewModels/Instance.cs index a34c2379..3021c839 100755 --- a/XLToolbox/Excel/ViewModels/Instance.cs +++ b/XLToolbox/Excel/ViewModels/Instance.cs @@ -606,7 +606,7 @@ internal string LoadAddinFromEmbeddedResource(string resourceName) resourceStream.CopyTo(tempStream); tempStream.Close(); resourceStream.Close(); - Workbooks.Open(addinPath); + Workbooks.Open(addinPath, CorruptLoad: XlCorruptLoad.xlExtractData); Logger.Info("LoadAddinFromEmbeddedResource: Loaded {0}", addinPath); } else diff --git a/XLToolbox/Export/DibBitmap.cs b/XLToolbox/Export/DibBitmap.cs index f585b3b8..47f62a6d 100755 --- a/XLToolbox/Export/DibBitmap.cs +++ b/XLToolbox/Export/DibBitmap.cs @@ -162,7 +162,14 @@ private IntPtr Scan0 if (_scan0 == IntPtr.Zero) { IntPtr handlePtr = DibHandle.AddrOfPinnedObject(); - _scan0 = new IntPtr(handlePtr.ToInt32() + 40); + if (Environment.Is64BitProcess) + { + _scan0 = new IntPtr(handlePtr.ToInt64() + 40); + } + else + { + _scan0 = new IntPtr(handlePtr.ToInt32() + 40); + } } return _scan0; } diff --git a/XLToolbox/Properties/AssemblyInfo.cs b/XLToolbox/Properties/AssemblyInfo.cs index c0475d3e..84eac8ff 100755 --- a/XLToolbox/Properties/AssemblyInfo.cs +++ b/XLToolbox/Properties/AssemblyInfo.cs @@ -49,5 +49,5 @@ // You can specify all the values or you can default the Build and Revision Numbers // by using the '*' as shown below: // [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("7.1.2.0")] -[assembly: AssemblyFileVersion("7.1.2.0")] +[assembly: AssemblyVersion("7.1.3.0")] +[assembly: AssemblyFileVersion("7.1.3.0")] diff --git a/XLToolbox/WorkbookStorage/Store.cs b/XLToolbox/WorkbookStorage/Store.cs index 99abfa7b..b9e95f23 100755 --- a/XLToolbox/WorkbookStorage/Store.cs +++ b/XLToolbox/WorkbookStorage/Store.cs @@ -102,43 +102,31 @@ public string Context { #region Protected properties - protected Worksheet StoreSheet { - get { - if (_storeSheet == null) { + protected Worksheet StoreSheet + { + get + { + if (_storeSheet == null) + { if (Workbook == null) { throw new WorkbookStorageException("Cannot access storage worksheet: no workbook is associated"); } + Sheets sheets = Workbook.Worksheets; try { - _storeSheet = Workbook.Worksheets[STORESHEETNAME]; + _storeSheet = sheets[STORESHEETNAME]; } catch (System.Runtime.InteropServices.COMException) { - bool wasSaved = Workbook.Saved; - dynamic previousSheet = Workbook.ActiveSheet; - dynamic previousSel = Workbook.Application.Selection; - - // If the COMException is raised, the worksheet likely does not exist - Sheets sheets = Workbook.Worksheets; - _storeSheet = sheets.Add(); - Bovender.ComHelpers.ReleaseComObject(sheets); - - // xlSheetVeryHidden hides the sheet so much that it cannot be made - // visible from the Excel graphical user interface - _storeSheet.Visible = XlSheetVisibility.xlSheetVeryHidden; - - // Give the worksheet a special name - _storeSheet.Name = STORESHEETNAME; - - previousSheet.Activate(); - previousSel.Select(); - Workbook.Saved = wasSaved; + CreateStoreWorksheet(); } + Bovender.ComHelpers.ReleaseComObject(sheets); } return _storeSheet; } } + protected bool Dirty { get; set; } #endregion @@ -459,6 +447,40 @@ protected void WriteToWorksheet() Dirty = false; } + /// + /// Creates a hidden storage worksheet + /// + private void CreateStoreWorksheet() + { + bool wasSaved = Workbook.Saved; + dynamic previousSheet = Workbook.ActiveSheet; + dynamic previousSel = Workbook.Application.Selection; + Sheets sheets = Workbook.Worksheets; + + // If the COMException is raised, the worksheet likely does not exist + _storeSheet = sheets.Add(); + + // xlSheetVeryHidden hides the sheet so much that it cannot be made + // visible from the Excel graphical user interface + _storeSheet.Visible = XlSheetVisibility.xlSheetVeryHidden; + + // Give the worksheet a special name + _storeSheet.Name = STORESHEETNAME; + + if (previousSheet != null) + { + previousSheet.Activate(); + Bovender.ComHelpers.ReleaseComObject(previousSheet); + } + if (previousSel != null) + { + previousSel.Select(); + Bovender.ComHelpers.ReleaseComObject(previousSel); + } + Workbook.Saved = wasSaved; + Bovender.ComHelpers.ReleaseComObject(sheets); + } + #endregion #region Private methods @@ -466,15 +488,21 @@ protected void WriteToWorksheet() private void PrepareStoreSheet() { Range usedRange = _storeSheet.UsedRange; - usedRange.Clear(); - Bovender.ComHelpers.ReleaseComObject(usedRange); + if (usedRange != null) + { + usedRange.Clear(); + Bovender.ComHelpers.ReleaseComObject(usedRange); + } // Put an informative string into the first cell; // this is also required in order for GetUsedRange() to return // the correct range. Range cells = _storeSheet.Cells; - cells[1, 1] = STORESHEETINFO; - Bovender.ComHelpers.ReleaseComObject(cells); + if (cells != null) + { + cells[1, 1] = STORESHEETINFO; + Bovender.ComHelpers.ReleaseComObject(cells); + } } #endregion diff --git a/XLToolboxForExcel/Properties/AssemblyInfo.cs b/XLToolboxForExcel/Properties/AssemblyInfo.cs index 44be956a..b180898f 100755 --- a/XLToolboxForExcel/Properties/AssemblyInfo.cs +++ b/XLToolboxForExcel/Properties/AssemblyInfo.cs @@ -51,7 +51,7 @@ // You can specify all the values or you can default the Build and Revision Numbers // by using the '*' as shown below: // [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("7.1.2.0")] -[assembly: AssemblyFileVersion("7.1.2.0")] +[assembly: AssemblyVersion("7.1.3.0")] +[assembly: AssemblyFileVersion("7.1.3.0")] [assembly: NeutralResourcesLanguageAttribute("en-US")]