Excel 如何在用户操作后继续循环?
我试图找到一种方法,让系统暂停Excel 如何在用户操作后继续循环?,excel,vba,pdf,sendkeys,save-as,Excel,Vba,Pdf,Sendkeys,Save As,我试图找到一种方法,让系统暂停For循环,直到用户保存完PDF。我正在为这个程序使用SendKeys,下面的代码行打开了SaveAs菜单,用户可以在其中命名文件并选择文件路径 Application.SendKeys "+^(s)", True 我的问题是for循环只是继续,用户没有时间保存文件。我知道一种方法是使用应用程序。请立即等待,但用户查找路径和文件名称所需的时间会有所不同。是否需要等待对话框关闭 编辑:我正在向PDF表单发送密钥并尝试保存PDF表单 代码: 子测试此() Dim aF
For
循环,直到用户保存完PDF。我正在为这个程序使用SendKeys
,下面的代码行打开了SaveAs
菜单,用户可以在其中命名文件并选择文件路径
Application.SendKeys "+^(s)", True
我的问题是for循环只是继续,用户没有时间保存文件。我知道一种方法是使用应用程序。请立即等待
,但用户查找路径和文件名称所需的时间会有所不同。是否需要等待对话框关闭
编辑:我正在向PDF表单发送密钥并尝试保存PDF表单
代码:
子测试此()
Dim aFieldName As String
将pdfFilePath设置为字符串
Dim outputFolderPath作为字符串
Dim保存为变量
将非格式文件夹路径变暗为字符串
我想我会坚持多久
将wb设置为工作簿
将WS设置为Excel.Worksheet
设置wb=ActiveWorkbook
设置WS=wb.Sheets(“条目形式测试”)
使用的时间和使用的时间一样长
lastRowUsed=LastRow
变暗pdfCounter尽可能长
pdfCounter=1
pdfFilePath=GetPDFPath(“选择空PDF表单”)
outputFolderPath=GetFolder
非格式FolderPath=outputFolderPath
ThisWorkbook.FollowHyperlink PdfilePath
对于i=3至3’,使用最后一行
Application.SendKeys“{Tab}”,True
Application.SendKeys WS.Range(“D”和i).Text,True
应用程序。现在等待+0.000001
Application.SendKeys“{Tab}”,True
Application.SendKeys WS.Range(“E”和i).Text,True
应用程序。现在等待+0.000001
Application.SendKeys“{Tab}”,True
Application.SendKeys WS.Range(“G”和i).Text,True
应用程序。现在等待+0.00005
Application.SendKeys“{Tab}”,True
Application.SendKeys WS.Range(“H”和i).Value,True
应用程序。现在等待+0.000001
Application.SendKeys“{Tab}”,True
Application.SendKeys WS.Range(“J”和i).Text,True
Application.SendKeys“{Return}”,True
Application.SendKeys WS.Range(“K”&i).Text,True
应用程序。现在等待+0.000001
Application.SendKeys“{Tab}”,True
Application.SendKeys WS.Range(“I”&I).Text,True
应用程序。现在等待+0.000001
Application.SendKeys“{Tab}”,True
Application.SendKeys WS.Range(“M”&i).Text,True
Application.SendKeys“{Return}”,True
MsgBox WS.Range(“N”和i).Text
Application.SendKeys WS.Range(“N”和i).Text,True
应用程序。现在等待+0.000001
Application.SendKeys“{Tab}”,True
Application.SendKeys WS.Range(“L”和i).Text,True
应用程序。现在等待+0.000001
Application.SendKeys“{Tab}”,True
Application.SendKeys“{Tab}”,True
Application.SendKeys WS.Range(“O”&2).Text&“:”,True
Application.SendKeys“{Return}”,True
Application.SendKeys WS.Range(“p”&2).Text&“:”,True
Application.SendKeys“{Return}”,True
Application.SendKeys WS.Range(“q”&2).Text&“:”,True
Application.SendKeys“{Return}”,True
Application.SendKeys WS.Range(“r”&2).Text&“:”,True
Application.SendKeys“{Return}”,True
Application.SendKeys WS.Range(“s”&2).Text&“:”,True
Application.SendKeys“{Return}”,True
Application.SendKeys WS.Range(“t”&2).Text&“:”,True
Application.SendKeys“{Return}”,True
Application.SendKeys WS.Range(“u”和2).Text&“:”,True
Application.SendKeys“{Return}”,True
Application.SendKeys WS.Range(“v”&2).Text&“:”,True
Application.SendKeys“{Return}”,True
Application.SendKeys WS.Range(“w”&2).Text&“:”,True
Application.SendKeys“{Return}”,True
Application.SendKeys WS.Range(“x”&2).Text&“:”,True
Application.SendKeys“{Return}”,True
Application.SendKeys WS.Range(“y”&2).Text&“:”,True
Application.SendKeys“{Return}”,True
Application.SendKeys WS.Range(“z”&2).Text&“:”,True
Application.SendKeys“{Return}”,True
Application.SendKeys WS.Range(“aa”&2).Text&“:”,True
Application.SendKeys“{Return}”,True
Application.SendKeys WS.Range(“ab”&2).Text&“:”,True
Application.SendKeys“{Return}”,True
Application.SendKeys WS.Range(“ac”&2).Text&“:”,True
Application.SendKeys“{Return}”,True
Application.SendKeys WS.Range(“ad”&2).Text&“:”,True
Application.SendKeys“{Return}”,True
Application.SendKeys WS.Range(“ae”&2).Text&“:”,True
Application.SendKeys“{Return}”,True
Application.SendKeys WS.Range(“af”&2).Text&“:”,True
Application.SendKeys“{Return}”,True
Application.SendKeys WS.Range(“ag”&2).Text&“:”,True
Application.SendKeys“{Return}”,True
Application.SendKeys WS.Range(“ah”&2).Text&“:”,True
Application.SendKeys“{Return}”,True
Application.SendKeys WS.Range(“ai”&2).Text&“:”,True
Application.SendKeys“{Return}”,True
Application.SendKeys WS.Range(“aj”&2).Text&“:”,True
Application.SendKeys“{Return}”,True
Application.SendKeys WS.Range(“ak”&2).Text&“:”,True
Application.SendKeys“{Return}”,True
Application.SendKeys WS.Range(“al”&2).Text&“:”,True
应用程序。现在等待+0.000001
'保存并循环回这里
端接头
函数GetPDFPath(文本为字符串)为字符串
Dim fldr As FILE对话框
以字符串形式显示
设置fldr=Application.FileDialog(msoFile
Sub testingThis()
Dim aFieldName As String
Dim pdfFilePath As String
Dim outputFolderPath As String
Dim WasSaved As Variant
Dim nonFormattedFolderPath As String
Dim i As Long
Dim wb As Workbook
Dim WS As Excel.Worksheet
Set wb = ActiveWorkbook
Set WS = wb.Sheets("Entry Form Test")
Dim lastRowUsed As Long
lastRowUsed = LastRow
Dim pdfCounter As Long
pdfCounter = 1
pdfFilePath = GetPDFPath("Select the Empty PDF Form")
outputFolderPath = GetFolder
nonFormattedFolderPath = outputFolderPath
ThisWorkbook.FollowHyperlink pdfFilePath
For i = 3 To 3 'lastRowUsed
Application.SendKeys "{Tab}", True
Application.SendKeys WS.Range("D" & i).Text, True
Application.Wait Now + 0.000001
Application.SendKeys "{Tab}", True
Application.SendKeys WS.Range("E" & i).Text, True
Application.Wait Now + 0.000001
Application.SendKeys "{Tab}", True
Application.SendKeys WS.Range("G" & i).Text, True
Application.Wait Now + 0.00005
Application.SendKeys "{Tab}", True
Application.SendKeys WS.Range("H" & i).Value, True
Application.Wait Now + 0.000001
Application.SendKeys "{Tab}", True
Application.SendKeys WS.Range("J" & i).Text, True
Application.SendKeys "{Return}", True
Application.SendKeys WS.Range("K" & i).Text, True
Application.Wait Now + 0.000001
Application.SendKeys "{Tab}", True
Application.SendKeys WS.Range("I" & i).Text, True
Application.Wait Now + 0.000001
Application.SendKeys "{Tab}", True
Application.SendKeys WS.Range("M" & i).Text, True
Application.SendKeys "{Return}", True
MsgBox WS.Range("N" & i).Text
Application.SendKeys WS.Range("N" & i).Text, True
Application.Wait Now + 0.000001
Application.SendKeys "{Tab}", True
Application.SendKeys WS.Range("L" & i).Text, True
Application.Wait Now + 0.000001
Application.SendKeys "{Tab}", True
Application.SendKeys "{Tab}", True
Application.SendKeys WS.Range("O" & 2).Text & ":", True
Application.SendKeys "{Return}", True
Application.SendKeys WS.Range("p" & 2).Text & ":", True
Application.SendKeys "{Return}", True
Application.SendKeys WS.Range("q" & 2).Text & ":", True
Application.SendKeys "{Return}", True
Application.SendKeys WS.Range("r" & 2).Text & ":", True
Application.SendKeys "{Return}", True
Application.SendKeys WS.Range("s" & 2).Text & ":", True
Application.SendKeys "{Return}", True
Application.SendKeys WS.Range("t" & 2).Text & ":", True
Application.SendKeys "{Return}", True
Application.SendKeys WS.Range("u" & 2).Text & ":", True
Application.SendKeys "{Return}", True
Application.SendKeys WS.Range("v" & 2).Text & ":", True
Application.SendKeys "{Return}", True
Application.SendKeys WS.Range("w" & 2).Text & ":", True
Application.SendKeys "{Return}", True
Application.SendKeys WS.Range("x" & 2).Text & ":", True
Application.SendKeys "{Return}", True
Application.SendKeys WS.Range("y" & 2).Text & ":", True
Application.SendKeys "{Return}", True
Application.SendKeys WS.Range("z" & 2).Text & ":", True
Application.SendKeys "{Return}", True
Application.SendKeys WS.Range("aa" & 2).Text & ":", True
Application.SendKeys "{Return}", True
Application.SendKeys WS.Range("ab" & 2).Text & ":", True
Application.SendKeys "{Return}", True
Application.SendKeys WS.Range("ac" & 2).Text & ":", True
Application.SendKeys "{Return}", True
Application.SendKeys WS.Range("ad" & 2).Text & ":", True
Application.SendKeys "{Return}", True
Application.SendKeys WS.Range("ae" & 2).Text & ":", True
Application.SendKeys "{Return}", True
Application.SendKeys WS.Range("af" & 2).Text & ":", True
Application.SendKeys "{Return}", True
Application.SendKeys WS.Range("ag" & 2).Text & ":", True
Application.SendKeys "{Return}", True
Application.SendKeys WS.Range("ah" & 2).Text & ":", True
Application.SendKeys "{Return}", True
Application.SendKeys WS.Range("ai" & 2).Text & ":", True
Application.SendKeys "{Return}", True
Application.SendKeys WS.Range("aj" & 2).Text & ":", True
Application.SendKeys "{Return}", True
Application.SendKeys WS.Range("ak" & 2).Text & ":", True
Application.SendKeys "{Return}", True
Application.SendKeys WS.Range("al" & 2).Text & ":", True
Application.Wait Now + 0.000001
'SAVE AND LOOP BACK HERE
End Sub
Function GetPDFPath(theText As String) As String
Dim fldr As FileDialog
Dim sItem As String
Set fldr = Application.FileDialog(msoFileDialogFilePicker)
With fldr
.Title = theText
.AllowMultiSelect = False
.InitialFileName = Application.DefaultFilePath
If .Show <> -1 Then GoTo NextCode
sItem = .SelectedItems(1)
End With
NextCode:
GetPDFPath = sItem
Set fldr = Nothing
End Function
Function GetFolder() As String
Dim fldr As FileDialog
Dim sItem As String
Set fldr = Application.FileDialog(msoFileDialogFolderPicker)
With fldr
.Title = "Select the Folder to Place the Completed DD1144 Forms"
.AllowMultiSelect = False
.InitialFileName = Application.DefaultFilePath
If .Show <> -1 Then GoTo NextCode
sItem = .SelectedItems(1)
End With
NextCode:
GetFolder = sItem
Set fldr = Nothing
End Function
Function LastRow()
LastRow = Range("a65536").End(xlUp).Row
End Function
Private Sub FlowchartProcess1_Click()
Call WriteToAdobeFields
End Sub
Private Declare Function IsWindowVisible Lib "User32" (ByVal hWnd As Long) As Long
Private Declare Function FindWindow Lib "User32" Alias "FindWindowA" _
(ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Sub TestPDFForm()
Dim pdfFilePath As String: pdfFilePath = GetFilePath("Select the empty PDF form")
'Dim outputPath As String: outputPath = GetFolderPath("Select the folder to save the completed DD1144 forms")
'If pdfFilePath = "-" Or outputPath = "-" Then Exit Sub
Dim ProcID As Long
Dim sh As Object: Set sh = CreateObject("WScript.Shell")
Dim AdobeExe As String: AdobeExe = sh.RegRead("HKCR\Software\Adobe\Acrobat\Exe\")
ProcID = RunShell(AdobeExe, pdfFilePath)
Application.SendKeys "+^(s)", True
Delay (2.5) ' Delay until "Save As" dialog has opened
Debug.Print Timer
Do ' Delay until window has been closed
Delay (0.5)
Loop While IsWindowVisible(FindSaveAs) <> 0
Debug.Print Timer
End Sub
Function FindSaveAs() As Long
FindSaveAs = FindWindow(vbNullString, "Save As")
End Function
Function RunShell(path As String, Optional arguments As String, Optional windowstyle As VbAppWinStyle = vbNormalFocus) As Long
If arguments <> "" Then path = path & " """ & arguments & """"
RunShell = Shell(path, windowstyle)
End Function
Function GetFilePath(caption As String) As String
Dim sItem As String: sItem = "-"
With Application.FileDialog(msoFileDialogFilePicker)
.Title = caption
.AllowMultiSelect = False
.InitialFileName = Application.DefaultFilePath
If .Show = -1 Then sItem = .SelectedItems(1)
End With
GetFilePath = sItem
End Function
Function GetFolderPath(caption As String) As String
Dim sItem As String: sItem = "-"
With Application.FileDialog(msoFileDialogFolderPicker)
.Title = caption
.AllowMultiSelect = False
.InitialFileName = Application.DefaultFilePath
If .Show = -1 Then sItem = .SelectedItems(1)
End With
GetFolderPath = sItem
End Function
Function Delay(Seconds As Single) ' Millisecond precision
Dim StopTime As Single: StopTime = Timer + Seconds
Do While Timer < StopTime
DoEvents
Loop
End Function