использовать userinput для действий - PullRequest
0 голосов
/ 07 июля 2019
I want to make open worksheets which user write in inputbox. There are 20 worksheets to choose from. without declaring each worksheet in code for ex. If userentry= ".xlsx" for each worksheet, How can I do it easy way?

I wrote vba code for each worksheet but wrote worksheet name manually.

подпрограмма openworksheet () просит пользователя написать имя открываемой книги.Подпрограмма Copy_OperationalDowntime_Data () копирует данные и вставляет их в открытый файл vba и копирует файл data.xlsm.Та же операция копирования и вставки выполняется для всех подпрограмм, и данные вставляются в открытый файл vba и копируют файл data.xlsm.

Public Sub openworksheet()
'open RTM
Dim usersel, userentry, worksheetpath, worksheetname, nameofws As String
    usersel = MsgBox("enter the date of the worksheet you would like to open") & vbCrLf & _
                    "enter file name in the format 20 Jun 19 RTM.xlsm"
    userentry = InputBox(usersel, vbOKCancel)
    worksheetpath = "C:\Users\DESHARMA\Desktop\"
    worksheetname = worksheetpath & userentry
    nameofws = worksheetname
    Workbooks.Open Filename:=nameofws
End Sub

Public Sub Copy_OperationalDowntime_Data()
    Dim keepdata As String
    openworksheet
    ActiveWorkbook.Activate
    Worksheets("Main Menu").Select
    Worksheets("Avail L1 DAYS").Select
    Range("G5").Select
         For i = 5 To 64
              If Cells(i, 7) <> "" Then
                    Range(Cells(i, 7), Cells(i, 21)).Select
                    Selection.Copy
                    Workbooks("vba open file and copy data.xlsm").Activate
                    ActiveSheet.Range("b2").Select
                        If Range("b2").Value <> "" Then
                            ActiveCell.Offset(1, 0).Select
                         End If
              ActiveSheet.Paste
            Else
               ActiveCell.Offset(1, 0).Select
            End If
            Windows("nameofws").Activate
            Worksheets("Avail L1 DAYS").Select
       Next i
'Copy L2 days data
       Worksheets("Avail L2 DAYS").Select
             Range("G5").Select
              For i = 5 To 64
                   If Cells(i, 7) <> "" Then
                         Range(Cells(i, 7), Cells(i, 21)).Select
                         Selection.Copy
                         Workbooks("vba open file and copy data.xlsm").Activate
                         Range("b2").Select
                         Range("b2").End(xlDown).Select
                         Selection.End(xlUp).Select
                         Selection.Offset(2, 0).seelct
                         ActiveSheet.Paste
                 Else
                    ActiveCell.Offset(1, 0).Select
                 End If
                 Windows("nameofws").Activate
                 Worksheets("Avail L2 DAYS").Select
            Next i
    'Workbooks("vba open file and copy data.xlsm").Activate
    'keepdata = MsgBox("Do you want to keep data or delete it" & vbCrLf & _
     '               "To keep data,Press Yes", vbYesNo, "Keep or Delete data")

'copy L1 Nights data
        Worksheets("Avail L1 Nights").Select
             Range("G5").Select
              For i = 5 To 64
                   If Cells(i, 7) <> "" Then
                         Range(Cells(i, 7), Cells(i, 21)).Select
                         Selection.Copy
                         Workbooks("vba open file and copy data.xlsm").Activate
                         Range("b2").Select
                         Range("b2").End(xlDown).Select
                         Selection.End(xlUp).Select
                         Selection.Offset(2, 0).seelct
                         ActiveSheet.Paste
                 Else
                    ActiveCell.Offset(1, 0).Select
                 End If
                 Windows("nameofws").Activate
                 Worksheets("Avail L1 Nights").Select
            Next i

'copy L2 Nights data
        Worksheets("Avail L2 Nights").Select
             Range("G5").Select
              For i = 5 To 64
                   If Cells(i, 7) <> "" Then
                         Range(Cells(i, 7), Cells(i, 21)).Select
                         Selection.Copy
                         Workbooks("vba open file and copy data.xlsm").Activate
                         Range("b2").Select
                         Range("b2").End(xlDown).Select
                         Selection.End(xlUp).Select
                         Selection.Offset(2, 0).Select
                         ActiveSheet.Paste
                 Else
                    ActiveCell.Offset(1, 0).Select
                 End If
                 Windows("nameofws").Activate
                 Worksheets("Avail L2 Nights").Select
            Next i
          Workbooks("vba open file and copy data.xlsm").Activate

End Sub


I am not sure how to refer user entered workbook name.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...