2014-12-17 3 views
0

То, что я пытаюсь сделать, это передать межсетевой аргумент между Auto Update & Обновление, чтобы каждый раз для RowNumber повышался тот, который хранит это значение в Auto Update, а затем закрывает и снова открывает обновление, которое затем продолжает считать RowNumber, где он остановился. Это то, что у меня есть до сих пор. Как открыть панель Panel.xls и закрыть ее?Передача целочисленного аргумента в VBA

Public RowNumber As Integer 
Public LoopCount As Integer 
    Sub auto_open() 
    Application.DisplayAlerts = False 
    Application.ScreenUpdating = False 
    Application.PrintCommunication = False 
    Dim PanelFilePath As String 
    Dim PanelFileName As String 
    Dim PanelLocation As String 
    Dim PanelWB As Workbook 
     PanelFilePath = "D:\umc\UMC Production Files\Automation Files\" 
     PanelFileName = "Panel.xls" 
     PanelLocation = PanelFilePath & Dir$(PanelFilePath & PanelFileName) 
     RowNumber = 0 
     For LoopCount = 0 To 7 
     If LoopCount < 7 Then 
     Set PanelWB = Workbooks.Open(Filename:=PanelLocation, UpdateLinks:=3) 
      PanelWB.RunAutoMacros Which:=xlAutoOpen 
      Application.Run "Panel.xls!Update" 
      PanelWB.Close 
     End If 
     Next LoopCount 
     Call Shell("D:\umc\UMC Production Files\Automation Files\Auto.bat", vbNormalFocus) 
    Application.Quit 
    Application.DisplayAlerts = True 
    Application.ScreenUpdating = True 
    Application.PrintCommunication = True 
    End Sub 

    Function Update(LoopCount As Integer) 
    getRowNumber = LoopCount 
    End Function 

Panel.xls! Update

Sub Update() 
Dim AutoUpdateTargetFile As String 
Dim AutoUpdateWB As Workbook 
For RowNumber = 1 To (Range("AutoUpdate.File").Rows.Count - 1) 
    If (Range("AutoUpdate.File").Rows(RowNumber) <> "") Then 
     AutoUpdateTargetFile = Range("Sys.Path") & Range("Client.Path").Rows(RowNumber) & Range("AutoUpdate.Path ").Rows(RowNumber) & Range("AutoUpdate.File").Rows(RowNumber) 
     Set AutoUpdateWB = Workbooks.Open(Filename:=AutoUpdateTargetFile, UpdateLinks:=3) 
      AutoUpdateWB.RunAutoMacros Which:=xlAutoOpen 
      Application.Run "Auto_Update.xls!Flat" 
      AutoUpdateWB.Close 
    End If 
    Next RowNumber 
End Sub 
+1

У вас считая использовать переменную 'Global'? – TheEngineer

+0

Итак, я бы сделал RowNumber глобальной переменной? –

+1

Извините, я имел в виду переменную' Public'. Вы можете сделать RowNumber переменной Public, а затем ссылаться на нее в другой книге. См. [this] (http://stackoverflow.com/questions/3777446/vba-global-variables-multiple-workbooks). – TheEngineer

ответ

1

1). Вы объявили Public вара:

Public RowNumber As Integer 

так удалить локальное объявление того же вар в Субе

Dim RowNumber As Integer 'remove 

2). Что касается вашего второго вопроса о «, как передать аргумент», обратитесь к следующему примеру, демонстрирующим два варианта передачи аргументов Sub ByVal или ByRef:.

Sub Example(ByVal Num1 As Integer, ByRef Num2 As Integer) 
'code 
End Sub 

Надеется, что это поможет С наилучшими пожеланиями,

+0

Исправлено это, но моя проблема по-прежнему заключается в том, как передать аргумент. –

+0

Так что в моем сценарии это будет Sub autoOpen (ByVal .... –