前提・実現したいこと
VBAで開いていないExcelの特定のシート名のデータをコピーし、別のブックに貼り付けようとしています。
発生している問題・エラーメッセージ
VBA
1実行時エラー'1004' 2'.xls'にアクセスできません。ファイルが破損しているか、応答しないサーバーにあるか、読み取り専用に設定されています。
(当該Excelは破損しておらず、デスクトップ上にあり、読み取り専用でもありません)
該当のソースコード
VBA
1Dim Path As String 2 Dim buf As String 3 Dim fso As FileSystemObject 4 Set fso = New FileSystemObject 5 6 Dim 番号 As String 7 Dim 種類(200) As String 8 Dim 等級(200) As String 9 Dim 幅(200) As Integer 10 Dim 高さ(200) As Integer 11 Dim 長さ(200) As Integer 12 13 Dim n As Integer 14 Dim x As Integer 15 Dim i As Integer 16 17 Dim strDir As String 18 Dim strFile As String 19 Dim xls As New Excel.Application 20 Dim wb As Workbook 21 22 'パス取得 23 With Application.FileDialog(msoFileDialogFolderPicker) 24 .Show 25 Path = .SelectedItems(1) 26 End With 27 28 'ファイル名取得 29 buf = Dir(Path & "*.xls*") 30 番号 = fso.GetBaseName(Path) 31 Debug.Print (s) 32 33 Dim objCn As New ADODB.Connection 34 Dim objRS As ADODB.Recordset 35 Dim sSheet As String 36 37 With objCn 38 .Provider = "Microsoft.Jet.OLEDB.4.0" 39 .Properties("Extended Properties") = "Excel 8.0" 40 .Open Path & "\" & buf 41 Set objRS = .OpenSchema(ADODB.adSchemaTables) 42 End With 43 44 Do Until objRS.EOF 45 sSheet = objRS.Fields("TABLE_NAME") 46 If sSheet = "'グループ-1$'" Then 47 GoTo グループ1 48 ElseIf sSheet = "'グループ-2$'" Then 49 GoTo グループ2 50 Else 51 GoTo 次 52 End If 53次: 54 objRS.MoveNext 55 Loop 56 57グループ1: 58 Application.ScreenUpdating = False 59 strDir = Path & "\" & buf 60 strFile = Dir(strDir) 61 62 n = 200 63 x = Cells(Rows.Count, 3).End(xlUp).Row + 1 64 Set wb = xls.Workbooks.Open(strDir)←ここで止まります 65 For i = 7 To n Step 1 66 種類(i) = wb.Worksheets("グループ-1").Cells(i, 3) 67 等級(i) = wb.Worksheets("グループ-1").Cells(i, 4) 68 幅(i) = wb.Worksheets("グループ-1").Cells(i, 5) 69 高さ(i) = wb.Worksheets("グループ-1").Cells(i, 6) 70 長さ(i) = wb.Worksheets("グループ-1").Cells(i, 14) 71 72 Cells(x, 2) = 番号 73 Cells(x, 3) = 種類(i) 74 Cells(x, 4) = 等級(i) 75 Cells(x, 5) = 幅(i) 76 Cells(x, 6) = 高さ(i) 77 Cells(x, 7) = 長さ(i) 78 79 x = x + 1 80 81 End If 82 Next i 83 84 Set xls = Nothing 85 Application.ScreenUpdating = True 86 87グループ2: 88・・・ 89 90
試したこと
ネット上で2,3日調べましたが原因がわかりません。
VBA初心者で知識不足ですが、業務改善のために使用したいためご教授頂きたいです。宜しくお願い致します。
補足情報(FW/ツールのバージョンなど)
Excel 2007
Windows 7
プログラムコード(およびエラーメッセージ)は質問内容としては最も重要な部分であるため、見やすくしていただけると助かります。<code>ボタン押下→「コード」部分にコードを貼り付け→「ここに言語を入力」に対象言語名記入(エラーメッセージの場合は不要)の手順で「コードハイライト化」してください。(質問編集画面ではリアルタイムでプレビューが表示されるので見ながら調整してください)
質問編集画面タイトル横にある「初心者アイコン」をご活用ください。「初心者」と質問で書くよりも伝わりますし、質問一覧に表示されるのでわかりやすくなります。
ご指摘頂きありがとうございます。編集致しましたが、いかがでしょうか。
デバッグはされたのでしょうか?プロパティウィンドウ、イミディエイトウィンドウ、ステップ実行等を試して確認されたのでしょうか?
デバックはしています。ローカルウィンドウを見ながら確認を行いましたがエラーが修正できませんでした。

回答1件
あなたの回答
tips
プレビュー