VBAã§ç¹å®ã®ãã©ã«ãå ã®PDFãããŒã¯ãŒãã§åŒã£æããŠé£ç¶å°å·
äºåäœæ¥ã®çŸå Žã§ã¯ããã¡ã€ã«ãµãŒãäžã«æŒããŠãã£ã¬ã¯ããªæ§é ã«åãããŠãã¡ã€ã«ãé 眮ãããäœæããããšãã£ããæ¬æ¥ã«ä»éããéåãçµæ§ãªéãããŸãããããããã«ããªãã®æéãè²»ãããŠãããããã±ãŒã¹ããããŸãã
é 眮ã ãã§ãªãé 眮åŸã®å å·¥ãç·šéäœæ¥ãªã©ã®æ¥åãéåžžã«å€ããããã«å å·¥åŸã¯ãã¡ãã«é 眮ãšãã£ãããã«ç§»åãè¡ãããããããããã§ãããããã®æ¥åã¯æéã¯æãããã®ã®ããèªäœã«å€§ããªäŸ¡å€ãããããã§ã¯ãããŸãããããã§ãããã®æ¥åãèªååãšãªããšåºãŠããã®ããVBAãã
ä»åã¯ãããã£ããžã£ã³ã«ã®ïŒã€ã§ãããç¹å®ãã©ã«ãå ã®PDFãããŒã¯ãŒãã§æ€çŽ¢ããã¡ã€ã«ãå°å·ããããããã©ã«ãã®ãã©ãã°ã¢ã³ãããããã§å®çŸãããã®ãäœã£ãŠã¿ãŸããã
ç®æ¬¡
ä»å䜿çšãããã¡ã€ã«
â»äºåã«ããã°ã©ã ã®èšå®ãè¡ãå¿ èŠããããŸãã
â»PDFã®èŠå®ã®ã¢ããªã¯ãAdobe Readerã§ããå¿ èŠããããŸãã
äºåæºå
åç §èšå®
ä»åã®ããã°ã©ã ã¯ãããã€ãã®åç §èšå®ã远å ããŠããŸããæåã§è¿œå ããé ç®ã¯
- Microsoft Scripting Runtime
- Windows Script Host Object Model (shellã«ããã³ãã³ãã©ã€ã³å®è¡ã§äœ¿çšããŸã)
ã®ïŒã€ãåã³ãUserFormã§ãListViewãã远å ããŠããé¢ä¿ã§ã
- Microsoft Forms 2.0 Object Library
- Microsoft Windows Common Controls 6.0 (SP6)
ã远å ãããŠããŸãããã®ïŒã€ã«ã€ããŠã¯åç §èšå®ã§ã¯ãªããUserFormäžã§ã®ã³ã³ãããŒã«ã®è¿œå ã«ãŠèªåçã«è¿œå ãããããã«ãªã£ãŠããŸãã
å³ïŒåç §èšå®ã®è¿œå
ListViewã³ã³ãããŒã«ã®è¿œå
Visual Basicã®ç»é¢ã«ãŠæ°ãããŠãŒã¶ãã©ãŒã ã远å ãããå Žåã«ã¯ããæ¿å ¥ãâããŠãŒã¶ãã©ãŒã ããéžæããäºã§ããã©ãŒã ã远å ããäºãå¯èœã§ãããŸããæšæºã§çšæãããŠããã³ã³ãããŒã«ã®ä»ã«ãVisual Basic 6.0çã§çšæãããŠãOCXãã¡ã€ã«ãæå®åºæ¥ãä»åã¯ãListViewã³ã³ãããŒã«ãã远å ããŠãããŸããè¿œå æé ã¯ä»¥äžã®éãã
- UserFormãéã
- ã¡ãã¥ãŒãããããŒã«ãâããã®ä»ã®ã³ã³ãããŒã«ããéã
- ã³ã³ãããŒã«ã®è¿œå ãã€ã¢ãã°ã«ãŠãMicrosoft ListView Control, version X.Xãæ¢ããŠããã§ãã¯ãå ¥ããŠOKãã
- ã³ã³ãããŒã«ã®ããŒã«ããã¯ã¹ã«ListViewã³ã³ãããŒã«ã远å ãããããã«ãªããŸãã
- å®éã«è²Œãä»ããŠãã³ã³ãããŒã«ã®ããããã£ã«æŒããŠãOLEDragMode = ccOLEDragAutomaticãOLEDropMode = ccOLEDropManualã«èšå®ã倿ŽããŠãããŸãã
å³ïŒListViewã³ã³ãããŒã«ã¯è¿œå ããªããšè¡šç€ºãããªã
å³ïŒéçºæã¯OLEDragModeãªã©ãèšå®ããŠããå¿ èŠããããŸãã
äœ¿ãæ¹
ä»å䜿çšãããã¡ã€ã«ãéããšããã¡ã€ã«æœåºããšãããªãã³ã远å ãããŠããŸããäºåã«ã»ããã£ã³ã°ãå¿ èŠãšãªããŸãã
ã»ããã£ã³ã°
ãã¢ããªã®èšå®ããã¯ãªãã¯ãããšãããã°ã©ã ã»ããã£ã³ã°çšã®ãã€ã¢ãã°ã衚瀺ãããŸãã以äžã®é ç®ãã»ããã£ã³ã°ããŠãããŸãããã
- ä¿åå - ããŒã¯ãŒãã«åèŽãããã¡ã€ã«ãæå®ã®ãã©ã«ãã«ã³ããŒããŸãããå¿ é ã
- æœåºãã¡ã€ã«å - ãã¡ã€ã«åãæå®ããŸããå®éã«ã¯ååŸãã¢ã¹ã¿ãªã¹ã¯ã§æ¬ã£ãã¯ã€ã«ãã«ãŒãã§æ€çŽ¢ããŠããŸããå¿ é ã
- ããªã³ã¿éžæ - é£ç¶å°å·ãããå Žåã«ã¯ããã§ããªã³ã¿ãéžãã§ãããŸãããªã¹ãã¯èªåã§ã€ã³ã¹ããŒã«æžã¿ããªã³ã¿ãåºãŸã
- é£ç¶å°å·å®è¡ - ãªãã·ã§ã³é ç®ã§ã2.ã§ããããããã¡ã€ã«ïŒPDFïŒãé£ç¶ã§å°å·ããå Žåã«ã¯ãã§ãã¯ãå ¥ããŸãã
èšå®ã¯Bookãšåããã¡ã€ã«åã§åããã£ã¬ã¯ããªã«iniãã¡ã€ã«ãšããŠä¿åãããŸããéäžã§ãã¡ã€ã«åãå€ããŠããŸããšåã®èšå®ã¯iniãã¡ã€ã«ã®æ¹ããã¡ã€ã«åãå€ããŠããå¿ èŠããããŸãã
å³ïŒèšå®çšã®ãã€ã¢ãã°ã¯å¿ ãã»ããã¢ãããå¿ èŠã§ã
å®éã«ãã¡ã€ã«ãåãåºããŠã¿ã
ããã¡ã€ã«ã®æœåºãšå°å·ããå®è¡ãããšListViewã®ã€ãããã€ã¢ãã°ã衚瀺ãããŸãããã®ListViewã«å¯ŸããŠä»¥äžã®åŠçãè¡ããšããã¡ã€ã«ã®ã³ããŒãšé£ç¶å°å·ãå®è¡ãããŸãã
- æ€çŽ¢ããããã©ã«ããæŽãã§ãListViewã³ã³ãããŒã«ã«ãã©ãã°ã»ã¢ã³ãã»ããããããã
- åŠçããããåŠãã®ã¡ãã»ãŒãžã§ãã¯ãããéžã¶ãšåŠçãå®è¡ããŸãã
- æå®ã®ããŒã¯ãŒãããã¡ã€ã«åã«å«ããã¡ã€ã«ããªã¹ããžãšè¿œå ãã€ã€ããªãã·ã§ã³ã§é£ç¶å°å·ãå®è¡ã«ãã§ãã¯ãå ¥ã£ãŠããå Žåãããã§Adobe Readerãå©çšããŠå°å·ãè¡ã£ãŠããŸãã
- ãŸããåããã¡ã€ã«ãæå®ã®ãã©ã«ãã«ã³ããŒãè¡ããŸãã
å³ïŒããããããã¡ã€ã«ããããšãªã¹ãã«ç»é²ãããŸãã
ãœãŒã¹ã³ãŒã
settingãã©ãŒã
1 2 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 |
Private Sub CommandButton1_Click() 'åæãã©ã«ãã¯ãã¹ã¯ãããã«ãã Dim deskpath As String deskpath = CreateObject("WScript.Shell").SpecialFolders.Item("Desktop") & "\" 'ãã©ã«ããéžæãããã€ã¢ãã°è¡šç€º With Application.FileDialog(msoFileDialogFolderPicker) .InitialFileName = deskpath .AllowMultiSelect = False .Title = "ä¿åå
ãã©ã«ãã®éžæ" If .Show = True Then 'ããã¹ãããã¯ã¹ã«ãã¹ã代å
¥ Me.TextBox1.Value = .SelectedItems(1) End If End With End Sub Private Sub CommandButton2_Click() 'ããã©ã«ãã®ä¿åå
IniWrite "USER", "SAVEPATH", Me.TextBox1.Value 'ããã©ã«ãã®æœåºããŒã¯ãŒã IniWrite "USER", "KEYWORD", Me.TextBox2.Value 'ããªã³ããªãã·ã§ã³ IniWrite "USER", "PRINTOPT", Me.CheckBox1.Value 'ããªã³ã¿å IniWrite "USER", "PRINTER", Me.ComboBox1.Value 'ãã©ãŒã ãéãã Unload UserForm2 End Sub 'åæåæã«iniãã¡ã€ã«ããèšå®ãèªã¿èŸŒã Private Sub UserForm_Initialize() 'åæå Me.CheckBox1.Value = False 'ããã©ã«ãã®ä¿åå
Me.TextBox1.Value = IniRead("USER", "SAVEPATH", "") 'ããã©ã«ãã®æœåºããŒã¯ãŒã Me.TextBox2.Value = IniRead("USER", "KEYWORD", "") 'å°å·ãªãã·ã§ã³ Me.CheckBox1.Value = IniRead("USER", "PRINTOPT", "FALSE") 'ããªã³ã¿åãªã¹ããã³ã³ãããã¯ã¹ã«åæ '倿°ã®å®çŸ©' Dim tempShell As Object Dim prinman As Object Set tempShell = CreateObject("Shell.Application") intRow = 1 For Each prinman In tempShell.Namespace(4).Items With ComboBox1 .AddItem prinman.Name End With Next Set tempShell = Nothing 'iniãã¡ã€ã«ã®ããªã³ã¿åãã³ã³ãããã¯ã¹ã«å
¥ãã Me.ComboBox1.Value = IniRead("USER", "PRINTER", "") End Sub |
- FileDialogã«ãŠä¿åå ãã©ã«ãã®æå®ãè¡ãããŠããŸããåæå€ã¯ãã¹ã¯ãããã®ãã¹ãååŸããŠå²ãåœãŠãŠããŸãã
- ãã©ãŒã ãéããæã«Initializeãå®è¡ãããiniãã¡ã€ã«ããã®èšå®å€ãããŒããããŸãã
- ãŸããã€ã³ã¹ããŒã«æžã¿ã®ããªã³ã¿ãªã¹ããæ§ç¯ããã³ã³ãããã¯ã¹ã«è¿œå ãè¡ã£ãŠããŸãã
- èšå®ãä¿åãã¿ã³ã«ãŠãå ¥åæžã¿ã®èšå®å€ãiniãã¡ã€ã«ãžãšä¿åãè¡ããŸãã
listviewãã©ãŒã
éåžžã®é£ç¶å°å·ã®å Žå
1 2 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 127 128 129 130 131 132 133 134 135 136 137 138 139 140 |
Public Printername As String Public printoption As Boolean Public filefilter As String Public exportpath As String Public counter As Long 'ãã©ãã°ïŒãããããããæã®åŠç Private Sub ListView1_OLEDragDrop(Data As MSComctlLib.DataObject, Effect As Long, Button As Integer, Shift As Integer, x As Single, y As Single) 'Scripting Runtimeã®åæå Dim FSO As FileSystemObject Set FSO = New FileSystemObject '倿°ã®å®£èš Dim result As Variant counter = 0 'åŠçãå®è¡ãããç¢ºèª result = MsgBox("ãã©ã«ãå
ã®ç¹å®ãã¡ã€ã«åã®PDFãåŠçãã¡ãããŸããïŒïŒ", vbYesNo + vbDefaultButton2 + vbExclamation) If result = vbYes Then 'ã€ã³ããŒãåŠçãç¶è¡ãã Else 'ã¡ãã»ãŒãžã衚瀺 MsgBox "åŠçããã£ã³ã»ã«ããŸããã" 'çµäºåŠç Exit Sub End If 'ãã£ã«ã¿ãããã¡ã€ã«åã®å€ãiniãã¡ã€ã«ããååŸãã Printername = IniRead("USER", "PRINTER", "") exportpath = IniRead("USER", "SAVEPATH", "") filefilter = IniRead("USER", "KEYWORD", "") printoption = IniRead("USER", "PRINTOPT", "") If exportpath = "" Or IsNull(exportpath) Then MsgBox "ãã¡ã€ã«ã®ä¿åå
ãæå®ãããŠããŸããã" Exit Sub End If If filefilter = "" Or IsNull(filefilter) Then MsgBox "ãã¡ã€ã«åæœåºçšã®ããŒã¯ãŒããèšå®ãããŠããŸãããã" Exit Sub End If If FSO.FolderExists(exportpath) Then Else MsgBox "åºåå
ãã©ã«ããååšããŸããã" Exit Sub End If 'ãã©ãã°ããããã©ã«ãã®èŠªãã¹ã確å®ãã Dim targetfolder As String Dim parentfolderpath As String parentfolderpath = FSO.GetParentFolderName(Data.Files(1)) targetfolder = parentfolderpath & "\" & FSO.GetFileName(Data.Files(1)) & "\" 'FileSearchã䜿ã£ãŠåŠç Call FileSearch(targetfolder) 'çµäºåŠç MsgBox "åŠçãå®äºããŸããã" End Sub 'ãã¡ã€ã«ãæ¢çŽ¢ã㊠Public Sub FileSearch(targetfolder As String) 'Scripting Runtimeã®åæå Dim FSO As FileSystemObject Set FSO = New FileSystemObject Dim Folder As Variant, File As Variant Dim filenameman As String 'Acrobat Readerã§å°å·ããã³ãã³ãçšå€æ° Dim shell As IWshRuntimeLibrary.WshShell Set shell = New IWshRuntimeLibrary.WshShell Dim shellcom As String 'ãã¡ã€ã«ãã¹ Dim srcFile As String, destFile As String 'ãµããã©ã«ãæ¢çŽ¢ For Each Folder In FSO.GetFolder(targetfolder).SubFolders 'ååž°çã«é¢æ°ãåŒã³åºã Call FileSearch(Folder.path) Next Folder 'ãã©ã«ãå
ã®ãã¡ã€ã«ãæ¢çŽ¢ For Each File In FSO.GetFolder(targetfolder).Files If InStr(File.Type, "Adobe Acrobat Document") > 0 Then 'ãã¡ã€ã«åã ãååŸãã filenameman = File.Name 'ãã¡ã€ã«æœåºããŒã¯ãŒããå«ããã©ãããå€å® If filenameman Like "*" & filefilter & "*" Then 'ã³ããŒå
ãšã³ããŒå
ã®ãã¹ãååŸ srcFile = targetfolder & "\" & filenameman destFile = exportpath & "\" & counter & "_" & filenameman 'ãã¡ã€ã«ãæå®ã®å Žæã«ã³ããŒãã FSO.CopyFile srcFile, destFile 'å°å·ãªãã·ã§ã³ãTrueãªãé£ç¶å°å·ãè¡ã If printoption = True Then 'ãã¡ã€ã«ãå°å·ãã 'Shellã³ãã³ããèšå® shellcom = "AcroRd32.exe /t " & exportpath & "\" & counter & "_" & filenameman & " " & Printername 'Shellã³ãã³ããå®è¡ shell.Run (shellcom) End If 'ãªã¹ããã¥ãŒã«æ
å ±ã远å With ListView1.ListItems.Add .Text = filenameman .SubItems(1) = "åŠçå®äº" End With 'ã«ãŠã³ã¿ãŒãå ç® counter = counter + 1 End If End If Next File Exit Sub End Sub 'ãŠãŒã¶ãã©ãŒã ãåæåãã Private Sub UserForm_Initialize() 'åæåã®å®è¡ With ListView1 .View = lvwReport .LabelEdit = lvwManual .HideSelection = False .AllowColumnReorder = True .FullRowSelect = True .Gridlines = True .ColumnHeaders.Add , "Filename", "ãã¡ã€ã«å", 200 .ColumnHeaders.Add , "Result", "åŠççµæ", 100 End With End Sub |
- èšå®å€é¢ä¿ã¯ã°ããŒãã«å€æ°ã§æ ŒçŽããŠãããŸãã
- ListViewã«æŒããŠOLEDragDropã€ãã³ãå ã«ä»åã®ã¡ã€ã³ãšãªãã³ãŒããèšè¿°ããŸãã
- Dragããããã©ã«ãã®ãã¹ãtargetfolderã«æ ŒçŽããæ¬¡ã®ãµãã«ãŒãã³ãžãšæž¡ããŠããŸãã
- ãµããã©ã«ãããã£ãå Žåã«ã¯ããµããã©ã«ãå ãæ¢çŽ¢ããããã«ååž°çã«FileSearchãåŒã³åºãä»çµã¿ã«ãªã£ãŠããŸãã
- PDFãã¡ã€ã«ã§ãããïŒãŸãããã¡ã€ã«åã«æå®ã®ããŒã¯ãŒããå ¥ã£ãŠãããïŒãLikeã§èª¿æ»ããå«ãŸããŠããå Žåã«ã¯ãã¡ã€ã«ã®åŠçãç¶è¡ããã
- ã³ããŒå ã§ã¯ãã¡ã€ã«åã®é ã«é£ç¶ããæ°åãä»äžããããã«ããŠããŸãã
- å°å·ãªãã·ã§ã³ãæå¹ãªå Žåã«ã¯ãAdobe Readerãç«ã¡äžããå°å·ãå®è¡ããShellã³ãã³ããCallããããã«ããŠãããŸãã
- ListViewã³ã³ãããŒã«ã«ã¯ãFile.typeãAdobe Acrobat Documentã§ãæå®ã®ããŒã¯ãŒããå«ããã®ãä»åã®åŠç察象ãšãªããŸããFile.typeã®éšåãExcelãªã©ã«ããã°ãExcelã®ãã¡ã€ã«ãããã察象ã«ãªããŸãã
äž¡é¢å°å·ããããå Žå
VBAã§ã¯Excelãªã©ã®å Žåã¯ãããã詳现ãªå°å·ã®æç€ºãæž¡ãäºãå¯èœã§ãããããã§ãããªã³ã¿ãã©ã€ãã«å¯Ÿããéåžžã«è©³çްãªèšå®ããçŽæ¥æäœããäºãåºæ¥ãŸããïŒããå°çšã®DLLãããã°å¯èœã§ãããéåžžã«ãé«ãïŒããã®ãããçµæ§ããå©çšãããäž¡é¢å°å·ãã§ãããVBAããæ£æ»æ³ã§å®è¡ããææ®µããããŸããã
ããã§å©çšããã®ãVBAã§ä»ã®ã¢ããªã±ãŒã·ã§ã³ãæäœããã§ã玹ä»ããŠããç¹å®ã®ãŠã£ã³ããŠã«å¯ŸããŠããŒæäœãéãèŸŒãææ³ã§äž¡é¢å°å·ã«å¯Ÿå¿ããäºãå¯èœã§ããä»åã¯Adobe Readerã察象ãšããŠããããä»ã®ããªã³ã¿ãã©ã€ãçã®å Žåã«ã¯ãããŒãç°ãªããšæããŸãã®ã§ãé©å®èªã¿æ¿ããŠãã ããã
以äžã«åã®ã³ãŒãã«è¿œå ããéšåã远èšããŸãã
settingãã©ãŒã
ãã©ãŒã ã«1åãªãã·ã§ã³ãšããŠãäž¡é¢å°å·ã®ãã§ãã¯ããã¯ã¹ã远å ããèšå®ãä¿åããã³ãŒãã远å ããŠããŸãã
1 2 3 4 5 |
'ãã©ãŒã ããŒãæ Me.CheckBox2.Value = IniRead("USER", "DUPLEX", "FALSE") 'ä¿åãã¿ã³ã¯ãªãã¯æ IniWrite "USER", "DUPLEX", Me.CheckBox2.Value |
listviewãã©ãŒã
é£ç¶å°å·ãªãã·ã§ã³ã«ãã§ãã¯ãå ¥ã£ãŠãå Žåã«ãªã³ãšãªãããã«ã³ãŒããçµãã§ãããŸãããã¡ãããäž¡é¢å°å·ãªãã·ã§ã³ããªã³ã§ããå¿ èŠæ§ããããŸãã
1 2 3 4 5 6 7 8 |
'ãã©ãã°ïŒãããããããæã®åŠç Private Sub ListView1_OLEDragDrop(Data As MSComctlLib.DataObject, Effect As Long, Button As Integer, Shift As Integer, x As Single, y As Single) ããã»ã»ã»ã»ã»ã»åç¥ã»ã»ã»ã»ã»ã» ããduplexopt = IniRead("USER", "DUPLEX", "") ããã»ã»ã»ã»ã»ã»åŸç¥ã»ã»ã»ã»ã»ã» end function |
1 2 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 |
Public Sub FileSearch(targetfolder As String) ããã»ã»ã»ã»ã»ã»åç¥ã»ã»ã»ã»ã»ã» 'å°å·ãªãã·ã§ã³ãTrueãªãé£ç¶å°å·ãè¡ã If printoption = True Then 'äž¡é¢å°å·ãã©ããïŒ If duplexopt = False Then 'ãã¡ã€ã«ãå°å·ãã 'Shellã³ãã³ããèšå® strShellCommand = "AcroRd32.exe /t " & exportpath & "\" & counter & "_" & filenameman & " " & Printername 'Shellã³ãã³ããå®è¡ wshShellObj.Run (strShellCommand) Else 'äž¡é¢å°å·ã®å®è¡ ret = pdfremote(exportpath & "\" & counter & "_" & filenameman) 'è¿ãå€ã®æ€èšŒ If ret = False Then MsgBox "ãšã©ãŒãçºçãå°å·ã忢ããŸããã" Exit Sub End If End If End If ããã»ã»ã»ã»ã»ã»åŸç¥ã»ã»ã»ã»ã»ã» end sub |
äž¡é¢å°å·ã³ãŒã
pdfremote颿°ãšããŠåŒã³åºããããäž¡é¢å°å·ãå®è¡ããçºã®ã³ãŒãã§ããçŽæ¥ãã©ã€ãã«æç€ºãåºããªãã®ã§ãå°å·ãã€ã¢ãã°ãVBAã§æäœããŠå°å·ãå®è¡ããããã¯ããã¯ã§ãã
1 2 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 |
'ããã°ã©ã ã«ãŠã§ã€ãããããããã®ã³ãã³ã Public Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal ms As Long) 'ããã»ã¹IDããããã»ã¹ãªããžã§ã¯ããã³ãã«ãååŸãã Public Declare PtrSafe Function OpenProcess Lib "kernel32" _ (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, _ ByVal dwProcessId As Long) As Long 'ãŠã£ã³ããŠãã³ãã«ãã¢ã¯ãã£ãã«ãã Public Declare PtrSafe Function SetForegroundWindow Lib "user32" (ByVal hwnd As Long) As Long '宿°å®çŸ© Public Const SYNCHRONIZE = &H100000 'PDFãéããŠããªã³ã¿ã»ããã¢ããããŠéãã Public Function pdfremote(ByVal srcFile As String) As Boolean 'ãšã©ãŒãçºçãããææãã On Error GoTo error_pdfremote 'Acrobat Readerã§å°å·ããã³ãã³ãçšå€æ° Dim shellcom As String Dim adobe As String Dim procid As Long Dim hwnd As Long Dim timekun As Long adobe = "C:\Program Files (x86)\Adobe\Acrobat Reader DC\Reader\AcroRd32.exe" shellcom = adobe & " " & srcFile timekun = 1500 Dim objShell As Object, objExec As Object Set objShell = CreateObject("WScript.Shell") Set objExec = objShell.Exec(shellcom) 'èµ·åããããã°ã©ã ã®PIDãååŸãã procid = objExec.ProcessId 'sleep Sleep timekun 'PIDããhwndãååŸ hwnd = OpenProcess(SYNCHRONIZE, True, procid) 'hwndãã¢ã¯ãã£ãã«ãã SetForegroundWindow hwnd 'éãã SendKeys "^p" Sleep timekun SendKeys "%B" Sleep timekun SendKeys "{ENTER}" Sleep timekun Sleep timekun SendKeys "%{F4}" 'å€ãè¿ã pdfremote = True Exit Function error_pdfremote: 'ãšã©ãŒãšããŠåŒã³åºãå
ãžè¿ã pdfremote = False Exit Function End Function |
- é£ç¶å°å·å®è¡ãªãã·ã§ã³ãæå¹ã§ãå°äžã€ãäž¡é¢å°å·å®è¡ã®ãªãã·ã§ã³ãæå¹ãªæã ãå®è¡ãããŸãã
- shellã®execã³ãã³ãã®å ŽåãRunã³ãã³ããšéããå®è¡ããçµæã®ããã»ã¹IDãªã©ãååŸåºæ¥ãŸãã
- Adobe Readerã®exeãŸã§ã¯ãã«ãã¹ã§ããã¹ãéã£ãŠããã°ãAcroRd32.exeã ãã§ãå®è¡å¯èœã
- ãŠã§ã€ãã¯ããã15ç§ã»ã©ãsleep颿°ã«ãŠå®è¡ããŠããŸãã
- shellã®è¿ãå€ã®ãªããžã§ã¯ãã«å¯ŸããŠãProcessIdã«ãŠããã»ã¹IDãååŸå¯èœã§ãã
- OpenProcess颿°ã«ãŠProcessIdãããŠã£ã³ããŠãã³ãã«ãååŸããŠããŸããååŸããªãã©ããå¥ã®éããŠããŠã£ã³ããŠã«å¯ŸããŠåŠçãå®è¡ãããŠããŸããŸãã
- SetForegroundWindow颿°ã«ãŠãæå®ã®ãŠã£ã³ããŠãã³ãã«ã®ãŠã£ã³ããŠãã¢ã¯ãã£ãã«ããŠããŸãã
- Sendkeysã«ãŠããŒã³ãŒããéãã€ããŸããå°å·å®è¡âãã€ã¢ãã°è¡šç€ºããããAlt+Bã«ãŠäž¡é¢å°å·ã«ãã§ãã¯ãå ¥ããããã
- æåŸã¯EnterããŒã«ãŠäž¡é¢å°å·ãå®è¡ããŠããŸãããã®åŸAlt + F4ããŒã®éä¿¡ã§ããã°ã©ã ãçµäºãããŠããŸãã
- å°å·å®è¡ãŸã§å®äºããããåŒã³åºãå ã«è¿ãå€ãè¿ããŸãã
- 泚æäºé ãšããŠãå°å·æç€ºå®è¡äžã¯PCã®æäœã¯çŠç©ãããããªæåã«ãªã£ãããããã°ã©ã ãçµäºããå¯èœæ§ããããŸãã
- Adobe Readerã®ã³ãã³ãã©ã€ã³ã¹ã€ããã§ã¯ä»åã¯å°å·ãå®è¡ãããŠããŸããã
é¢é£ãªã³ã¯
- 3çš®é¡ã®[ãã¡ã€ã«ãéã]ãã€ã¢ãã°ããã¯ã¹
- ããªã³ã¿åã調ã¹ã
- ãã¡ã€ã«ãæ€çŽ¢ãã
- Iniãã¡ã€ã«ã®èªã¿æžã ïŒ Access
- æ¹èšçã»æ¡åŒµåãªãã§ãã¡ã€ã«åãååŸãããŠãŒã¶ãŒå®çŸ©é¢æ°
- ListViewã³ã³ãããŒã«ã®äœ¿ãæ¹
- VBAã§PDFãå°å·ããæ¹æ³ã»ç®¡çããããããŒã«ã«ããæ¹æ³ã解説ïŒ