お世話になります。
ExcelVBAでスプレッドシートをダウンロードして1シートをインポートしようとしています。
下記URLを参考に実装して、Excelダウンロードはできたものの、なぜか破損した状態で開けなくて困っています。。
似たような事象になった方がいらっしゃいましたらアドバイスいただけると大変助かります。
よろしくお願い致します。
https://excel-ubara.com/excelvba5/EXCELVBA279.html
ExcelVBA
1Option Explicit 2 3'スプレッドシートダウンロードで使用 4Declare PtrSafe Function URLDownloadToFile Lib "urlmon" Alias "URLDownloadToFileA" _ 5 (ByVal pCaller As Long, _ 6 ByVal szURL As String, _ 7 ByVal szFileName As String, _ 8 ByVal dwReserved As Long, _ 9 ByVal lpfnCB As Long) As Long 10 11 12Function main() 13 14 Dim url as String 15 url = "https://docs.google.com/spreadsheets/d/[スプレッドシートID]" 16 Dim downloadFilePath as String 17 downloadFilePath = GetSpreadsheet(url) 18 19 Call GetSheets("シート名", downloadFilePath) 20 21End Function 22 23 24'APIのURLDownloadToFileでxlsxをダウンロード 25Function GetSpreadsheet(ByVal argURL As String) As String 26 Dim outFile As String 27 outFile = ThisWorkbook.Path & "\" & "TEMP_" & Format(Now(), "yyyymmddhhmmss") & ".xlsx" 28 29 If argURL Like "*edit?usp=sharing" Then 30 argURL = Replace(argURL, "edit?usp=sharing", "") 31 End If 32 argURL = argURL & "/export?format=xlsx" 33 34 Call URLDownloadToFile(0, argURL, outFile, 0, 0) 35 GetSpreadsheet = outFile 36End Function 37 38 39'ダウンロードしたxlsxの全シートの取込 40Sub GetSheets(targetSheet As String, ByVal strFile As String) 41 Dim wb As Workbook 42 Set wb = Workbooks.Open(FileName:=strFile, ReadOnly:=True) 43 wb.Worksheets(targetSheet).Copy after:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count) 44 45 wb.Close SaveChanges:=False 46 Kill strFile 47End Sub
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/10/16 00:19
2020/10/16 09:47
2020/10/19 00:03