Lala's tower

엑셀로 gemini에게 질문하기

엑셀로 gemini에게 질문하기

2024-07-20 15:59:05

gemini는 챗GPT, 클로드에 비해 아주 저렴합니다. api를 이용하여 질문하고 답변을 받는 엑셀을 만들어 보겠습니다.

gemini에게 질문하면 답변해주는 기능 결과화면입니다.

gemini api-key

제이나이 키를 받습니다.

엑셀을 실행하고 Alt+F11을 눌러 VBA 편집기를 실행합니다. 삽입/모듈 메뉴를 선택하고 아래 코드를 붙여넣습니다.

apiKey = "YOUR_API_KEY"에는 위에서 복사한 API-Key를 붙여 넣습니다.

엑셀로 다시 돌아와서 B2 셀에다가 질문을 입력합니다.

Alt+F8을 눌러 실행하면 위와 같이 답변을 확인 가능합니다.

' ThisWorkbook 모듈에 다음 코드를 추가합니다Private Sub Workbook_Open()
    ' 워크시트 이벤트를 활성화합니다    Application.EnableEvents = True
End Sub
' Sheet1 모듈 (B2 셀이 있는 워크시트)에 다음 코드를 추가합니다Private Sub Worksheet_Change(ByVal Target As Range)
    ' B2 셀이 변경되었는지 확인합니다    If Target.Address = "$B$2" Then
        ' 엔터 키를 눌렀는지 확인합니다        If Len(Target.Value) > 0 And Target.Value <> vbNullString Then
            Call GetGeminiResponse        End If
    End IfEnd Sub
' 모듈에 다음 코드를 넣습니다 (기존 GetGeminiResponse 서브루틴을 대체합니다)
Sub GetGeminiResponse()    Dim xhr As Object
    Dim url As String    Dim requestBody As String
    Dim apiKey As String    Dim response As String
        ' API 키를 여기에 입력하세요
    apiKey = "YOUR_API_KEY"    
    ' URL 설정    url = "https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-flash-latest:generateContent?key=" & apiKey
        ' 요청 본문 생성
    requestBody = "{""contents"":[{""parts"":[{""text"":""" & Replace(ThisWorkbook.Sheets("Sheet1").Range("B2").Value, """", "\""") & """}]}]}"    
    ' XMLHttpRequest 객체 생성    Set xhr = CreateObject("MSXML2.ServerXMLHTTP")
        ' 상태 메시지 표시
    ThisWorkbook.Sheets("Sheet1").Range("B3").Value = "요청 처리 중..."    
    ' 요청 보내기    On Error GoTo ErrorHandler
    With xhr        .Open "POST", url, False
        .setRequestHeader "Content-Type", "application/json"        .send requestBody
                ' 응답 받기
        If .Status = 200 Then            response = .responseText
                        ' JSON 파싱 (간단한 방식)
            Dim startPos As Long, endPos As Long            startPos = InStr(response, """text"": """) + 9
            endPos = InStr(startPos, response, """") - 1            
            ' 결과를 B3 셀에 출력            ThisWorkbook.Sheets("Sheet1").Range("B3").Value = Mid(response, startPos, endPos - startPos + 1)
        Else            ThisWorkbook.Sheets("Sheet1").Range("B3").Value = "Error: " & .Status & " " & .statusText
        End If    End With
        Set xhr = Nothing
    Exit Sub    
ErrorHandler:    ThisWorkbook.Sheets("Sheet1").Range("B3").Value = "Error: " & Err.Description
    Set xhr = NothingEnd Sub

deepl 번역 ai 사용 후기