| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
 100
 101
 102
 103
 104
 105
 106
 107
 108
 109
 110
 111
 112
 113
 114
 115
 116
 117
 118
 119
 120
 121
 122
 123
 124
 125
 126
 
 | ' ---------------------- Directory Choosing Helper Functions -----------------------' Excel and VBA do not provide any convenient directory chooser or file chooser
 ' dialogs, but these functions will provide a reference to a system DLL
 ' with the necessary capabilities
 Private Type BROWSEINFO    ' used by the function GetFolderName
 hOwner As Long
 pidlRoot As Long
 pszDisplayName As String
 lpszTitle As String
 ulFlags As Long
 lpfn As Long
 lParam As Long
 iImage As Long
 End Type
 
 Private Declare Function SHGetPathFromIDList Lib"shell32.dll" _
 Alias"SHGetPathFromIDListA" (ByVal pidl As Long, ByVal pszPath As String) As Long
 Private Declare Function SHBrowseForFolder Lib"shell32.dll" _
 Alias"SHBrowseForFolderA" (lpBrowseInfo As BROWSEINFO) As Long
 
 Function GetFolderName(Msg As String) As String
 ' returns the name of the folder selected by the user
 Dim bInfo As BROWSEINFO, path As String, r As Long
 Dim X As Long, pos As Integer
 bInfo.pidlRoot = 0&    ' Root folder = Desktop
 If IsMissing(Msg) Then
 bInfo.lpszTitle ="Select a folder."
 ' the dialog title
 Else
 bInfo.lpszTitle = Msg    ' the dialog title
 End If
 bInfo.ulFlags = &H1    ' Type of directory to return
 X = SHBrowseForFolder(bInfo)    ' display the dialog
 ' Parse the result
 path = Space$(512)
 r = SHGetPathFromIDList(ByVal X, ByVal path)
 If r Then
 pos = InStr(path, Chr$(0))
 GetFolderName = Left(path, pos - 1)
 Else
 GetFolderName =""
 End If
 End Function
 '---------------------- END Directory Chooser Helper Functions ----------------------
 
 Public Sub DoTheExport()
 Dim FName As Variant
 Dim Sep As String
 Dim wsSheet As Worksheet
 Dim nFileNum As Integer
 Dim csvPath As String
 
 
 Sep = InputBox("Enter a single delimiter character (e.g., comma or semi-colon)", _
 "Export To Text File")
 'csvPath = InputBox("Enter the full path to export CSV files to:")
 
 csvPath = GetFolderName("Choose the folder to export CSV files to:")
 If csvPath ="" Then
 MsgBox ("You didn't choose an export directory. Nothing will be exported.")
 Exit Sub
 End If
 
 For Each wsSheet In Worksheets
 wsSheet.Activate
 nFileNum = FreeFile
 Open csvPath &"\" & _
 wsSheet.Name &".csv" For Output As #nFileNum
 ExportToTextFile CStr(nFileNum), Sep, False
 Close nFileNum
 Next wsSheet
 
 End Sub
 
 
 
 Public Sub ExportToTextFile(nFileNum As Integer, _
 Sep As String, SelectionOnly As Boolean)
 
 Dim WholeLine As String
 Dim RowNdx As Long
 Dim ColNdx As Integer
 Dim StartRow As Long
 Dim EndRow As Long
 Dim StartCol As Integer
 Dim EndCol As Integer
 Dim CellValue As String
 
 Application.ScreenUpdating = False
 On Error GoTo EndMacro:
 
 If SelectionOnly = True Then
 With Selection
 StartRow = .Cells(1).Row
 StartCol = .Cells(1).Column
 EndRow = .Cells(.Cells.Count).Row
 EndCol = .Cells(.Cells.Count).Column
 End With
 Else
 With ActiveSheet.UsedRange
 StartRow = .Cells(1).Row
 StartCol = .Cells(1).Column
 EndRow = .Cells(.Cells.Count).Row
 EndCol = .Cells(.Cells.Count).Column
 End With
 End If
 
 For RowNdx = StartRow To EndRow
 WholeLine =""
 For ColNdx = StartCol To EndCol
 If Cells(RowNdx, ColNdx).Value ="" Then
 CellValue =""
 Else
 CellValue = Cells(RowNdx, ColNdx).Value
 End If
 WholeLine = WholeLine & CellValue & Sep
 Next ColNdx
 WholeLine = Left(WholeLine, Len(WholeLine) - Len(Sep))
 Print #nFileNum, WholeLine
 Next RowNdx
 
 EndMacro:
 On Error GoTo 0
 Application.ScreenUpdating = True
 
 End Sub
 |