- 締切済み
EXCELVBAでONEDRIVE上への保管方法
EXCEL ファイルの VBAで、 OneDrive上の ファイルを コピーして XLSX および XLS旧フォーマット 両方の 保存形式で ファイルを 保管しようとしています。 WINDOWS8.1 EXCEL2013 を 使用しています。 ONEDRIVE上へ、コピー作成する同名ファイルがなく、 新規のファイルを コピー作成する場合は 『Microsoft Excelは動作を停止しました。』 というエラーが (ファイルをコピー作成していますが)、 出てしまいます。 上書きする場合は エラー がでない模様です。 ' Sub 旧EXCEL形式保管() ' Application.DisplayAlerts = False ' Dim PathName, FileName1, FileName2, FileName3 As String ' PathName = ActiveWorkbook.Path FileName1 = "テスト.xlsx" FileName2 = "テストCOPY旧.xls" FileName3 = "テストCOPY新.xlsx" ' Workbooks.Open Trim(PathName) & "\" & Trim(FileName1) Windows(Trim(FileName1)).Activate ' ActiveWorkbook.SaveAs Filename:=Trim(PathName) & "\" & Trim(FileName3) ActiveWorkbook.Close ' Workbooks.Open Trim(PathName) & "\" & Trim(FileName1) Windows(Trim(FileName1)).Activate ' If Application.Version < 12 Then ActiveWorkbook.SaveAs Filename:=Trim(PathName) & "\" & Trim(FileName2), FileFormat:=xlExcel9795 Else ActiveWorkbook.SaveAs Filename:=Trim(PathName) & "\" & Trim(FileName2), FileFormat:=xlExcel8 End If ' ActiveWorkbook.Close ' End Sub ' より効率的な VBA記述、 エラーへの対処方法 を 教えていただけないでしょうか? よろしく お願いします。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- bin-chan
- ベストアンサー率33% (1403/4213)
> *** この行で エラーが 発生します。 だから、どの行? ActiveWorkbook.SaveAsの行? ActiveWorkbook.Closeの行? SaveAsの行なら、 > FileFormat:=xlExcel8 の右辺を定数値[56]にしてみる。 Closeの行なら、Quitにしてみる。
- bin-chan
- ベストアンサー率33% (1403/4213)
どの行でエラーになりますか? 特定できてないなら、 > Application.DisplayAlerts = False をやめて、F8で一行ずつ実行。
補足
さっそくの 回答ありがとうございます。 If Application.Version < 12 Then ActiveWorkbook.SaveAs Filename:=Trim(PathName) & "\" & Trim(FileName2), FileFormat:=xlExcel9795 Else *** ActiveWorkbook.SaveAs Filename:=Trim(PathName) & "\" & Trim(FileName2), FileFormat:=xlExcel8 End If *** この行で エラーが 発生します。 言い忘れていましたが、 Windows7 Excel2010 の組み合わせで実施した場合は エラーとなりません。
補足
エラーが出る行を ご指摘のとおり 下記のように 変更してみましたが、同様の エラーが まだ発生します。 If Application.Version < 12 Then ActiveWorkbook.SaveAs Filename:=Trim(PathName) & "\" & Trim(FileName2), FileFormat:=xlExcel9795 Else ''' ActiveWorkbook.SaveAs Filename:=Trim(PathName) & "\" & Trim(FileName2), FileFormat:=xlExcel8 ActiveWorkbook.SaveAs Filename:=Trim(PathName) & "\" & Trim(FileName2), FileFormat:=56 End If ' すみませんが、よろしく お願いします。