質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Google

Googleは、アメリカ合衆国に位置する、インターネット関連のサービスや製品を提供している企業です。検索エンジンからアプリケーションの提供まで、多岐にわたるサービスを提供しています。

Q&A

解決済

1回答

5465閲覧

【ExcelVBA】スプレッドシートをダウンロードするとファイルが破損した状態になる

menmen

総合スコア22

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Google

Googleは、アメリカ合衆国に位置する、インターネット関連のサービスや製品を提供している企業です。検索エンジンからアプリケーションの提供まで、多岐にわたるサービスを提供しています。

0グッド

0クリップ

投稿2020/10/15 09:13

お世話になります。

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

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

手動でダウンロードし、拡張子が.xlsx となっているか確認してみてください。

投稿2020/10/15 11:36

TanakaHiroaki

総合スコア1063

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

menmen

2020/10/16 00:19

TanakaHiroakiさん、回答ありがとうございます! 以下を試して拡張子が[.xlsx]になっていて、 無事に開けることを確認済みです。。。 ・ブラウザからの[ファイル]→[ダウンロード]→[.xlsx]でダウンロード ・VBA内で構成されるエクスポートURLをブラウザでアクセスしてダウンロード 後、拡張子を[.xls]にして試したところエラーメッセージは出るものの開けはしました! ただGsuiteのログイン画面をエクスポートしたような画面になっていて、 中身をエクスポートはできていなかったようです。。
TanakaHiroaki

2020/10/16 09:47

状況がわかりました。 私ではお手上げです。 お役に立てず申し訳けありません。
menmen

2020/10/19 00:03

TanakaHiroakiさん とんでもないです!私の拙い文章に回答していただき感謝致します。 解決は一旦諦めて、別の機会に再挑戦しようと思います。 その際はまたお力を貸していただけると幸いです。 改めて回答いただきありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問