source

GetText를 사용하여 클립보드에서 텍스트 가져오기 - 빈 클립보드에서 오류 방지

manycodes 2023. 6. 10. 09:30
반응형

GetText를 사용하여 클립보드에서 텍스트 가져오기 - 빈 클립보드에서 오류 방지

클립보드에서 텍스트를 가져오기 위해 이와 같은 코드를 사용합니다.

Dim DataObj As New MSForms.DataObject
DataObj.GetFromClipboard
myString = DataObj.GetText

오류 처리를 사용하여 클립보드가 비어 있는 경우를 넘기고 오류 트래핑을 처리되지 않은 오류 발생 시 중단으로 설정하면 모든 것이 정상입니다.

그러나 관련이 없는 이유로 오류 트래핑을 모든 오류에서 중단으로 설정하려고 하는데, 이 경우 오류가 발생합니다.DataObj.GetText빈 클립보드를 찾을 때 사용합니다.빈 클립보드를 처리하지 않기 위해 업스트림에 추가로 적용할 수 있는 테스트 종류가 있습니까?

다음을 사용하여 오류 처리On Error GoTo여기에 표시된 것처럼:

Sub GetClipBoardText()
   Dim DataObj As MSForms.DataObject
   Set DataObj = New MsForms.DataObject '<~~ Amended as per jp's suggestion

   On Error GoTo Whoa

   '~~> Get data from the clipboard.
   DataObj.GetFromClipboard

   '~~> Get clipboard contents
   myString = DataObj.GetText(1)
   MsgBox myString

   Exit Sub
Whoa:
   If Err <> 0 Then MsgBox "Data on clipboard is not text or is empty"
End Sub

빈 클립보드도 처리됩니다.

NB: 코드가 작동하려면 "Microsoft Forms 2.0 Object Library"에 대한 참조가 있어야 합니다(이 파일은 다음 위치에서 찾을 수 있습니다).C:\windows\system32\FM20.dll32비트 시스템 또는C:\Windows\sysWOW64\FM20.dll64비트 시스템의 경우), 그렇지 않으면 "사용자 정의 유형이 정의되지 않음" 오류가 표시됩니다.

아래 코드를 사용하여 위 코드를 테스트하기 전에 클립보드를 비울 수 있습니다.모듈에 붙여주세요.

Private Declare Function OpenClipboard Lib "User32.dll" _
(ByVal hWndNewOwner As Long) As Long
  
Private Declare Function EmptyClipboard Lib "User32.dll" () As Long
 
Private Declare Function CloseClipboard Lib "User32.dll" () As Long
 
Public Sub ClearClipboard()
    Dim Ret
  
    Ret = OpenClipboard(0&)
    If Ret <> 0 Then Ret = EmptyClipboard
    CloseClipboard
End Sub

편집: 다음 코드를 사용하여 클립보드가 비어 있는지 확인할 수도 있습니다.

Private Declare Function CountClipboardFormats Lib "user32" () As Long

Sub Sample()
    If (CountClipboardFormats() = 0) = True Then
        MsgBox "Clipboard is empty"
    Else
        MsgBox "Clipboard is not empty"
    End If
End Sub

디버깅을 위해 다음 코드를 b4에 추가합니다.나는 그 시험 이후에 그 오류가 사라졌습니다.이상하지만 어떻게든 작동합니다(Excel 2010)

myString = DataObj.GetText(1)
MsgBox myString

언급URL : https://stackoverflow.com/questions/9022245/get-text-from-clipboard-using-gettext-avoid-error-on-empty-clipboard

반응형