初めまして。宜しくお願いします。 VB初心者です。

Public   Const FTL_ZIK = "C:\Suoko\FL_ZIK.csv" と定義し、

  読み込みするファイル(FTL_ZIK)を FN に変えたとして

FN = FreeFile
Open FTL_ZIK For Input As FN  でフォルダ「Suoko」にはFL_ZIK.csvはあります。

  実行したら パスがありませんのメッセージで デパックを見たら 
  Open FTL_ZIK For Input As FN の部分が示されていました。

  何か抜けているのでしょうか? 教えて下さい。 
 

このQ&Aに関連する最新のQ&A

A 回答 (2件)

パスの記述に誤りがあります。


この場合は、「C:\Suoko\」の何処かに誤りがあります。
原因的には、全角・半角の違いや、ディレクトリ名にスペース文字を使っている等が考えられます。
エクスプローラ等で、フォルダの名前変更を利用してそのフォルダ名を正確にコピーしていましょう。

それでも、駄目でしたら、Openの直前で「Debug.Print FTL_ZIK」としてデバッグウィンドウに内容を表示してみてください。
    • good
    • 0

私なら、Dir関数で調べてみますね。


もし、Dir(FL_ZIK) = "" なら、ファイル名に誤りがあることが確定です。
    • good
    • 0

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

このQ&Aと関連する良く見られている質問

Q[VBA] LOGファイル (text )からFor Input 構文の作成方法を教えてください

このネットで出ていた構文をアレンジして作ってみました。
http://www.start-macro.com/55/Lesson/l197.html
アレンジした部分が動きません。教えてください。
インプットボックスから、数字を選んで検索した行を張り付けたいだけなのですが
うまくいきません。その時にLOGのファイルをOpenしてを選択させたいのです。
わかる方教えてください。どうぞよろしくお願いします。
---------------------------------------------------------
Sub macro1()
Dim a(256) As String

s = InputBox("Input Number(s)")
If Trim(s) = "" Then Exit Sub

’(この下のCurDirからElseまでを足しました, csvをlogに変更) 
CurDir ("C:\")
strFileName = Application.GetOpenFilename("Log File (*.log),*.log", 1, "Select LOG File")
If (strFileName <> "False") Then
If (Trim(Dir(strFileName)) = "") Then
Call MsgBox("Missing Log file", vbOKOnly, "OK")
Else

'Open "C:\Users\Santa\Desktop\KEN_ALL.CSV" For Input As #5
  ’ (上の文を下に変更)
strFileName For Input As #5 (ここがアレンジした部分)
j = 1
Do While Not EOF(5)
Line Input #5, buf
If buf Like "*" & s & "*" Then
Call wReadCsv(buf, a, n)
For i = 1 To n
Cells(j, i).Select
ActiveCell.FormulaR1C1 = a(i)
Next i
j = j + 1
End If
Loop
Close #5
MsgBox j - 1 & "件のデータを取り込みました。"
Range("A1").Select
End Sub
--------------------------------------------------------------------------

このネットで出ていた構文をアレンジして作ってみました。
http://www.start-macro.com/55/Lesson/l197.html
アレンジした部分が動きません。教えてください。
インプットボックスから、数字を選んで検索した行を張り付けたいだけなのですが
うまくいきません。その時にLOGのファイルをOpenしてを選択させたいのです。
わかる方教えてください。どうぞよろしくお願いします。
---------------------------------------------------------
Sub macro1()
Dim a(256) As String

s = InputBox("Inp...続きを読む

Aベストアンサー

ざっと見ただけですけれども

> Call MsgBox("Missing Log file", vbOKOnly, "OK")
Call不要

> strFileName For Input As #5 (ここがアレンジした部分)
Openがない

> If (strFileName <> "False") Then
> If (Trim(Dir(strFileName)) = "") Then
対応するEnd Ifがない

QINPUT関数でのCSV読込がおかしい件

VisualBasic6.0で開発しております。

string型にて宣言した配列にシーケンシャルモードで
開いたCSVファイルを、
INPUT関数にて読み込んでいるのですが、" あああ"
といったデータが、
配列に入ると"あああ "となってしまいます。つまり空白文字列が頭からお尻に移動してしまいます。

どなたか原因がわかる方、また回避方法がわかるかた
は教えて頂ければ幸いです。なお、LINEINPUTではそのような現象はおこりません。しかしLINEINPUTは速度の観点から使いたくありません。

<参考ソース>
  Type hairetu
   a As String
   b As String
    ・
    ・
  End Type

  Global 配列() As hairetu

  dim intfile as integer
  dim lngcnt as integer

  intFile = FreeFile
  Open "パス" For Input As #intFile
  lngCnt = 0

  Do While Not EOF(intFile)
   redim preserve 配列(lngCnt)
   Input #intFile, 配列(lngCnt).a,配列(lngCnt).b,・・・
   lngCnt=lngCnt+1
  LOOP

VisualBasic6.0で開発しております。

string型にて宣言した配列にシーケンシャルモードで
開いたCSVファイルを、
INPUT関数にて読み込んでいるのですが、" あああ"
といったデータが、
配列に入ると"あああ "となってしまいます。つまり空白文字列が頭からお尻に移動してしまいます。

どなたか原因がわかる方、また回避方法がわかるかた
は教えて頂ければ幸いです。なお、LINEINPUTではそのような現象はおこりません。しかしLINEINPUTは速度の観点から使いたくありません。

<参考ソース>
 ...続きを読む

Aベストアンサー

MSDNライブラリの「Input # ステートメント」を読んでみましたか?

>ファイルからデータを読み込む場合、通常、文字列データは文字列型 (String)、数値データは数値データ型として格納されます。これ以外のデータを読み込んだ場合、次に示すようにデータによって変数に割り当てられる型が異なります。
>カンマのみ、または空白行 Empty 値 (VarType 0)
このように記述されています。この辺の問題なのだと思われます。

で、対応方法です。

現在、CSV内データは只単にカンマのみで区切られていると思います。

AAA, 222, CCC,DDD,EEE

"AAA"," 222"," CCC","DDD","EEE"

上段だと文字・数字を自動判別して質問のような問題になるので、下段の様に(")で囲って文字列にしてしまえば解決できると思います。

一案なので、参考になれば幸いです。

QCSVをVB(input)で読み込んだ場合に数値を文字列として読込みたい。

初めまして。個人的にVB6.0を勉強しています。教えてください。

【概要】
VBを使用し、CSVの読込(input #)→編集→TXTで出力(White #) する場合、inputの読込段階でデータが自動変換されてしまう。

【内容】
CSV(カンマ区切)のデータです。
(例)
シメイ,住所(都道府県),市街局番,番号
小林○○,千葉県○市○○,011,111-1111
佐藤○○,埼玉県○市○○,009,999-9999

input #で読込むと、市外局番の頭0(ゼロ)が省略され【11】や【9】と読込まれてしまう。
なんとか文字列として【011】や【009】と読込みたいです。

【奮闘記】
input #を使用し上記ファイルを+読込んでいます。
(line inputで読み込むと1列全てが結合された文字列となってしまうので、電話番号を結合するなど、編集ができなくなってしまうので)

input #として読込んだ段階で、数値として自動変換されてしまっているので、どうすればよいものなのか。。。
どんなアドバイスでも助かります!!よろしくお願いします。

初めまして。個人的にVB6.0を勉強しています。教えてください。

【概要】
VBを使用し、CSVの読込(input #)→編集→TXTで出力(White #) する場合、inputの読込段階でデータが自動変換されてしまう。

【内容】
CSV(カンマ区切)のデータです。
(例)
シメイ,住所(都道府県),市街局番,番号
小林○○,千葉県○市○○,011,111-1111
佐藤○○,埼玉県○市○○,009,999-9999

input #で読込むと、市外局番の頭0(ゼロ)が省略され【11】や【9】と読込まれてしまう。
なんとか文字列として【011...続きを読む

Aベストアンサー

こんにちは。

> input #として読込んだ段階で、数値として自動変換されてしまっている
ということですが、受け取り変数をString型にすれば
問題ないと思います。

Sub TEST()
Const cnsFILENAME = "D:\TEMP\TEST_DATA.csv"
Dim intFF As Integer
Dim X(1 To 4) As String
intFF = FreeFile
Open cnsFILENAME For Input As #intFF
Do Until EOF(intFF)
Input #intFF, X(1), X(2), X(3), X(4)
Debug.Print "(1)=" & X(1) & ", (2)=" & X(2) & _
", (3)=" & X(3) & ", (4)=" & X(4)
Loop
Close #intFF
End Sub

こんにちは。

> input #として読込んだ段階で、数値として自動変換されてしまっている
ということですが、受け取り変数をString型にすれば
問題ないと思います。

Sub TEST()
Const cnsFILENAME = "D:\TEMP\TEST_DATA.csv"
Dim intFF As Integer
Dim X(1 To 4) As String
intFF = FreeFile
Open cnsFILENAME For Input As #intFF
Do Until EOF(intFF)
Input #intFF, X(1), X(2), X(3), X(4)
Debug.Print "(1)=" & X(1) & ", (2)=" & X(2) & _
...続きを読む

Q[ExcelVBA] For Inputを使って検索して、行を一括コピーして貼り付けたい。

あるスプレットシートが既にあり,そこにTextファイルから下記のようなデータをコピーしたいのですがよくできません。データが同じように並んでいて、Aの90という数値を検索したいと思っています。取得するデータはData2にあるAからDのデータを丸ごとコピー&ペイストしたいのです。ペイストするときには、スペースとコンマで区切りを付けてペーストしたいと思っております。

Data1
A 90, B -23.3, C 0.5, D 9
A 90, B -42.5, C 0.4, D 9
A 45, B -21.6, C 0.25, D 9
A 90, B 23.5, C 0.7, D 9
Data2
A 90, B -23.3, C 0.5, D 9
A 90, B -42.5, C 0.4, D 9
A 45, B -21.6, C 0.25, D 9
A 90, B 23.5, C 0.7, D 9

ネットに載っているのをいろいろ試しましたが、すべてのセルに検索がかかり使えませんでした(アレンジできませんでした)。
どうぞよろしくお願いいたします。

あるスプレットシートが既にあり,そこにTextファイルから下記のようなデータをコピーしたいのですがよくできません。データが同じように並んでいて、Aの90という数値を検索したいと思っています。取得するデータはData2にあるAからDのデータを丸ごとコピー&ペイストしたいのです。ペイストするときには、スペースとコンマで区切りを付けてペーストしたいと思っております。

Data1
A 90, B -23.3, C 0.5, D 9
A 90, B -42.5, C 0.4, D 9
A 45, B -21.6, C 0.25, D 9
A 90, B 23.5, C 0.7, D 9
Data2
A 9...続きを読む

Aベストアンサー

> いろいろファイルの違うものに変更すると、
> If ary(1) = strFind Then でまだ、「型が一致しません」のエラーがでています。

> しかし解決方法がネットでも見つかりません。うまい解決法はあるのでしょうか?

エラーが起きる具体的なテキストデータがわからないと、なんとも答えようがないです。

QVBA auto_openでApplication.onKeyを実行できない

お世話になります。

表題のとおり、Excel起動時に、上書き保存や名前を付けて保存等の
機能をショートカットから実行できなくするように、auto_openで
処理をさせたいのですが、実行時にエラーが出てしまいます。
下記にそのソースを記述します。

Private Sub Auto_Open()
Application.OnKey "F12", ""
End Sub

正確には、ショートカットを無効にするタイミングはブック自体を
開いてから後でも構わないのですが、やはり同じようにエラーが
出ます。

どうしてエラーになるのか、どうすれば正常に動作するのか
教えてください。

以上、宜しくお願い致します。

Aベストアンサー

保存禁止にしたければワークシートのBeforeSaveイベントで
Cancel=True にするだけで簡単に出来ますが、それではダメですか。

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
    Cancel = True
End Sub


このカテゴリの人気Q&Aランキング

おすすめ情報