Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


3888 / 13644 ツリー ←次へ | 前へ→

【59640】CSVファイルのデータの取り込み 実行時エラー1004 ぷり子 08/12/27(土) 23:31 質問[未読]
【59642】Re:CSVファイルのデータの取り込み 実行時... ponpon 08/12/28(日) 0:10 発言[未読]
【59644】Re:CSVファイルのデータの取り込み 実行時... ぷり子 08/12/28(日) 0:20 回答[未読]
【59643】Re:CSVファイルのデータの取り込み 実行時... awu 08/12/28(日) 0:13 質問[未読]
【59645】Re:CSVファイルのデータの取り込み 実行時... ぷり子 08/12/28(日) 0:21 回答[未読]
【59648】Re:CSVファイルのデータの取り込み 実行時... ぷり子 08/12/28(日) 14:31 質問[未読]
【59649】Re:CSVファイルのデータの取り込み 実行時... かみちゃん 08/12/28(日) 14:42 発言[未読]
【59650】Re:CSVファイルのデータの取り込み 実行時... ぷり子 08/12/28(日) 15:12 お礼[未読]

【59640】CSVファイルのデータの取り込み 実行時...
質問  ぷり子  - 08/12/27(土) 23:31 -

引用なし
パスワード
   初投稿します。
マクロ初心者なのですが、CSVファイルをデータの取り込みを使用して、取り込み時、ダイアログをキャンセルすると…

========================================================================

実行時エラー '1004'

外部データ範囲を更新するためのテキストファイルが見つかりません。

テキストファイルが移動または名前が変更されていないことを確認し、再度実行してください。

========================================================================

↑というエラーメッセージが出ます。

どうすれば「キャンセル」をクリックしても、エラーが出ないのでしょうか?

ちなみにコードは書きになります。


========================================================================

Sub Macro2()
Dim fname As String
fname = Application.GetOpenFilename(filefilter:="CSV ファイル(*.csv),*.csv")

With ActiveSheet.QueryTables.Add(Connection:="TEXT;" & fname, _
Destination:= _
    ActiveCell)
    .Name = "ZR20822"
    .FieldNames = True
    .RowNumbers = False
    .FillAdjacentFormulas = False
    .PreserveFormatting = True
    .RefreshOnFileOpen = False
    .RefreshStyle = xlInsertDeleteCells
    .SavePassword = False
    .SaveData = True
    .AdjustColumnWidth = True
    .RefreshPeriod = 0
    .TextFilePromptOnRefresh = False
    .TextFilePlatform = 932
    .TextFileStartRow = 5
    .TextFileParseType = xlDelimited
    .TextFileTextQualifier = xlTextQualifierDoubleQuote
    .TextFileConsecutiveDelimiter = False
    .TextFileTabDelimiter = False
    .TextFileSemicolonDelimiter = False
    .TextFileCommaDelimiter = True
    .TextFileSpaceDelimiter = False
    .TextFileColumnDataTypes = Array(9, 1)
    .TextFileTrailingMinusNumbers = True
    .Refresh BackgroundQuery:=False
  End With
  ActiveCell.Offset(0, 1).Range("A1").Select
End Sub

========================================================================

デバックを行うと、下から4行目の「.Refresh〜」の部分が黄色く網掛け状態となります。

よろしくお願いします。

【59642】Re:CSVファイルのデータの取り込み 実行...
発言  ponpon  - 08/12/28(日) 0:10 -

引用なし
パスワード
   >キャンセルすると…
fnameにfalseが返るので
If fname <> False Then

End If

で挟んだらいかがでしょう?

【59643】Re:CSVファイルのデータの取り込み 実行...
質問  awu  - 08/12/28(日) 0:13 -

引用なし
パスワード
   Sub Macro2()
Dim fname As Variant
fname = Application.GetOpenFilename(filefilter:="CSV ファイル(*.csv),*.csv")
If fname = False Then Exit Sub



GetOpenFilename をヘルプで調べて「キャンセル」時に何が返るか見てみよう。

【59644】Re:CSVファイルのデータの取り込み 実行...
回答  ぷり子  - 08/12/28(日) 0:20 -

引用なし
パスワード
   >>poponさん

返信ありがとうございます。
下記のように修正をしましたが、やはり同じエラーが出ます。。。

Sub Macro2()
Dim fname As String
fname = Application.GetOpenFilename(filefilter:="CSV ファイル(*.csv),*.csv")
If fname <> False Then
End If
With ActiveSheet.QueryTables.Add(Connection:="TEXT;" & fname, _
Destination:=
〜省略〜

【59645】Re:CSVファイルのデータの取り込み 実行...
回答  ぷり子  - 08/12/28(日) 0:21 -

引用なし
パスワード
   >>awu さん

ご返信ありがとうございます。

>GetOpenFilename をヘルプで調べて「キャンセル」時に何が返るか見てみよう。

調べてみます。ありがとうございます!

【59648】Re:CSVファイルのデータの取り込み 実行...
質問  ぷり子  - 08/12/28(日) 14:31 -

引用なし
パスワード
   >>awu さん

awuさんのご指摘のあった箇所を修正してみました。

すると今度は、ファイルを開くと

実行時エラー13
型が一致しません。

とエラー表示されます。

デバッグしてみると、「If fname = False Then」の部分が黄色く網掛けされています。
どういうことでしょうか…?


Sub Macro2()
Dim fname As String
fname = Application.GetOpenFilename(filefilter:="CSV ファイル(*.csv),*.csv")
If fname = False Then Exit Sub

With ActiveSheet.QueryTables.Add(Connection:="TEXT;" & fname, _
Destination:= _
    ActiveCell)
    .FieldNames = True
    .RowNumbers = False
    .FillAdjacentFormulas = False
    .PreserveFormatting = True
    .RefreshOnFileOpen = False
    .RefreshStyle = xlInsertDeleteCells
    .SavePassword = False
    .SaveData = True
    .AdjustColumnWidth = True
    .RefreshPeriod = 0
    .TextFilePromptOnRefresh = False
    .TextFilePlatform = 932
    .TextFileStartRow = 5
    .TextFileParseType = xlDelimited
    .TextFileTextQualifier = xlTextQualifierDoubleQuote
    .TextFileConsecutiveDelimiter = False
    .TextFileTabDelimiter = False
    .TextFileSemicolonDelimiter = False
    .TextFileCommaDelimiter = True
    .TextFileSpaceDelimiter = False
    .TextFileColumnDataTypes = Array(9, 1)
    .TextFileTrailingMinusNumbers = True
    .Refresh BackgroundQuery:=False
  End With
  ActiveCell.Offset(0, 1).Range("A1").Select
End Sub

【59649】Re:CSVファイルのデータの取り込み 実行...
発言  かみちゃん E-MAIL  - 08/12/28(日) 14:42 -

引用なし
パスワード
   こんにちは。かみちゃん です。

横から失礼します。

>awuさんのご指摘のあった箇所を修正してみました。
>
>すると今度は、ファイルを開くと
>
>実行時エラー13
>型が一致しません。
>
>とエラー表示されます。
>
>デバッグしてみると、「If fname = False Then」の部分が黄色く網掛けされています。
>どういうことでしょうか…?
>
>
>Sub Macro2()
>Dim fname As String
>fname = Application.GetOpenFilename(filefilter:="CSV ファイル(*.csv),*.csv")
>If fname = False Then Exit Sub

awuさんからの指摘が修正されていません。
Dim fname As String
ではなく、
Dim fname As Variant
です。

もしくは、なんらかの事情で、
Dim fname As String
としているならば、
If fname = False Then Exit Sub
の部分を
If fname = "False" Then Exit Sub
としてみてください。

【59650】Re:CSVファイルのデータの取り込み 実行...
お礼  ぷり子  - 08/12/28(日) 15:12 -

引用なし
パスワード
   >>かみちゃん さん

ありがとうございました!
見事にできました!


>>awuさん

ちゃんと読まずに失礼なコメントお許しください。
ありがとうございました!

3888 / 13644 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free