Home |
Search |
Today's Posts |
#1
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
Hi all,
I have a form that different users fill in, the results are the collected and presented in a number of ways. I have sorted the form and want the macro to select the necessary cells and paste them into a master workbook. There will be a large number of forms so I have, will the help a previous post, put together a macro that allows the user to select multiple workbooks, the master worksheet then checks a cell to see which worksheet to paste the information to, selects, copy and pastes the appropriate cells, closes the form and opens the next. The code below does this however when it comes to pasting the information it does something strange. If you select, for instance, 3 forms to open from the file window, e.g. A, B and C the macro will run and paste A into Worksheet A of the master workbook, B into B etc, the problem is that it pastes C once, B twice and A three times. I think it is probably something to do with the NextColumn line but I am at a bit of lose as to what. Can anyone help? I need to be able to select the Next empty column so I can put multiple forms on one workbook. X is the workbook name of the open form, it is contained in each form the user fills in. Y is the name of the appropriate worksheet, it is also contained in each form. I know I could streamline the code but I just want this bit to work first! The code is below : Public Sub ProcessAllFiles() ' ' Macro1 Macro ' ' Input Boxes and File Name Selection Dim varFileList As Variant Dim IngFileCount As Long Dim ilngFileNumber As Long Dim strFileName As String varFileList = Application.GetOpenFilename(FileFilter:="Excel Files(*.xls),*.xls", Title:="Open Excel File(s)", MultiSelect:=True) IngFileCount = FileCount(varFileList) If IngFileCount = 0 Then GoTo ExitSub ' User canceled out of dialog box. For ilngFileNumber = 1 To IngFileCount Workbooks.Open Filename:=CurrentFileName(varFileList, ilngFileNumber) ' Workout which form to which worksheet x = Range("A1") y = Range("A4") If y = "This" Then GoTo This If y = "Has" Then GoTo Has If y = "Worked" Then GoTo Worked ' Copy and Paste This: Application.ScreenUpdating = False Workbooks(x).Activate Range("A1").Select Selection.Copy Workbooks("Test.xls").Activate Worksheets(y).Activate Nextcolumn = Application.WorksheetFunction.CountA(Range("1:1")) + 1 Cells(1, Nextcolumn).Select Selection.PasteSpecial Paste:=xlPasteValues Workbooks(x).Activate Has: Application.ScreenUpdating = False Workbooks(x).Activate Range("A1").Select Selection.Copy Workbooks("Test.xls").Activate Worksheets(y).Activate Nextcolumn = Application.WorksheetFunction.CountA(Range("1:1")) + 1 Cells(1, Nextcolumn).Select Selection.PasteSpecial Paste:=xlPasteValues Workbooks(x).Activate Worked: Application.ScreenUpdating = False Workbooks(x).Activate Range("A1").Select Selection.Copy Workbooks("Test.xls").Activate Worksheets(y).Activate Nextcolumn = Application.WorksheetFunction.CountA(Range("1:1")) + 1 Cells(1, Nextcolumn).Select Selection.PasteSpecial Paste:=xlPasteValues Workbooks(x).Activate ActiveWorkbook.Close Next ilngFileNumber ExitSub: End Sub ---------------------------------------------------------------------------------------------------------------------------- Private Function FileCount(varFileList) As Long Select Case VarType(varFileList) Case vbBoolean 'User canceled out of the File Open Dialog box. FileCount = 0 Case vbString 'Dialog box is in single file mode. 'Single file selected for opening only. FileCount = 1 Case vbArray + vbVariant 'Multiple files selected for processing. FileCount = UBound(varFileList) - LBound(varFileList) + 1 End Select End Function ---------------------------------------------------------------------------------------------------------------------------- Private Function CurrentFileName(varFileList As Variant, ilngFileNumber As Long) As String Select Case VarType(varFileList) Case vbBoolean 'User canceled out of the File Open dialog box. CurrentFileName = "" Case vbString 'Dialog box is in single file mode. 'Single file selected for opening only. CurrentFileName = varFileList Case vbArray + vbVariant 'Multiple files selected for processing. 'Return the filename currently pointed to. CurrentFileName = CStr(varFileList(ilngFileNumber)) End Select End Function I think the above Multiple File selection code was written by Bill Renaud (Many Thanks!!!!) |
Thread Tools | Search this Thread |
Display Modes | |
|
|
![]() |
||||
Thread | Forum | |||
Error MOVING data: Cannot empty the clipboard | Excel Discussion (Misc queries) | |||
Problems with Photos Moving | Excel Discussion (Misc queries) | |||
moving empty rows down a list | Excel Discussion (Misc queries) | |||
Moving data if cell is empty | Excel Programming | |||
Delete Rows with Empty Cells with empty column 1 | Excel Programming |