Excel4Macro를 실행하여 닫힌 워크북에서 값을 얻습니다.
저는 이 코드를 발견했고, 닫힌 시트에서 하나의 값을 끌어내기만 하면 사용하기에 좋을 것이라고 생각했습니다.
strInfoCell = "'" & strPath & "[" & strFile & "]Sheet1'!R3C3"
myvalue = ExecuteExcel4Macro(strInfoCell)
이 코드를 실행하면 다음 값이 표시됩니다.strinfocell
의
'C:\Users\my.name\Desktop[QOS DGL stuff.xlsx]Sheet1'!R3C3
하지만 코드를 실행하면 ""가 있는 데스크톱 파일을 보여주는 대화 상자가 나타납니다.QOS DGL suff
쇼잉
무엇이 원인인지, 예상대로 데이터를 철회하지 않는 이유는 무엇입니까?
디버그 출력에서 복사하여 에 붙여넣으면 경로와 파일 이름이 올바른 것으로 알고 있습니다.start>>run
그러면 올바른 시트가 열립니다.
나는 그것을 알고 있습니다.Sheet1
(이름:ACL
), 에 값이 있습니까?cells(3,3)
그것은 당신이 그것을 어떻게 사용하느냐에 달려 있습니다."strPath"에 마지막에 ""가 없기 때문에 열려 있는 파일 대화 상자가 표시됩니다.
이 코드를 사용해 보십시오.
Option Explicit
Sub Sample()
Dim wbPath As String, wbName As String
Dim wsName As String, cellRef As String
Dim Ret As String
'wbPath = "C:\Documents and Settings\Siddharth Rout\Desktop\"
wbPath = "C:\Users\my.name\Desktop\"
wbName = "QOS DGL stuff.xls"
wsName = "ACL"
cellRef = "C3"
Ret = "'" & wbPath & "[" & wbName & "]" & _
wsName & "'!" & Range(cellRef).Address(True, True, -4150)
MsgBox ExecuteExcel4Macro(Ret)
End Sub
응용 프로그램은 비슷하지만 위의 예와 같이 하드 코딩된 경로는 없습니다.이 기능은 =SDD() 기능과 유사하지만 정교하지 않은 다른 닫힌 워크북에서 값을 복사합니다.이것은 값만 반환합니다.참조가 아닙니다.따라서 참조가 필요한 추가 기능(예: VLOOKUP())과 함께 사용할 수 없습니다.이 코드를 새 VBA 모듈에 붙여넣습니다.
'Requires filename, sheetname as first argument and cell reference as second argument
'Usage: type in an excel cell -> =getvalue(A1,B1)
'Example of A1 -> C:\TEMP\[FILE1.XLS]SHEET1'
'Example of B1 -> B3
'This will fetch contents of cell (B3) located in (sheet1) of (c:\temp\file1.xls)
'Create a module and paste the code into the module (e.g. Module1, Module2)
Public xlapp As Object
Public Function getvalue(ByVal filename As String, ref As String) As Variant
' Retrieves a value from a closed workbook
Dim arg As String
Dim path As String
Dim file As String
filename = Trim(filename)
path = Mid(filename, 1, InStrRev(filename, "\"))
file = Mid(filename, InStr(1, filename, "[") + 1, InStr(1, filename, "]") - InStr(1, filename, "[") - 1)
If Dir(path & file) = "" Then
getvalue = "File Not Found"
Exit Function
End If
If xlapp Is Nothing Then
'Object must be created only once and not at each function call
Set xlapp = CreateObject("Excel.application")
End If
' Create the argument
arg = "'" & filename & "'!" & Range(ref).Range("A1").Address(, , xlR1C1)
'Execute an XLM macro
getvalue = xlapp.ExecuteExcel4Macro(arg)
End Function
위의 코드
strInfoCell = "'" & strPath & "[" & strFile & "]Sheet1'!R3C3"
myvalue = ExecuteExcel4Macro(strInfoCell)
읽어야 합니다.
strInfoCell = "'" & strPath & "[" & strFile & "]" & "Sheet1'!R3C3"
myvalue = ExecuteExcel4Macro(strInfoCell)
" & "가 없습니다.
기능 필요 없음
치어스 닐
Data = "'" & GetDirectory & "[" & GetFileName & "]" & Sheet & "'!" & Range(Address).Range("A1").Address(, , xlR1C1)
Address = "$C$3"
GetDirectory = "C:\Users\my.name\Desktop\"
GetFileName = "QOS DGL stuff.xlsx"
Sheet = "ACL"
언급URL : https://stackoverflow.com/questions/9259862/executeexcel4macro-to-get-value-from-closed-workbook
'programing' 카테고리의 다른 글
Android:다중선 텍스트 편집(텍스트 영역)에 대한 수직 정렬 (0) | 2023.08.13 |
---|---|
: a 의심중요소: a 의심중요소: a 의심중요소요소 (0) | 2023.08.13 |
Angular 6: 로컬 스토리지에 데이터 저장 (0) | 2023.08.13 |
내 날짜 시간을 UTC로 변환하는 중 문제 발생 (0) | 2023.08.13 |
C에서 "개인/제한된" 기능을 구현하는 방법은 무엇입니까? (0) | 2023.08.13 |