スプレットシートをエクセルにインポート
Googleドライブの特定のスプレッドシートから情報をエクセルに転記する手順
- Google APIを有効にする
- Google APIを使うには、APIを有効にする必要があります。Google Developers ConsoleからAPIを有効にし、必要な認証情報を取得してください。
- 必要なライブラリを追加する
- VBAからGoogle APIを使用するためには、必要なライブラリを参照する必要があります。以下のライブラリを追加してください。
- Microsoft WinHTTP Services, version 5.1
- Microsoft Scripting Runtime
- Microsoft XML, v6.0
- VBAからGoogle APIを使用するためには、必要なライブラリを参照する必要があります。以下のライブラリを追加してください。
- スプレッドシートから情報を取得するためのスクリプトを作成する
このVBAコードは、GoogleスプレッドシートからExcelファイルをダウンロードし、そのExcelファイルの全シートをアクティブブックにインポートするためのものです。
Declare PtrSafe Function URLDownloadToFile Lib "urlmon" Alias "URLDownloadToFileA" _
(ByVal pCaller As Long, _
ByVal szURL As String, _
ByVal szFileName As String, _
ByVal dwReserved As Long, _
ByVal lpfnCB As Long) As Long
'Googleスプレッドシートをインポートする
Sub MainSample()
Dim strURL As String
strURL = "https://docs.google.com/spreadsheets/d/1l24RztIdYZWZiAqVdGPocubPzzbCVlCz/"
'https://docs.google.com/spreadsheets/d/[ここにIDが存在]/edit#gid=*********
Dim strFile As String
strFile = GetSpreadsheet(strURL)
Application.ScreenUpdating = False
Call GetAllSheets(ThisWorkbook, strFile)
Application.ScreenUpdating = True
MsgBox "インポート完了"
End Sub
'APIのURLDownloadToFileでxlsxをダウンロード
Function GetSpreadsheet(ByVal argURL As String) As String
Dim outFile As String
outFile = "C:\〇〇〇〇\〇〇〇〇\〇〇〇〇\〇〇〇〇.xlsx"
'outFile = ThisWorkbook.path & "\" & "ファイル名" & Format(Now(), "yyyymmddhhmmss") & ".xlsx"
If argURL Like "*edit?usp=sharing" Then
argURL = Replace(argURL, "edit?usp=sharing", "")
End If
argURL = argURL & "export?format=xlsx"
Call URLDownloadToFile(0, argURL, outFile, 0, 0)
GetSpreadsheet = outFile
End Function
'ダウンロードしたxlsxの全シートの取込
Sub GetAllSheets(targetBook As Workbook, ByVal strFile As String)
Dim wb As Workbook
Set wb = Workbooks.Open(FileName:=strFile, ReadOnly:=True)
Dim ws As Worksheet
For Each ws In wb.Sheets
ws.Copy after:=targetBook.Sheets(targetBook.Sheets.Count)
Next
wb.Close SaveChanges:=True
'Kill strFile
End Sub
説明
Declare文は、Windows API関数を宣言するためのものであり、VBAコード内でWin32 APIを使用できるようにします。この場合、’URLDownloadToFile
URLDownloadToFile関数
この関数は、URLで指定されたファイルをローカルファイルにダウンロードするAPI関数です。この関数は、URLからExcelファイルをダウンロードし、指定されたファイルパスに保存します。この関数によって、GoogleスプレッドシートからExcelファイルをダウンロードしています。
スプレッドシートを取得
この関数は、URLDownloadToFile関数を使用して、GoogleスプレッドシートからExcelファイルをダウンロードし、そのファイルパスを返します。関数の引数には、GoogleスプレッドシートのURLを指定します。
GetAllSheetsサブルーチン
このサブルーチンは、指定されたExcelファイルの全シートをアクティブブックにインポートするためのものです。このサブルーチンには、アクティブブックを表す’targetBookstrFile
引数があります。
このVBAコードを実行する前に、GoogleスプレッドシートのURLやExcelファイルを保存するパスを適宜変更してください。また、このコードではExcelファイルをダウンロード後に削除していますが、必要に応じてコメントアウトしてください。
コメント