プロが教える店舗&オフィスのセキュリティ対策術

先ほど同じ質問をさせていただいて解決策ご教示頂いたのですが、また同じエラーでつまづいてしまいました。

Dim Csv_ws As Worksheet
Set Csv_ws = Workbooks("C:\Users\Administrator\Desktop\data2.csv").Worksheets(1)

実行すると「インデックスが有効範囲にありません」とエラーが出てしまいます。
先ほどはcsvを開いていなかった事がエラーの原因だったのですが、今回はdata2.csvは開いた状態です。
一度閉じて、
C:\Users\Administrator\Desktop\data2.csv
をエクスプローラにペーストしEnterを押すとdata2.csvが開くのでフルパスも記述ミスはないと思われます。
data2.csvはダウンロードしてきたものです。

度々で恐縮なのですが解決策ご教示お願い致します。

A 回答 (3件)

こんばんは、


既に開いていると言う事なので、
Workbooks("C:\Users\Administrator\Desktop\data2.csv")は
C:\Users\Administrator\Desktop\data2.csvと言うファイル名を指す事になるかと、この場合、
Windows("data2.csv").Activate とか
Workbooks("data2.csv").Activate とかになります。(アクティブにしている)
なので、
Set Csv_ws = Workbooks("Sheet1.csv").Worksheets(1)
で良いかと、思います。

VBAで他のファイルを操作する場合、開いて、閉じるなどの操作を
含めて行う事が多いです。対象ファイルを開くことで、開いたファイルがアクティブになる為、把握し易いからです。

ご質問とは、離れますが、参考まで

Sub nnn()
Dim Csv_ws As Worksheet
Dim Path As String
Path = CreateObject("WScript.Shell").SpecialFolders("Desktop")
With Workbooks.Open(Path & "\data2.csv") '開く
Set Csv_ws = .Sheets(1)
’メイン処理
’下記は、サンプル A1セルの値をマクロ実行ブックのA1セルに入力(抽出)
ThisWorkbook.ActiveSheet.Cells(1, 1) = Csv_ws.Cells(1, 1)


' .Close ’閉じる
End With
End Sub

CreateObject("WScript.Shell").SpecialFolders("Desktop")は、
デスクトップアドレスを取得しています。

ん?、勘違いしていたらごめんなさい。
    • good
    • 0
この回答へのお礼

助かりました

ありがとうございます。
Set Csv_ws = Workbooks("data2.csv").Worksheets(1)
とシンプルに記述することで解決しました。

補足情報までわざわざコードを書いて説明して下さってありがとうございました。

お礼日時:2020/09/22 19:19

> 今回はdata2.csvは開いた状態です。



どうやって開いてるの?

ダブルクリックで開いてるなら、
・ダブルクリックで開かれたdata2.csv
・C:\Users\Administrator\Desktop\data2.csv
を同じファイルと認識していないとか。

Workbooks.Open Filename:="C:\Users\Administrator\Desktop\data2.csv"
で開いてみるとかでは?


> Set Csv_ws = Workbooks("C:\Users\Administrator\Desktop\data2.csv").Worksheets(1)

csvファイルにはワークシートって無いですから、どうだろう?
~.xlsファイルでは?


#手元にExcel無くて確認出来ないですけど。
    • good
    • 0
この回答へのお礼

ありがとう

ファイルは
Workbooks.Open Filename:="C:\Users\Administrator\Desktop\data2.csv"
で開いています。


フルパスではなくファイル名だけ記述することで解決しました。

ありがとうございました。

お礼日時:2020/09/22 19:17

すいません


ファイル名間違いました。
Set Csv_ws = Workbooks("data2.csv").Worksheets(1)
です。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A