VBAサンプル集
GoogleスプレッドシートをExcelにインポートする

ExcelマクロVBAの実用サンプル、エクセルVBA集と解説
公開日:2020-04-28 最終更新日:2020-04-28

GoogleスプレッドシートをExcelにインポートする


Googleスプレッドシートをエクセルに取り込みたい場合、
手動のコピペでも出来ますが、もう少し自動化したくなります。
スプレッドシートをエクセルに取り込む場合の方法について解説します。


スプレッドシートのURLを取得

スプレッドシートを開いたら、右上にある「共有」をクリックします。

VBA マクロ スダレッドシートのダウンロード

「共有可能なリンクを取得」をクリックします。

VBA マクロ スダレッドシートのダウンロード

VBA マクロ スダレッドシートのダウンロード

クリップボードにURLがコピーされるので、メモ帳等に貼り付けてください。
https://docs.google.com/spreadsheets/d/1_xxxxxxxxxxxxxxxxxxxx/edit?usp=sharing
このような文字列が貼り付けられます。
これをもう1行はりつけて、最後の部分を変更してください。
https://docs.google.com/spreadsheets/d/1_xxxxxxxxxxxxxxxxxxxx/export?format=xlsx
これは後ほど使用します。

ブラウザで直接ダウンロードする

ブラウザのURLに、以下のURLを直接入力すると、Excelファイルがダウンロードされます。
https://・・・/export?format=xlsx

取り急ぎ使いたいなら、これが一番簡単です。

format
以下の指定が可能です。

xlsx
csv
pdf

他にもあるはずですが未確認です。

csvはUTF-8のBOM無しになります。
BOM無しなので、そのままエクセルで開くと文字化けします。
VBAでのCSVの扱い方まとめ
・本サイトにあるCSV関連記事一覧 ・CSVの読込方法 ・CSVの読み込み方法(改) ・CSVの読み込み方法(改の改) ・CSVの読み込み方法(ジャグ配列) ・CSVの読み込み方法(ジャグ配列)(改) ・CSVの出力(書き出し)方法 ・UTF-8でCSVの読み書き(ADODB.Stream) ・ADOでCSVの読み込み(SQL)

シート指定
https://・・・/export?format=xlsx&gid=シートのid
このようにすることで、シートを指定できますが、そもそもシートidを調べるのが面倒です。
シートを一つ一つcsvにするのは、いかにも効率が悪いので、ここでは省力します。

Power Queryで取り込む

リボン「データ」→「Webから」

VBA マクロ スダレッドシートのダウンロード

VBA マクロ スダレッドシートのダウンロード

ここに、先ほど作成した、
https://・・・/export?format=xlsx
これを貼り付けてください。
「OK」で進むと、

VBA マクロ スダレッドシートのダウンロード

左側でシートを選択すると、プレビューが表示されます。

VBA マクロ スダレッドシートのダウンロード

「読み込み」をクリックすると、シートにテーブルとして出力されます。
複数シートがある場合は、1シートずつ実行する必要があります。
少し面倒ですね。

VBAでのPower Query利用方法については、以下を参照してください。
PowerQueryの強力な機能をVBAから利用する方法
・説明に使用するデータ ・PowerQueryの操作方法 ・PowerQueryのマクロの記録 ・PowerQueryのVBA文法 ・PowerQueryの機能を利用したマクロVBA ・PowerQueryについて

VBAでGoogleスプレッドシートをインポートする

Excelファイルとしてダウンロードして、全シートを取り込みます。

Option Explicit

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/1_xxxxxxxxxxxxxxxxxxxx/"
  
  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 = ThisWorkbook.Path & "\" & "TEMP_" & 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:=False
  Kill strFile
End Sub

VBAは特に難しい部分は無いと思います。
ダウンロードしたファイルの削除等は、適宜修正してください。



同じテーマ「マクロVBAサンプル集」の記事

ハイパーリンクからファイルのフルパスを取得する

ハイパーリンクのリンク先ファイル情報を取得しようとすると、なかなか難しいことになります、ハイパーリンクからパスを取得すると相対パスとなり、簡単にはファイル情報を取得出来ません。以下のサンプルでは、ハイパーリンクの設定されているセルの右隣のセルに更新日時を出力しています。
ボタンに表示されているテキストを取得(Application.Caller)
メニューのシートを作成して、ボタンを配置、そしてボタンにより指定シートに移動する。よくありますが、ボタン一つずつに別々(移動先のシート毎に)のマクロを作成するのは面倒です、そこで、一つのマクロで済ませる方法の紹介です。Application.Caller Application.Callerは、VBAを呼び出した方…
Excelの表をPowerPointへ図として貼り付け
・Excelの表をPowerPointへ図として貼り付けるVBA ・Excelの表をPowerPointへ図として貼り付けるVBAの解説 ・グラフをPowerPointへ貼り付け ・既にパワーポイントを開いている場合
VBAで表やグラフをPowerPointへ貼り付ける
・表やグラフをPowerPointへ貼り付けるVBA ・PowerPointを使う準備と保存終了 ・表(セル範囲)をPowerPointへ貼り付けるVBAの解説 ・グラフをPowerPointへ貼り付けるVBAの解説 ・貼り付け時のエラー対応 ・既にパワーポイントを開いている場合
フォルダ(サブフォルダも全て)削除する、Optionでファイルのみ削除
VBAでフォルダを削除するにはRmDirステートメントを使いますが、サブフォルダやファイルが入っている場合は、RmDirはエラーとなります。そこで、サブフォルダやファイルがある場合は、FileSystemObjectを使います。以下のサンプル使用時には、「ツール」→「参照設定」で、「MicrosoftScripti…
Shift_JISのテキストファイルをUTF-8に一括変換
本サイトの文字コードは開設当初からShift_JISでしたが、昨今の事情を考えてUTF-8に変更することにしました。そこで既存記事全てを一括で変換することになり、これをVBAでやりましたので、その時のマクロVBAコードを掲載しておきます。以下のVBAコードはサイトのUTF-8変更にあたり急遽作成したものですが、
VBAコードの全プロシージャー・プロパティ一覧を取得
・セキュリティについて ・VBAコードの全プロシージャー・プロパティ一覧を取得するVBAコード ・使用する場合のVBAサンプル
数式バーの高さを数式の行数で自動設定
数式バーの高さは、操作で変更しない限り一定の高さのままになっています。通常は1行表示になっている場合が多いと思いますが、その場合、セル内で改行されていると最初の1行しか見ることができません。値の場合はセルに表示されているのであまり問題ありませんが、数式の場合はセル編集にしないと数式の全部を見ることができません。
図形オートシェイプ(Shape)の複数選択
・ワークシートの全てのShapeを選択する場合 ・ShapeオブジェクトのSelectメソッド ・ShapeRangeオブジェクト ・シート内の指定名称の図形を選択
GoogleスプレッドシートをExcelにインポートする
多階層フォルダ(ディレクトリ)の作成
・多階層フォルダ(ディレクトリ)の作成 の具体例 ・Dir関数とMkDirステートメントで多階層フォルダの作成 ・FileSystemObjectで多階層フォルダの作成 ・Win32 APIで多階層フォルダの作成


新着記事NEW ・・・新着記事一覧を見る

エクセルが起動しない、Excelが立ち上がらない|エクセル雑感(2024-04-11)
ブール型(Boolean)のis変数・フラグについて|VBA技術解説(2024-04-05)
テキストの内容によって図形を削除する|VBA技術解説(2024-04-02)
ExcelマクロVBA入門目次|エクセルの神髄(2024-03-20)
VBA10大躓きポイント(初心者が躓きやすいポイント)|VBA技術解説(2024-03-05)
テンキーのスクリーンキーボード作成|ユーザーフォーム入門(2024-02-26)
無効な前方参照か、コンパイルされていない種類への参照です。|エクセル雑感(2024-02-17)
初級脱出10問パック|VBA練習問題(2024-01-24)
累計を求める数式あれこれ|エクセル関数応用(2024-01-22)
複数の文字列を検索して置換するSUBSTITUTE|エクセル入門(2024-01-03)


アクセスランキング ・・・ ランキング一覧を見る

1.最終行の取得(End,Rows.Count)|VBA入門
2.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
3.変数宣言のDimとデータ型|VBA入門
4.繰り返し処理(For Next)|VBA入門
5.RangeとCellsの使い方|VBA入門
6.ブックを閉じる・保存(Close,Save,SaveAs)|VBA入門
7.並べ替え(Sort)|VBA入門
8.メッセージボックス(MsgBox関数)|VBA入門
9.セルのクリア(Clear,ClearContents)|VBA入門
10.ひらがな⇔カタカナの変換|エクセル基本操作




このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。


記述には細心の注意をしたつもりですが、
間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。
掲載のVBAコードは動作を保証するものではなく、あくまでVBA学習のサンプルとして掲載しています。
掲載のVBAコードは自己責任でご使用ください。万一データ破損等の損害が発生しても責任は負いません。


このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。
本文下部へ