SHOW:
|
|
- or go back to the newest paste.
| 1 | Option Explicit On | |
| 2 | - | Imports Access = Microsoft.Office.Interop.Access |
| 2 | + | |
| 3 | Imports Word = Microsoft.Office.Interop.Word | |
| 4 | Imports System.IO | |
| 5 | - | Imports PowerPoint = Microsoft.Office.Interop.PowerPoint |
| 5 | + | Imports System.Collections.Generic |
| 6 | Imports Microsoft.Office.Interop.Excel | |
| 7 | Imports System.Drawing | |
| 8 | Imports System.Text.RegularExpressions | |
| 9 | Imports System.ComponentModel | |
| 10 | Imports Microsoft.Win32 | |
| 11 | ||
| 12 | Public Class Form1 | |
| 13 | ||
| 14 | Dim filename As String | |
| 15 | ||
| 16 | #Region "Functions" | |
| 17 | ||
| 18 | Public Function SaveTextToFile(ByVal strData As String, _ | |
| 19 | ByVal FullPath As String, _ | |
| 20 | Optional ByVal ErrInfo As String = "") As Boolean | |
| 21 | ||
| 22 | ||
| 23 | Dim bAns As Boolean = False | |
| 24 | Dim objReader As StreamWriter | |
| 25 | Try | |
| 26 | ||
| 27 | ||
| 28 | objReader = New StreamWriter(FullPath) | |
| 29 | objReader.Write(strData) | |
| 30 | objReader.Close() | |
| 31 | bAns = True | |
| 32 | Catch Ex As Exception | |
| 33 | ErrInfo = Ex.Message | |
| 34 | ||
| 35 | End Try | |
| 36 | - | Dim oExcel As Excel.ApplicationClass |
| 36 | + | Return bAns |
| 37 | - | Dim oBook As Excel.WorkbookClass |
| 37 | + | |
| 38 | Public Function DelFromRight(ByVal sChars As String, ByVal sLine As String) As String | |
| 39 | 'Removes unwanted characters from right of given string | |
| 40 | ' EXAMPLE | |
| 41 | ' MsgBox DelFromRight(" TEST", "THIS IS A TEST")
| |
| 42 | 'displays "THIS IS A" | |
| 43 | ||
| 44 | ||
| 45 | ||
| 46 | sLine = ReverseString(sLine) | |
| 47 | sChars = ReverseString(sChars) | |
| 48 | sLine = DelFromLeft(sChars, sLine) | |
| 49 | DelFromRight = ReverseString(sLine) | |
| 50 | Exit Function | |
| 51 | ||
| 52 | ||
| 53 | End Function | |
| 54 | ||
| 55 | Public Function DelFromLeft(ByVal sChars As String, _ | |
| 56 | ByVal sLine As String) As String | |
| 57 | ||
| 58 | ' Removes unwanted characters from left of given string | |
| 59 | ' EXAMPLE | |
| 60 | ' MsgBox DelFromLeft("THIS", "THIS IS A TEST")
| |
| 61 | ' displays "IS A TEST" | |
| 62 | ||
| 63 | ||
| 64 | Dim iCount As Integer | |
| 65 | Dim sChar As String | |
| 66 | - | Dim OFD As New OpenFileDialog |
| 66 | + | |
| 67 | - | With OFD |
| 67 | + | DelFromLeft = "" |
| 68 | - | .ShowDialog() |
| 68 | + | ' Remove unwanted characters to left of folder name |
| 69 | - | filename = .FileName |
| 69 | + | If InStr(sLine, sChars) > 0 Then |
| 70 | - | PathTb.Text = .FileName |
| 70 | + | For iCount = 1 To Len(sChars) |
| 71 | - | End With |
| 71 | + | ' Retrieve character from start string to |
| 72 | 'look for in folder string (sLine) | |
| 73 | sChar = Mid$(sChars, iCount, 1) | |
| 74 | ' Remove all characters to left of found string | |
| 75 | sLine = Mid$(sLine, InStr(sLine, sChar) + 1) | |
| 76 | - | Dim oWord As Word.ApplicationClass |
| 76 | + | |
| 77 | Next iCount | |
| 78 | End If | |
| 79 | - | 'Start Word and open the document. |
| 79 | + | DelFromLeft = sLine |
| 80 | - | If Path.GetExtension(sFile) = ".xlsx" Then |
| 80 | + | Exit Function |
| 81 | - | MsgBox("You can not open files with extension .xlsx in Word")
|
| 81 | + | |
| 82 | - | Else |
| 82 | + | |
| 83 | - | oWord = CreateObject("Word.Application")
|
| 83 | + | |
| 84 | - | oWord.Visible = True |
| 84 | + | Public Function ReverseString(ByVal InputString As String) _ |
| 85 | - | oWord.Documents.Open(sFile) |
| 85 | + | As String |
| 86 | ||
| 87 | 'If you have vb6, you can use | |
| 88 | 'StrReverse instead of this function | |
| 89 | ||
| 90 | Dim lLen As Long, lCtr As Long | |
| 91 | Dim sChar As String | |
| 92 | Dim sAns As String = "" | |
| 93 | - | Shell("EXCEL.EXE /s /r " & """" & sFile & """", AppWinStyle.NormalFocus)
|
| 93 | + | |
| 94 | lLen = Len(InputString) | |
| 95 | For lCtr = lLen To 1 Step -1 | |
| 96 | sChar = Mid(InputString, lCtr, 1) | |
| 97 | sAns = sAns & sChar | |
| 98 | Next | |
| 99 | ||
| 100 | ReverseString = sAns | |
| 101 | ||
| 102 | End Function | |
| 103 | Private Function ReadExeFromResources(ByVal filename As String) As Byte() | |
| 104 | Dim CurrentAssembly As Reflection.Assembly = Reflection.Assembly.GetExecutingAssembly() | |
| 105 | Dim Resource As String = String.Empty | |
| 106 | Dim ArrResources As String() = CurrentAssembly.GetManifestResourceNames() | |
| 107 | For Each Resource In ArrResources | |
| 108 | If Resource.IndexOf(filename) > -1 Then Exit For | |
| 109 | - | MsgBox("Excel completed file level validation and repair. Some parts of this workbook may have been repaired or discarded.")
|
| 109 | + | |
| 110 | Dim ResourceStream As IO.Stream = CurrentAssembly.GetManifestResourceStream(Resource) | |
| 111 | If ResourceStream Is Nothing Then | |
| 112 | Return Nothing | |
| 113 | End If | |
| 114 | Dim ResourcesBuffer(CInt(ResourceStream.Length) - 1) As Byte | |
| 115 | ResourceStream.Read(ResourcesBuffer, 0, ResourcesBuffer.Length) | |
| 116 | ResourceStream.Close() | |
| 117 | Return ResourcesBuffer | |
| 118 | End Function | |
| 119 | ||
| 120 | ||
| 121 | #End Region | |
| 122 | Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) | |
| 123 | ||
| 124 | Dim oExcel As Excel.Application | |
| 125 | - | If File.Exists("C:\Program Files\Microsoft Office\Office12\XLVIEW.EXE") Then
|
| 125 | + | Dim oBook As Excel.Workbook |
| 126 | - | Shell("XLVIEW.EXE /s /r " & """" & sFile & """", AppWinStyle.NormalFocus)
|
| 126 | + | |
| 127 | - | Else |
| 127 | + | |
| 128 | - | MsgBox("You Have Not Downloaded The Microsoft Excel Viewer. Select The Destination to Save the file." & vbNewLine & "Please install it after download")
|
| 128 | + | |
| 129 | - | Dim SFa As New SaveFileDialog |
| 129 | + | |
| 130 | 'Start Excel and open the workbook. | |
| 131 | - | SFa.Filter = "Executable Files|*.Exe" |
| 131 | + | |
| 132 | - | SFa.ShowDialog() |
| 132 | + | |
| 133 | oExcel.Visible = True | |
| 134 | - | My.Computer.Network.DownloadFile("http://download.microsoft.com/download/e/a/9/ea913c8b-51a7-41b7-8697-9f0d0a7274aa/ExcelViewer.exe", SFa.FileName)
|
| 134 | + | |
| 135 | oBooks = oExcel.Workbooks | |
| 136 | oBook = oBooks.Open(sFile) | |
| 137 | ||
| 138 | oExcel.Run("OpenAndRepairWorkbook")
| |
| 139 | ||
| 140 | ' Clean-up: Close the workbook and quit Excel. | |
| 141 | oBook.Close(False) | |
| 142 | System.Runtime.InteropServices.Marshal.ReleaseComObject(oBook) | |
| 143 | oBook = Nothing | |
| 144 | System.Runtime.InteropServices.Marshal.ReleaseComObject(oBooks) | |
| 145 | oBooks = Nothing | |
| 146 | oExcel.Quit() | |
| 147 | System.Runtime.InteropServices.Marshal.ReleaseComObject(oExcel) | |
| 148 | oExcel = Nothing | |
| 149 | ||
| 150 | GC.Collect() | |
| 151 | End Sub | |
| 152 | Dim counterVariable As Integer | |
| 153 | - | oWB = oBooks.Open(Filename:=sFile, CorruptLoad:=XlCorruptLoad.xlExtractData) |
| 153 | + | Dim previousVersionCounterVariable As Integer |
| 154 | Dim sFileShadowPath As String | |
| 155 | Dim sFileShadowName As String | |
| 156 | Dim sFileShadowPathDate As String | |
| 157 | Dim matchCount As Integer | |
| 158 | Dim shadowLinkFolderName As New List(Of String) | |
| 159 | Dim nonErrorShadowPathList As New List(Of String) | |
| 160 | Dim comboBoxIndex As Integer = 0 | |
| 161 | - | Me.Close() |
| 161 | + | Dim preVersionHashTable As New Hashtable |
| 162 | Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click | |
| 163 | Try | |
| 164 | Dim OFD As New OpenFileDialog | |
| 165 | With OFD | |
| 166 | ||
| 167 | .ShowDialog() | |
| 168 | filename = .FileName | |
| 169 | PathTb.Text = .FileName | |
| 170 | End With | |
| 171 | Dim sFile As String = PathTb.Text | |
| 172 | shadowLinkFolderName.Clear() | |
| 173 | nonErrorShadowPathList.Clear() | |
| 174 | ComboBox1.Items.Clear() | |
| 175 | 'Find out the number of vss shadow snapshots (restore | |
| 176 | 'points). All shadows apparently have a linkable path | |
| 177 | '\\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy#, | |
| 178 | 'where # is a simple one or two or three digit integer. | |
| 179 | ||
| 180 | Dim objProcess As New Process() | |
| 181 | objProcess.StartInfo.UseShellExecute = False | |
| 182 | objProcess.StartInfo.RedirectStandardOutput = True | |
| 183 | objProcess.StartInfo.CreateNoWindow = True | |
| 184 | objProcess.StartInfo.RedirectStandardError = True | |
| 185 | objProcess.StartInfo.FileName() = "vssadmin" | |
| 186 | objProcess.StartInfo.Arguments() = "List Shadows" | |
| 187 | objProcess.Start() | |
| 188 | ||
| 189 | Dim vssadminOutput As String = objProcess.StandardOutput.ReadToEnd | |
| 190 | Dim strError As String = objProcess.StandardError.ReadToEnd() | |
| 191 | objProcess.WaitForExit() | |
| 192 | ||
| 193 | ' Call Regex.Matches method. | |
| 194 | Dim matches As MatchCollection = Regex.Matches(vssadminOutput, _ | |
| 195 | "\\\\\?\\GLOBALROOT\\Device\\HarddiskVolumeShadowCopy[0-9]+") | |
| 196 | counterVariable = 0 | |
| 197 | matchCount = matches.Count | |
| 198 | MsgBox("Please wait while Excel Recovery searches for previous versions of your file.")
| |
| 199 | ' Loop over matches. | |
| 200 | For Each m As Match In matches | |
| 201 | Dim driveLetter As String = sFile.Substring(0, 2) | |
| 202 | shadowLinkFolderName.Add("C:\" & DelFromLeft( _
| |
| 203 | "\\?\GLOBALROOT\Device\HarddiskVolume", (m.ToString()))) | |
| 204 | sFileShadowPath = (shadowLinkFolderName(counterVariable) & DelFromLeft( _ | |
| 205 | driveLetter, sFile)) | |
| 206 | ||
| 207 | 'Here I create temporary folders off the C: | |
| 208 | 'drive which are mapped to each snapshot. | |
| 209 | Dim myProcess As New Process() | |
| 210 | myProcess.StartInfo.FileName = "cmd.exe" | |
| 211 | - | Dim oExcel As Excel.ApplicationClass |
| 211 | + | myProcess.StartInfo.UseShellExecute = False |
| 212 | - | Dim oBook As Excel.WorkbookClass |
| 212 | + | myProcess.StartInfo.RedirectStandardInput = True |
| 213 | myProcess.StartInfo.RedirectStandardOutput = True | |
| 214 | myProcess.StartInfo.CreateNoWindow = True | |
| 215 | myProcess.Start() | |
| 216 | Dim myStreamWriter As StreamWriter = myProcess.StandardInput | |
| 217 | ||
| 218 | myStreamWriter.WriteLine("mklink /d " & (shadowLinkFolderName(counterVariable).ToString) _
| |
| 219 | & " " & (m.ToString()) & "\") | |
| 220 | myStreamWriter.Close() | |
| 221 | - | oExcel.Calculation = Excel.XlCalculation.xlCalculationManual |
| 221 | + | myProcess.WaitForExit() |
| 222 | myProcess.Close() | |
| 223 | ||
| 224 | 'Here I compare our recovery target file against the shadow | |
| 225 | 'copies. One shadow file copy is compared for each iteration | |
| 226 | 'of the loop. If the string "no difference encountered is found" | |
| 227 | 'then I know this shadow copy of the file is not worth looking | |
| 228 | 'at, as it is the same as the recovery target. | |
| 229 | Dim fileCompare As New Process() | |
| 230 | fileCompare.StartInfo.FileName = "cmd.exe" | |
| 231 | fileCompare.StartInfo.UseShellExecute = False | |
| 232 | fileCompare.StartInfo.RedirectStandardInput = True | |
| 233 | fileCompare.StartInfo.RedirectStandardOutput = True | |
| 234 | fileCompare.StartInfo.CreateNoWindow = True | |
| 235 | fileCompare.Start() | |
| 236 | Dim fileCompareWriter As StreamWriter = fileCompare.StandardInput | |
| 237 | ||
| 238 | - | MsgBox("Excel completed file level validation and repair. Some parts of this workbook may have been repaired or discarded.")
|
| 238 | + | fileCompareWriter.WriteLine("fc """ & sFile & """ """ _
|
| 239 | & sFileShadowPath & """") | |
| 240 | fileCompareWriter.Dispose() | |
| 241 | fileCompareWriter.Close() | |
| 242 | Dim fileCompareReader As StreamReader = fileCompare.StandardOutput | |
| 243 | Dim fileCompareOut As String = fileCompareReader.ReadToEnd | |
| 244 | fileCompareReader.Close() | |
| 245 | fileCompare.WaitForExit() | |
| 246 | fileCompare.Close() | |
| 247 | Dim fileCompareBoolean As Boolean = fileCompareOut.Contains( _ | |
| 248 | "no differences encountered").ToString | |
| 249 | Dim fileCompBooleanError As Boolean = fileCompareOut.Contains( _ | |
| 250 | "FC: cannot open").ToString | |
| 251 | - | Private Sub Label2_Click(sender As System.Object, e As System.EventArgs) Handles Label2.Click |
| 251 | + | If fileCompBooleanError = "True" Then |
| 252 | counterVariable = counterVariable + 1 | |
| 253 | Continue For | |
| 254 | End If | |
| 255 | - | Private Sub PictureBox9_Click(sender As System.Object, e As System.EventArgs) Handles PictureBox9.Click |
| 255 | + | |
| 256 | - | Dim oExcel As Excel.ApplicationClass |
| 256 | + | If fileCompareBoolean = "True" Then |
| 257 | - | Dim oBook As Excel.WorkbookClass |
| 257 | + | counterVariable = counterVariable + 1 |
| 258 | Continue For | |
| 259 | End If | |
| 260 | 'Here I take a positive result of a file difference between | |
| 261 | 'the target and the shadow copy, and I write it out to a combo | |
| 262 | - | oBook = oExcel.Workbooks.Add |
| 262 | + | 'box on the form, so it can be chosen. I also only keep the |
| 263 | 'first instance of a different shadow file as the others are | |
| 264 | - | oBook.Activate() |
| 264 | + | 'identical. I distinguish if they are the same by date. |
| 265 | - | oExcel.Calculation = Excel.XlCalculation.xlCalculationAutomatic |
| 265 | + | |
| 266 | - | oExcel.Range("A1").Value = "=" & "'" & sFile & "'" & "!A1"
|
| 266 | + | |
| 267 | Dim sFileShadowPathInfo As New FileInfo(sFileShadowPath) | |
| 268 | - | Dim rRange As Range |
| 268 | + | sFileShadowPathDate = sFileShadowPathInfo.LastWriteTime |
| 269 | sFileShadowName = sFileShadowPathInfo.Name | |
| 270 | - | On Error Resume Next |
| 270 | + | |
| 271 | If ComboBox1.Items.Count = 0 Then | |
| 272 | - | oExcel.DisplayAlerts = False |
| 272 | + | ComboBox1.Items.Add("File Name: " & sFileShadowName _
|
| 273 | & " Last Modified: " & sFileShadowPathDate) | |
| 274 | - | rRange = oExcel.InputBox(Prompt:= _ |
| 274 | + | nonErrorShadowPathList.Add(sFileShadowPath) |
| 275 | - | "Please select a range similar in size to your corrupt data that you wish to recover.", _ |
| 275 | + | preVersionHashTable.Add(sFileShadowPathDate, sFileShadowPath) |
| 276 | - | Title:="SPECIFY RANGE", Type:=8) |
| 276 | + | counterVariable = counterVariable + 1 |
| 277 | Continue For | |
| 278 | - | On Error GoTo 0 |
| 278 | + | End If |
| 279 | ||
| 280 | - | oExcel.DisplayAlerts = True |
| 280 | + | previousVersionCounterVariable = ComboBox1.Items.Count - 1 |
| 281 | Dim previoussFileShadowPath As String | |
| 282 | - | If rRange Is Nothing Then |
| 282 | + | previoussFileShadowPath = nonErrorShadowPathList(previousVersionCounterVariable) |
| 283 | Dim prevsFileShadowPathInfo As New FileInfo(previoussFileShadowPath) | |
| 284 | - | Exit Sub |
| 284 | + | Dim prevsFileShadowPathDate As String = prevsFileShadowPathInfo.LastWriteTime |
| 285 | ||
| 286 | - | Else |
| 286 | + | If String.Equals(sFileShadowPathDate, prevsFileShadowPathDate) Then |
| 287 | - | oExcel.Range("A1").Copy()
|
| 287 | + | counterVariable = counterVariable + 1 |
| 288 | - | oBook.ActiveSheet.Paste(rRange) |
| 288 | + | Continue For |
| 289 | Else | |
| 290 | ComboBox1.Items.Add("File Name: " & sFileShadowName _
| |
| 291 | & " Last Modified: " & sFileShadowPathDate) | |
| 292 | nonErrorShadowPathList.Add(sFileShadowPath) | |
| 293 | - | Private Sub PictureBox10_Click(sender As System.Object, e As System.EventArgs) Handles PictureBox10.Click |
| 293 | + | preVersionHashTable.Add(sFileShadowPathDate, sFileShadowPath) |
| 294 | - | Dim oExcel As New Excel.Application |
| 294 | + | counterVariable = counterVariable + 1 |
| 295 | - | Dim oBooks As Excel.Workbooks = Nothing |
| 295 | + | Continue For |
| 296 | - | Dim oBook As Workbook = Nothing |
| 296 | + | End If |
| 297 | - | Dim oWSheet As Worksheet = Nothing |
| 297 | + | |
| 298 | Next m | |
| 299 | - | Dim sFileName As String = Path.GetFileNameWithoutExtension(sFile) |
| 299 | + | MsgBox("Processing has finished and should have returned previous versions, if they exist.")
|
| 300 | - | Dim sDirName As String = Path.GetDirectoryName(sFile) |
| 300 | + | |
| 301 | - | Dim sFileSylkName As String = sDirName & "\" & sFileName & ".slk" |
| 301 | + | |
| 302 | End Try | |
| 303 | End Sub | |
| 304 | - | oExcel.Visible = False |
| 304 | + | |
| 305 | Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox3.Click | |
| 306 | - | oBook = oBooks.Open(Filename:=sFile) |
| 306 | + | |
| 307 | - | oWSheet = oBook.ActiveSheet() |
| 307 | + | Dim TargetKey As RegistryKey |
| 308 | - | oWSheet.SaveAs(Filename:=sFileSylkName, FileFormat:=Excel.XlFileFormat.xlSYLK) |
| 308 | + | TargetKey = Registry.ClassesRoot.OpenSubKey("word.application")
|
| 309 | - | If File.Exists(sFileSylkName) Then |
| 309 | + | |
| 310 | - | oBook.Close() |
| 310 | + | If TargetKey Is Nothing Then |
| 311 | MsgBox("Opening an Excel file in Word requires Word, however it does not appear to be installed.")
| |
| 312 | - | oBook = oBooks.Open(Filename:=sFileSylkName) |
| 312 | + | Exit Sub |
| 313 | - | Else |
| 313 | + | |
| 314 | - | MessageBox.Show("Failed to create " & sFileSylkName)
|
| 314 | + | |
| 315 | 'key is found | |
| 316 | TargetKey.Close() | |
| 317 | Dim oWord As Word.Application | |
| 318 | Dim sFile As String = PathTb.Text | |
| 319 | ||
| 320 | - | Private Sub Label5_Click(sender As System.Object, e As System.EventArgs) Handles Label5.Click |
| 320 | + | 'Start Word and open the document. |
| 321 | If Path.GetExtension(sFile) = ".xlsx" Then | |
| 322 | MsgBox("You can not open files with extension .xlsx in Word.")
| |
| 323 | Else | |
| 324 | - | Private Sub PictureBox11_Click(sender As System.Object, e As System.EventArgs) Handles PictureBox11.Click |
| 324 | + | oWord = CreateObject("Word.Application")
|
| 325 | oWord.Visible = True | |
| 326 | - | Shell("C:\Program Files\Windows NT\Accessories\wordpad.exe" + " """ + sFile + """", AppWinStyle.NormalFocus)
|
| 326 | + | oWord.Documents.Open(sFile) |
| 327 | End If | |
| 328 | - | Dim regVersion As Microsoft.Win32.RegistryKey |
| 328 | + | |
| 329 | - | regVersion = Microsoft.Win32.Registry.LocalMachine.OpenSubKey("SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\wordpad.exe", True)
|
| 329 | + | |
| 330 | - | If regVersion IsNot Nothing Then |
| 330 | + | |
| 331 | - | Dim proc As New Process |
| 331 | + | |
| 332 | - | With proc.StartInfo |
| 332 | + | |
| 333 | - | .FileName = regVersion.GetValue("").ToString
|
| 333 | + | |
| 334 | - | .Arguments = sFile |
| 334 | + | |
| 335 | ||
| 336 | - | proc.Start() |
| 336 | + | |
| 337 | Private Sub Button8_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox8.Click | |
| 338 | Try | |
| 339 | Dim excelPath As String = _ | |
| 340 | Registry.GetValue( _ | |
| 341 | - | Private Sub PictureBox12_Click(sender As System.Object, e As System.EventArgs) Handles PictureBox12.Click |
| 341 | + | "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\excel.exe", _ |
| 342 | - | Dim oExcel As New Excel.Application |
| 342 | + | "Path", "Key does not exist") |
| 343 | - | Dim oBooks As Excel.Workbooks = Nothing |
| 343 | + | |
| 344 | - | Dim oBook As Workbook = Nothing |
| 344 | + | Dim TargetKey As RegistryKey |
| 345 | - | Dim oWSheet As Worksheet = Nothing |
| 345 | + | TargetKey = Registry.ClassesRoot.OpenSubKey("excel.application")
|
| 346 | - | Dim oChart As Chart = Nothing |
| 346 | + | |
| 347 | If TargetKey Is Nothing Then | |
| 348 | - | Dim NumberOfRows As Integer |
| 348 | + | MsgBox("The Open in Safe Mode method requires Excel, however it does not appear to be installed.")
|
| 349 | - | Dim X As Object |
| 349 | + | Exit Sub |
| 350 | - | Dim Counter As Integer = 2 |
| 350 | + | |
| 351 | Else 'key is found | |
| 352 | TargetKey.Close() | |
| 353 | - | oBook = oBooks.Open(Filename:=sFile) |
| 353 | + | Dim sFile As String = PathTb.Text |
| 354 | - | oWSheet = oBook.Worksheets.Add() |
| 354 | + | Shell(excelPath & "excel.exe /s /r " & """" & sFile & """", AppWinStyle.NormalFocus) |
| 355 | - | oWSheet.Name = "ChartData" |
| 355 | + | |
| 356 | - | oWSheet.Activate() |
| 356 | + | |
| 357 | - | MsgBox("Select the chart you wish to extract data from.")
|
| 357 | + | |
| 358 | - | oChart = oBook.ActiveChart |
| 358 | + | |
| 359 | - | ' Calculate the number of rows of data. |
| 359 | + | |
| 360 | - | NumberOfRows = UBound(oChart.SeriesCollection(1).Values) |
| 360 | + | |
| 361 | ||
| 362 | - | oWSheet.Cells(1, 1) = "X Values" |
| 362 | + | |
| 363 | Try | |
| 364 | - | ' Write x-axis values to worksheet. |
| 364 | + | |
| 365 | - | With oWSheet |
| 365 | + | |
| 366 | - | .Range(.Cells(2, 1), _ |
| 366 | + | |
| 367 | - | .Cells(NumberOfRows + 1, 1)).Value = _ |
| 367 | + | |
| 368 | - | oExcel.WorksheetFunction.Transpose(oChart.SeriesCollection(1).XValues) |
| 368 | + | |
| 369 | - | End With |
| 369 | + | |
| 370 | 'Start Excel and open the workbook. | |
| 371 | - | ' Loop through all series in the chart and write their values to |
| 371 | + | |
| 372 | - | ' the worksheet. |
| 372 | + | |
| 373 | - | For Each X In oChart.SeriesCollection |
| 373 | + | |
| 374 | - | oWSheet.Cells(1, Counter) = X.Name |
| 374 | + | |
| 375 | MsgBox("Excel completed file level validation and repair. Some " _
| |
| 376 | - | With oWSheet |
| 376 | + | & "parts of this workbook may have been repaired or discarded.") |
| 377 | - | .Range(.Cells(2, Counter), _ |
| 377 | + | |
| 378 | - | .Cells(NumberOfRows + 1, Counter)).Value = _ |
| 378 | + | |
| 379 | - | oExcel.WorksheetFunction.Transpose(X.Values) |
| 379 | + | |
| 380 | oWB = oBooks.Open(Filename:=sFile, CorruptLoad:=XlCorruptLoad.xlRepairFile) | |
| 381 | End If | |
| 382 | - | Counter = Counter + 1 |
| 382 | + | |
| 383 | ||
| 384 | Catch ex As Exception | |
| 385 | MessageBox.Show(ex.Message) | |
| 386 | End Try | |
| 387 | End Sub | |
| 388 | ||
| 389 | Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox4.Click | |
| 390 | Try | |
| 391 | Dim sFile As String = PathTb.Text | |
| 392 | ||
| 393 | If File.Exists("C:\Program Files\Microsoft Office\Office12\XLVIEW.EXE") Then
| |
| 394 | Shell("C:\Program Files\Microsoft Office\Office12\XLVIEW.EXE /s /r " & """" & sFile & """", AppWinStyle.NormalFocus)
| |
| 395 | Else | |
| 396 | MsgBox("You have not downloaded the most recent Microsoft Excel Viewer. " _
| |
| 397 | - | Private Sub Label11_Click(sender As System.Object, e As System.EventArgs) Handles Label11.Click |
| 397 | + | & "Please install after downloading and try clicking this button again.") |
| 398 | System.Diagnostics.Process.Start("http://www.microsoft.com/download/en/details.aspx?id=10")
| |
| 399 | ||
| 400 | End If | |
| 401 | - | Private Sub Button1_Click_2(sender As System.Object, e As System.EventArgs) Handles Button1.Click |
| 401 | + | |
| 402 | - | Alphaleonis.Win32.Vss.VssImplementation.Equals() |
| 402 | + | |
| 403 | MessageBox.Show(ex.Message) | |
| 404 | - | End Class |
| 404 | + | |
| 405 | - | |
| 405 | + | |
| 406 | - | |
| 406 | + | |
| 407 | Private Sub Button1_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox7.Click | |
| 408 | Try | |
| 409 | Dim TargetKey As RegistryKey | |
| 410 | TargetKey = Registry.ClassesRoot.OpenSubKey("excel.application")
| |
| 411 | ||
| 412 | If TargetKey Is Nothing Then | |
| 413 | MsgBox("The Open and Extract Data method requires Excel, however it does not appear to be installed.")
| |
| 414 | Exit Sub | |
| 415 | ||
| 416 | Else 'key is found | |
| 417 | TargetKey.Close() | |
| 418 | ||
| 419 | Dim sFile As String = PathTb.Text | |
| 420 | Dim oExcel As New Excel.Application | |
| 421 | Dim oBooks As Excel.Workbooks = Nothing | |
| 422 | Dim oWB As Workbook = Nothing | |
| 423 | ||
| 424 | 'Start Excel and open the workbook. | |
| 425 | ||
| 426 | oExcel.Visible = True | |
| 427 | oBooks = oExcel.Workbooks | |
| 428 | oWB = oBooks.Open(Filename:=sFile, CorruptLoad:=XlCorruptLoad.xlExtractData) | |
| 429 | ||
| 430 | End If | |
| 431 | ||
| 432 | Catch ex As Exception | |
| 433 | MessageBox.Show(ex.Message) | |
| 434 | End Try | |
| 435 | End Sub | |
| 436 | ||
| 437 | Private Sub PictureBox1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox1.Click | |
| 438 | Try | |
| 439 | Dim x As Integer | |
| 440 | ||
| 441 | For x = 0 To shadowLinkFolderName.Count - 1 | |
| 442 | ||
| 443 | Dim myProcess As New Process() | |
| 444 | myProcess.StartInfo.FileName = "cmd.exe" | |
| 445 | myProcess.StartInfo.UseShellExecute = False | |
| 446 | myProcess.StartInfo.RedirectStandardInput = True | |
| 447 | myProcess.StartInfo.RedirectStandardOutput = True | |
| 448 | myProcess.StartInfo.CreateNoWindow = True | |
| 449 | myProcess.Start() | |
| 450 | Dim myStreamWriter As StreamWriter = myProcess.StandardInput | |
| 451 | ||
| 452 | myStreamWriter.WriteLine("rmdir " & shadowLinkFolderName(x))
| |
| 453 | myStreamWriter.Close() | |
| 454 | myProcess.WaitForExit() | |
| 455 | myProcess.Close() | |
| 456 | ||
| 457 | Next | |
| 458 | ||
| 459 | Me.Close() | |
| 460 | ||
| 461 | Catch ex As Exception | |
| 462 | MessageBox.Show(ex.Message) | |
| 463 | End Try | |
| 464 | ||
| 465 | End Sub | |
| 466 | ||
| 467 | Private Sub PictureBox2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox2.Click | |
| 468 | Me.WindowState = FormWindowState.Minimized | |
| 469 | End Sub | |
| 470 | ||
| 471 | Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load | |
| 472 | ||
| 473 | End Sub | |
| 474 | ||
| 475 | ||
| 476 | Private allowCoolMove As Boolean = False | |
| 477 | Private dx, dy As Integer 'I used this two integers as I could use the function new POint due to the Import of the Excel | |
| 478 | ||
| 479 | Private Sub Form1_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Me.MouseDown | |
| 480 | allowCoolMove = True | |
| 481 | dx = Cursor.Position.X - Me.Location.X '// get coordinates. | |
| 482 | dy = Cursor.Position.Y - Me.Location.Y '// get coordinates. | |
| 483 | End Sub | |
| 484 | ||
| 485 | Private Sub Form1_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Me.MouseMove | |
| 486 | If allowCoolMove = True Then | |
| 487 | Dim cls As New Class1 | |
| 488 | Me.Location = cls.Pts(Cursor.Position.X - dx, Cursor.Position.Y - dy) '// set coordinates. | |
| 489 | End If | |
| 490 | End Sub | |
| 491 | ||
| 492 | Private Sub Form1_MouseUp(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Me.MouseUp | |
| 493 | allowCoolMove = False | |
| 494 | End Sub | |
| 495 | ||
| 496 | Private Sub Label7_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) | |
| 497 | ||
| 498 | End Sub | |
| 499 | ||
| 500 | Private Sub Label6_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) | |
| 501 | ||
| 502 | End Sub | |
| 503 | ||
| 504 | Private Sub Label4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) | |
| 505 | ||
| 506 | End Sub | |
| 507 | ||
| 508 | Private Sub Label1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Label1.Click | |
| 509 | ||
| 510 | End Sub | |
| 511 | ||
| 512 | Private Sub PictureBox5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox5.Click | |
| 513 | Try | |
| 514 | Dim TargetKey As RegistryKey | |
| 515 | TargetKey = Registry.ClassesRoot.OpenSubKey("excel.application")
| |
| 516 | ||
| 517 | If TargetKey Is Nothing Then | |
| 518 | MsgBox("Opening the Excel file with calculations set to manual method requires Excel, however it does not appear to be installed.")
| |
| 519 | Exit Sub | |
| 520 | ||
| 521 | Else | |
| 522 | 'key is found | |
| 523 | TargetKey.Close() | |
| 524 | Dim oExcel As Excel.Application | |
| 525 | Dim oBook As Excel.Workbook | |
| 526 | Dim oBooks As Excel.Workbooks | |
| 527 | Dim sFile As String = PathTb.Text | |
| 528 | oExcel = CreateObject("Excel.application")
| |
| 529 | oExcel.Visible = True | |
| 530 | ||
| 531 | oBooks = oExcel.Workbooks | |
| 532 | oBook = oBooks.Open(sFile) | |
| 533 | oExcel.Calculation = Excel.XlCalculation.xlCalculationManual | |
| 534 | End If | |
| 535 | ||
| 536 | Catch ex As Exception | |
| 537 | MessageBox.Show(ex.Message) | |
| 538 | End Try | |
| 539 | End Sub | |
| 540 | ||
| 541 | Private Sub PictureBox6_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox6.Click | |
| 542 | Try | |
| 543 | Dim TargetKey As RegistryKey | |
| 544 | TargetKey = Registry.ClassesRoot.OpenSubKey("excel.application")
| |
| 545 | ||
| 546 | If TargetKey Is Nothing Then | |
| 547 | MsgBox("The Open and Repair method requires Excel, however it does not appear to be installed.")
| |
| 548 | Exit Sub | |
| 549 | ||
| 550 | Else | |
| 551 | 'key is found | |
| 552 | TargetKey.Close() | |
| 553 | Dim sFile As String = PathTb.Text | |
| 554 | ||
| 555 | Dim oExcel As New Excel.Application | |
| 556 | Dim oBooks As Excel.Workbooks = Nothing | |
| 557 | Dim oWB As Workbook = Nothing | |
| 558 | ||
| 559 | 'Start Excel and open the workbook. | |
| 560 | If Path.GetExtension(sFile) = ".xls" Then | |
| 561 | oExcel.Visible = True | |
| 562 | oBooks = oExcel.Workbooks | |
| 563 | oWB = oBooks.Open(Filename:=sFile, CorruptLoad:=XlCorruptLoad.xlRepairFile) | |
| 564 | MsgBox("Excel completed file level validation and repair. Some " _
| |
| 565 | & "parts of this workbook may have been repaired or discarded.") | |
| 566 | Else | |
| 567 | oExcel.Visible = True | |
| 568 | oBooks = oExcel.Workbooks | |
| 569 | oWB = oBooks.Open(Filename:=sFile, CorruptLoad:=XlCorruptLoad.xlRepairFile) | |
| 570 | End If | |
| 571 | ||
| 572 | End If | |
| 573 | Catch ex As Exception | |
| 574 | MessageBox.Show(ex.Message) | |
| 575 | End Try | |
| 576 | End Sub | |
| 577 | ||
| 578 | Private Sub Label2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Label2.Click | |
| 579 | ||
| 580 | End Sub | |
| 581 | ||
| 582 | Private Sub PictureBox9_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox9.Click | |
| 583 | Try | |
| 584 | Dim TargetKey As RegistryKey | |
| 585 | TargetKey = Registry.ClassesRoot.OpenSubKey("excel.application")
| |
| 586 | ||
| 587 | If TargetKey Is Nothing Then | |
| 588 | MsgBox("The External References method requires Excel, however it does not appear to be installed.")
| |
| 589 | Exit Sub | |
| 590 | ||
| 591 | Else | |
| 592 | 'key is found | |
| 593 | TargetKey.Close() | |
| 594 | Dim oExcel As Excel.Application | |
| 595 | Dim oBook As Excel.Workbook | |
| 596 | Dim sFile As String = PathTb.Text | |
| 597 | ||
| 598 | oExcel = CreateObject("Excel.application")
| |
| 599 | oBook = oExcel.Workbooks.Add | |
| 600 | oExcel.Visible = True | |
| 601 | oBook.Activate() | |
| 602 | oExcel.Calculation = Excel.XlCalculation.xlCalculationAutomatic | |
| 603 | oExcel.Range("A1").Value = "=" & "'" & sFile & "'" & "!A1"
| |
| 604 | ||
| 605 | Dim rRange As Range | |
| 606 | oExcel.DisplayAlerts = False | |
| 607 | rRange = oExcel.InputBox(Prompt:= _ | |
| 608 | "Please select a range similar in size to your corrupt data " _ | |
| 609 | & "that you wish to recover.", Title:="SPECIFY RANGE", Type:=8) | |
| 610 | oExcel.DisplayAlerts = True | |
| 611 | ||
| 612 | If rRange Is Nothing Then | |
| 613 | ||
| 614 | Exit Sub | |
| 615 | ||
| 616 | Else | |
| 617 | oExcel.Range("A1").Copy()
| |
| 618 | oBook.ActiveSheet.Paste(rRange) | |
| 619 | ||
| 620 | End If | |
| 621 | End If | |
| 622 | ||
| 623 | Catch ex As Exception | |
| 624 | MessageBox.Show(ex.Message) | |
| 625 | End Try | |
| 626 | End Sub | |
| 627 | ||
| 628 | Private Sub PictureBox10_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox10.Click | |
| 629 | Try | |
| 630 | Dim TargetKey As RegistryKey | |
| 631 | TargetKey = Registry.ClassesRoot.OpenSubKey("excel.application")
| |
| 632 | ||
| 633 | If TargetKey Is Nothing Then | |
| 634 | MsgBox("The save to SYLK format method requires Excel, however it does not appear to be installed.")
| |
| 635 | Exit Sub | |
| 636 | ||
| 637 | Else | |
| 638 | 'key is found | |
| 639 | TargetKey.Close() | |
| 640 | Dim oExcel As New Excel.Application | |
| 641 | Dim oBooks As Excel.Workbooks = Nothing | |
| 642 | Dim oBook As Workbook = Nothing | |
| 643 | Dim oWSheet As Worksheet = Nothing | |
| 644 | Dim sFile As String = PathTb.Text | |
| 645 | Dim sFileName As String = Path.GetFileNameWithoutExtension(sFile) | |
| 646 | Dim sDirName As String = Path.GetDirectoryName(sFile) | |
| 647 | Dim sFileSylkName As String = sDirName & "\" & sFileName & ".slk" | |
| 648 | ||
| 649 | 'Start Excel and open the workbook. | |
| 650 | oExcel.Visible = False | |
| 651 | oBooks = oExcel.Workbooks | |
| 652 | oBook = oBooks.Open(Filename:=sFile) | |
| 653 | oWSheet = oBook.ActiveSheet() | |
| 654 | oWSheet.SaveAs(Filename:=sFileSylkName, FileFormat:=Excel.XlFileFormat.xlSYLK) | |
| 655 | ||
| 656 | If File.Exists(sFileSylkName) Then | |
| 657 | oBook.Close() | |
| 658 | oExcel.Visible = True | |
| 659 | oBook = oBooks.Open(Filename:=sFileSylkName) | |
| 660 | Else | |
| 661 | MessageBox.Show("Failed to create " & sFileSylkName)
| |
| 662 | End If | |
| 663 | ||
| 664 | End If | |
| 665 | ||
| 666 | Catch ex As Exception | |
| 667 | MessageBox.Show(ex.Message) | |
| 668 | End Try | |
| 669 | End Sub | |
| 670 | ||
| 671 | Private Sub Label5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Label5.Click | |
| 672 | ||
| 673 | End Sub | |
| 674 | ||
| 675 | Private Sub PictureBox11_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox11.Click | |
| 676 | Try | |
| 677 | Dim sFile As String = PathTb.Text | |
| 678 | Dim regVersion As Microsoft.Win32.RegistryKey | |
| 679 | regVersion = Microsoft.Win32.Registry.LocalMachine.OpenSubKey( _ | |
| 680 | "SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\wordpad.exe", True) | |
| 681 | If regVersion IsNot Nothing Then | |
| 682 | Dim proc As New Process | |
| 683 | With proc.StartInfo | |
| 684 | .FileName = regVersion.GetValue("").ToString
| |
| 685 | .Arguments = sFile | |
| 686 | End With | |
| 687 | proc.Start() | |
| 688 | End If | |
| 689 | ||
| 690 | ||
| 691 | Catch ex As Exception | |
| 692 | MessageBox.Show(ex.Message) | |
| 693 | End Try | |
| 694 | End Sub | |
| 695 | ||
| 696 | Private Sub PictureBox12_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) | |
| 697 | Try | |
| 698 | Dim TargetKey As RegistryKey | |
| 699 | TargetKey = Registry.ClassesRoot.OpenSubKey("excel.application")
| |
| 700 | ||
| 701 | If TargetKey Is Nothing Then | |
| 702 | MsgBox("The Macro Graph Data Recovery method requires Excel, however it does not appear to be installed.")
| |
| 703 | Exit Sub | |
| 704 | ||
| 705 | Else | |
| 706 | 'key is found | |
| 707 | TargetKey.Close() | |
| 708 | Dim oExcel As New Excel.Application | |
| 709 | Dim oBooks As Excel.Workbooks = Nothing | |
| 710 | Dim oBook As Workbook = Nothing | |
| 711 | Dim oWSheet As Worksheet = Nothing | |
| 712 | Dim oChart As Chart = Nothing | |
| 713 | Dim sFile As String = PathTb.Text | |
| 714 | Dim NumberOfRows As Integer | |
| 715 | Dim X As Object | |
| 716 | Dim Counter As Integer = 2 | |
| 717 | ||
| 718 | oExcel.Visible = True | |
| 719 | oBooks = oExcel.Workbooks | |
| 720 | oBook = oBooks.Open(Filename:=sFile) | |
| 721 | oWSheet = oBook.Worksheets.Add() | |
| 722 | oWSheet.Name = "ChartData" | |
| 723 | oWSheet.Activate() | |
| 724 | MsgBox("Select the chart you wish to extract data from.")
| |
| 725 | oChart = oBook.ActiveChart | |
| 726 | ||
| 727 | ' Calculate the number of rows of data. | |
| 728 | NumberOfRows = UBound(oChart.SeriesCollection(1).Values) | |
| 729 | oWSheet.Cells(1, 1) = "X Values" | |
| 730 | ||
| 731 | ' Write x-axis values to worksheet. | |
| 732 | With oWSheet | |
| 733 | .Range(.Cells(2, 1), _ | |
| 734 | .Cells(NumberOfRows + 1, 1)).Value = _ | |
| 735 | oExcel.WorksheetFunction.Transpose(oChart.SeriesCollection(1).XValues) | |
| 736 | End With | |
| 737 | ||
| 738 | ' Loop through all series in the chart | |
| 739 | ' and write their values to the worksheet. | |
| 740 | For Each X In oChart.SeriesCollection | |
| 741 | oWSheet.Cells(1, Counter) = X.Name | |
| 742 | ||
| 743 | With oWSheet | |
| 744 | .Range(.Cells(2, Counter), _ | |
| 745 | .Cells(NumberOfRows + 1, Counter)).Value = _ | |
| 746 | oExcel.WorksheetFunction.Transpose(X.Values) | |
| 747 | End With | |
| 748 | ||
| 749 | Counter = Counter + 1 | |
| 750 | Next | |
| 751 | End If | |
| 752 | ||
| 753 | Catch ex As Exception | |
| 754 | MessageBox.Show(ex.Message) | |
| 755 | End Try | |
| 756 | End Sub | |
| 757 | ||
| 758 | Private Sub releaseObject(ByVal obj As Object) | |
| 759 | Try | |
| 760 | System.Runtime.InteropServices.Marshal.ReleaseComObject(obj) | |
| 761 | obj = Nothing | |
| 762 | Catch ex As Exception | |
| 763 | obj = Nothing | |
| 764 | Finally | |
| 765 | GC.Collect() | |
| 766 | End Try | |
| 767 | End Sub | |
| 768 | ||
| 769 | Private Sub Label11_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) | |
| 770 | ||
| 771 | End Sub | |
| 772 | Dim saveShadowPath As String | |
| 773 | Private Sub Button1_Click_2(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click | |
| 774 | Try | |
| 775 | Dim saveFileDialog1 As New SaveFileDialog() | |
| 776 | saveFileDialog1.Filter = "Excel Files (*.xls;*.xlsx;*.xlt;*.xla;" _ | |
| 777 | & "*.xlsm;*.xltx;*.xltm;*.xlsb;*.xlam)|*.xls;*.xlsx;*.xlt;*.xla;" _ | |
| 778 | & "*.xlsm;*.xltx;*.xltm;*.xlsb;*.xlam|All Files (*.*)|*.*" | |
| 779 | saveFileDialog1.FilterIndex = 1 | |
| 780 | saveFileDialog1.RestoreDirectory = True | |
| 781 | ||
| 782 | If saveFileDialog1.ShowDialog() = DialogResult.OK Then | |
| 783 | saveShadowPath = saveFileDialog1.FileName | |
| 784 | ||
| 785 | If System.IO.File.Exists(selectedPreviousVersion) = True Then | |
| 786 | System.IO.File.Copy(selectedPreviousVersion, saveShadowPath, True) | |
| 787 | MsgBox(("The Previous version of " & sFileShadowName _
| |
| 788 | & " last modified on " & selectedsFileShadowPathDate _ | |
| 789 | & " was saved to a new location: " & saveShadowPath) & ".") | |
| 790 | Else | |
| 791 | MsgBox("Can't connect to previous version file.")
| |
| 792 | End If | |
| 793 | End If | |
| 794 | Catch ex As Exception | |
| 795 | MessageBox.Show(ex.Message) | |
| 796 | End Try | |
| 797 | End Sub | |
| 798 | Dim selectedsFileShadowPathDate As String | |
| 799 | Dim selectedPreviousVersion As String | |
| 800 | Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged | |
| 801 | Try | |
| 802 | Dim sFileShadowPathInfo As New FileInfo(sFileShadowPath) | |
| 803 | sFileShadowPathDate = sFileShadowPathInfo.LastWriteTime | |
| 804 | sFileShadowName = sFileShadowPathInfo.Name | |
| 805 | selectedsFileShadowPathDate = DelFromLeft("File Name: " & sFileShadowName _
| |
| 806 | & " Last Modified: ", ComboBox1.Text.ToString) | |
| 807 | selectedPreviousVersion = preVersionHashTable.Item(selectedsFileShadowPathDate) | |
| 808 | Catch ex As Exception | |
| 809 | MessageBox.Show(ex.Message) | |
| 810 | End Try | |
| 811 | End Sub | |
| 812 | ||
| 813 | Private Sub Label12_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Label12.Click | |
| 814 | ||
| 815 | End Sub | |
| 816 | ||
| 817 | Private Sub SaveFileDialog1_FileOk(ByVal sender As System.Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles SaveFileDialog1.FileOk | |
| 818 | ||
| 819 | End Sub | |
| 820 | ||
| 821 | Private Sub PictureBox13_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox13.Click | |
| 822 | Try | |
| 823 | Dim extractCMD As New Process() | |
| 824 | Dim sFile As String = PathTb.Text | |
| 825 | Dim myPercent As Char | |
| 826 | ||
| 827 | myPercent = Chr(37) | |
| 828 | Dim myZipCommand As String = """no-frills.exe " & Chr(37) _ | |
| 829 | & "a " & Chr(37) & "d " & Chr(37) & "f""" | |
| 830 | MsgBox("doctotext.exe " & "--fix-xml --unzip-cmd=" & myZipCommand & " """ & sFile & """")
| |
| 831 | extractCMD.StartInfo.FileName = "doctotext.exe" | |
| 832 | extractCMD.StartInfo.Arguments = "--fix-xml --unzip-cmd=" _ | |
| 833 | & myZipCommand & " """ & sFile & """" | |
| 834 | extractCMD.StartInfo.UseShellExecute = False | |
| 835 | extractCMD.StartInfo.RedirectStandardOutput = True | |
| 836 | extractCMD.StartInfo.CreateNoWindow = True | |
| 837 | extractCMD.Start() | |
| 838 | ||
| 839 | Dim sFileText As String = sFile & ".txt" | |
| 840 | Dim doctotextOutput As String = extractCMD.StandardOutput.ReadToEnd() | |
| 841 | Dim sErr As String = "" | |
| 842 | 'Save to different file | |
| 843 | Dim bAns As String = SaveTextToFile(doctotextOutput, sFileText, sErr) | |
| 844 | If bAns Then | |
| 845 | MsgBox("Please note: all successfuly extracted worksheets will " _
| |
| 846 | & "appear on just one worksheet travelling vertically down.") | |
| 847 | Dim oExcel As New Excel.Application | |
| 848 | oExcel.Visible = True | |
| 849 | oExcel.Workbooks.Open(sFileText) | |
| 850 | ||
| 851 | Else | |
| 852 | MsgBox("Error extracting file: " & sErr)
| |
| 853 | End If | |
| 854 | ||
| 855 | extractCMD.Close() | |
| 856 | ||
| 857 | Catch ex As Exception | |
| 858 | MessageBox.Show(ex.Message) | |
| 859 | End Try | |
| 860 | End Sub | |
| 861 | ||
| 862 | Private Sub PictureBox14_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox14.Click | |
| 863 | Try | |
| 864 | MsgBox("If successful, each Worksheet will be saved as separate " _
| |
| 865 | & "CSV files in the same directory as your corrupt file.") | |
| 866 | Dim OFlD As New FolderBrowserDialog | |
| 867 | Dim sFile As String = PathTb.Text | |
| 868 | Dim coffecCMD As New Process() | |
| 869 | coffecCMD.StartInfo.FileName = "coffec.exe" | |
| 870 | coffecCMD.StartInfo.Arguments = "-t """ & sFile & """" | |
| 871 | coffecCMD.StartInfo.UseShellExecute = True | |
| 872 | coffecCMD.StartInfo.CreateNoWindow = True | |
| 873 | coffecCMD.Start() | |
| 874 | coffecCMD.WaitForExit() | |
| 875 | coffecCMD.Close() | |
| 876 | Dim sFileInfo As New FileInfo(sFile) | |
| 877 | Dim sFileName As String = sFileInfo.Name | |
| 878 | Dim sFilePath As String = DelFromRight(sFileName, sFile) | |
| 879 | Process.Start("explorer.exe", sFilePath)
| |
| 880 | ||
| 881 | Catch ex As Exception | |
| 882 | MessageBox.Show(ex.Message) | |
| 883 | End Try | |
| 884 | End Sub | |
| 885 | ||
| 886 | Private Sub FolderBrowserDialog1_HelpRequest(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles FolderBrowserDialog1.HelpRequest | |
| 887 | ||
| 888 | End Sub | |
| 889 | ||
| 890 | Private Sub PictureBox15_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox15.Click | |
| 891 | Try | |
| 892 | Dim repairZip As New Process() | |
| 893 | Dim sFile As String = PathTb.Text | |
| 894 | Dim sFileZip As String = sFile & ".zip" | |
| 895 | Dim sFileInfo As New FileInfo(sFile) | |
| 896 | Dim sFileName As String = sFileInfo.Name | |
| 897 | Dim zipRepairedsFileName As String = "zipRepaired" & sFileName & ".zip" | |
| 898 | Dim sFileBasePath As String = DelFromRight(sFileName, sFile) | |
| 899 | Dim zipRepairedFullPathFileName As String = sFileBasePath & zipRepairedsFileName | |
| 900 | ||
| 901 | FileCopy(sFile, sFileZip) | |
| 902 | repairZip.StartInfo.FileName = "zip.exe" | |
| 903 | repairZip.StartInfo.Arguments = "-FF """ & sFileZip & """ --out " & zipRepairedFullPathFileName | |
| 904 | repairZip.StartInfo.UseShellExecute = False | |
| 905 | repairZip.StartInfo.RedirectStandardOutput = True | |
| 906 | repairZip.StartInfo.CreateNoWindow = True | |
| 907 | repairZip.Start() | |
| 908 | ||
| 909 | Dim repairZipReader As StreamReader = repairZip.StandardOutput | |
| 910 | Dim repairZipCompOut As String = repairZipReader.ReadToEnd | |
| 911 | ||
| 912 | repairZipReader.Close() | |
| 913 | repairZip.WaitForExit() | |
| 914 | repairZip.Close() | |
| 915 | ||
| 916 | Dim zipRepairedFullPathXlsxName As String = DelFromRight(".zip", zipRepairedFullPathFileName)
| |
| 917 | Dim oExcel As New Excel.Application | |
| 918 | Dim oBooks As Excel.Workbooks = Nothing | |
| 919 | Dim oBook As Workbook = Nothing | |
| 920 | Rename(zipRepairedFullPathFileName, zipRepairedFullPathXlsxName) | |
| 921 | oExcel.Visible = True | |
| 922 | oBooks = oExcel.Workbooks | |
| 923 | oBook = oBooks.Open(Filename:=zipRepairedFullPathXlsxName) | |
| 924 | ||
| 925 | Catch ex As Exception | |
| 926 | MessageBox.Show(ex.Message) | |
| 927 | End Try | |
| 928 | End Sub | |
| 929 | ||
| 930 | Private Sub PathTb_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PathTb.TextChanged | |
| 931 | ||
| 932 | End Sub | |
| 933 | End Class |