みなさんこんにちは^^

ちょっと困っています。
VB6でコーディングを行っていますが
取得したファイル名称を一旦ワークに落として
それを出力ファイル名に利用したいのですが、
拡張子が邪魔をして上手く行きません。
何か拡張子を取るような方法があれば教えて頂きたいのですが!

例)入力ファイル名称 → 変換 → 出力ファイル名称
  AAA.TXT AAA_001.TXT
BBB_001.TXT BBB_001.TXT

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

A 回答 (4件)

FileSystemObjectを使ったらどうですか?



拡張子&ファイル名を取得する方法を書いときます
参照設定で「Microsoft Scripting Runtime」を参照します。
'拡張子のみ取得
Function hoge1(strPath As String) As String
Dim fso As New FileSystemObject
hoge1=fso.GetExtensionName(strPath)
End Sub

'ファイル名のみ取得
Function hoge2(strPath As String) As String
Dim fso As New FileSystemObject
hoge2=fso.GetFileName(strPath)
End Sub

じゃ、そゆことで。
    • good
    • 1
この回答へのお礼

ありがとうございます

そうか、FileSystemObjectか・・・
存在を忘れていました(笑)
参考になりました。早速使わせていただきますw

お礼日時:2001/11/21 09:24

お疲れ様です。



ファイル名の後ろから"."を探せばいいのではないでしょうか。

(例

  Dim ファイル名 As String
  Dim 名前 As String
  Dim 拡張子 As String
  Dim 位置 As Long

  ファイル名 = "AIUEO.TXT"

  位置 = InStrRev(ファイル名, ".") '// 後ろから文字を検索

  名前 = Left$(ファイル名, 位置 - 1) '// 名前が入る
  拡張子 = Right$(ファイル名, Len(ファイル名) - 位置) '// 拡張子が入る

(結果
  名前 = "AIUEO"
  拡張子 = "TXT"

間違っていたらごめんなさい。
    • good
    • 0
この回答へのお礼

おはようございます
お礼が遅くなって申し訳ありません!

InStrRevっていう関数があるんですねw
知らなかったな~^^
私はLen関数で文字列長を取得してから、Loopで回してました(笑)
勉強になりました!

お礼日時:2001/11/21 09:27

拡張子を認識するためのAPI関数があります。



ファイルのフルパスでもOK

'拡張子のピリオドを<<vbNullChar>>に変換するAPI関数
Private Declare Sub PathRemoveExtension Lib "shlwapi.dll" Alias "PathRemoveExtensionA" (ByVal pszPath As String)

Sub Main()
  Const FILE1 As String = "c:\test\index.html"
  Const FILE2 As String = "c:\test\index.html.doc.txt.wav"
  Const FILE3 As String = "index"
  Const FILE4 As String = "index.html.doc.txt.wav.ウィルス"

  Dim wkStr1 As String
  Dim wkStr2 As String

  Call GetGetGet(FILE1, wkStr1, wkStr2)
  MsgBox _
      "ファイル名:[" & FILE1 & "]" & vbNewLine & _
      "ファイル :[" & wkStr1 & "]" & vbNewLine & _
      "拡張子  :[" & wkStr2 & "]"
  
  Call GetGetGet(FILE2, wkStr1, wkStr2)
  MsgBox _
      "ファイル名:[" & FILE2 & "]" & vbNewLine & _
      "ファイル :[" & wkStr1 & "]" & vbNewLine & _
      "拡張子  :[" & wkStr2 & "]"
  
  Call GetGetGet(FILE3, wkStr1, wkStr2)
  MsgBox _
      "ファイル名:[" & FILE3 & "]" & vbNewLine & _
      "ファイル :[" & wkStr1 & "]" & vbNewLine & _
      "拡張子  :[" & wkStr2 & "]"
  
  Call GetGetGet(FILE4, wkStr1, wkStr2)
  MsgBox _
      "ファイル名:[" & FILE4 & "]" & vbNewLine & _
      "ファイル :[" & wkStr1 & "]" & vbNewLine & _
      "拡張子  :[" & wkStr2 & "]"
  Exit Sub
End Sub

Function GetGetGet(ByVal inFileName As String, ByRef outFileName As String, ByRef outKakutyousi As String)
  Dim valWork As Variant
  
  '戻りパラメータ初期化
  outFileName = ""
  outKakutyousi = ""
  
  '拡張子を<<vbNullChar>>に変換
  Call PathRemoveExtension(inFileName)
  
  'vbNullCharで切り分ける
  valWork = Split(inFileName, vbNullChar)
  
  '配列の先頭がファイル名
  outFileName = valWork(0)
  
  '拡張子が存在してない時は、以下を通らない
  If UBound(valWork) > 0 Then
    outKakutyousi = valWork(1)
  End If
End Function
    • good
    • 0
この回答へのお礼

御有難う御座りまスル!!

ムムム・・・・・・・・
何か非常に難しいですな
拙者の存ぜぬ関数なる物が
多分に表記されておる為か
理解に時が必要じゃw

拙者の現在の習熟能力では
把握出来ぬ故、暫しの時を
くだされ、勉学に勤しんで
みるとしよう・・・(笑)

VBって奥が深いですね!
まだまだ勉強が必要です。
皆さんホントにどうもです

o(o|o)/    (V)o\o(V)

お礼日時:2001/11/21 09:35

拡張子が.txtと決まっているのでしたら、


Left$(ファイル名,Len(ファイル名)-4)ではダメですか?

この回答への補足

たしかにCHOROLYNさんのおっしゃる方法で出来るのですが
今後は「.txt」以外のファイルでも対応していきたいので
拡張子を取るような関数でもあればと思って質問しました。
拡張子って3文字以外にもありますよね!
たとえば「.html」だとか「.il」だとか・・・
後ろから一文字ずつ検索して、ピリオドが出たら切るって方法も
あるのですが・・・(めんどい^^)

補足日時:2001/11/20 14:08
    • good
    • 0

このQ&Aに関連する人気のQ&A

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

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

このQ&Aを見た人が検索しているワード

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

Q拡張子の表示方法

ドコモのSH700iで音楽を聴こうと、ミニSDカードへファイルをつくるまでは良かったのですが、VOICEのフォルダへドラックして拡張子を変更したいのですが、m4aの拡張子がはじめから表示されておらず、形式の変更ができずに困っています。
どなたか拡張子の表示方法をご存知の方、教えていただけませんか?

Aベストアンサー

自分のケータイはSDカード使えないのでやったことありませんが...
エクスプローラのメニューから「ツール」、「フォルダオプション」、表示タブ中の詳細設定を最下部までスクロールすると、「登録されている拡張子は表示しない」にチェックがついていると思います。そのチェックをはずせば拡張子の表示ができると思います。

QVB.NET xdoc2txtをつかってPDFからテキストを取り出すコーディングがわかりません

[xdoc2txt]
PDF,WORD,EXCEL,一太郎などの各種バイナリ文書からテキストを抽出

を利用して、c:\tempにあるpdfファイルからテキスト情報を取り込みたいです。
xdoc2txt.exeやxdoc2txt.dllなどはどこに配置したら良いのかも教えてください。
お願いします。

Aベストアンサー

こんにちは。

>すみませんVB初心者のため、全体的なコーディングの流れを教えて頂けると助かります。

コーディングといっても、VB.Net では、TextBox に出てきたものを流し込むだけですよね。今、VB.Net と言われても、感覚を取り戻すまでには時間も掛かります。ですから、VBSで間に合わせさせていただきます。

》xd2tx216.zip に入っている
》xd2txcom.dll (xdoc2txt com dll版)サンプル VBScipt は参考にはなりませんか?

》 (1)xd2txcom.dllをregsvr32で登録してから実行してください。
》 regsvr32 xd2txcom.dll
》 (2)64bit OSで実行するときは、%WINDIR%SysWOW64\CScript.exe で実行してください。

細かい所は、「誰でも使えるxdoc2txt」を参考にしてください。
http://talk-pc.sakura.ne.jp/anybody_setup_xdoc2txt.html#versionup

ありきたりですが、簡単なコードを、VBSで作ってみました。
要するに、regsvr32 で登録した後は、
Set objXDOC = CreateObject("xd2txcom.Xdoc2txt.1")
とか、com オブジェクトで設定すれば済むわけです。

objXDOC.ExtractText(strArg, False)
実行コマンドはこれです。

後は、通常通りだと思います。

以下は、ドラッグ&ドロップ でアーギュメントを与える方法ですが、必要な部分だけを取り出してまってください。

主要なものはほとんど読めるようになっています。
As/R というファイラーに組み込んでしまいましたが、
http://www.all.undo.jp/asr/1st/
こんな簡単なものでも、思った以上に便利です。

Editorでみますから、textファイルは読みません。
また、画像が入っているものは、しばらく止まっていることがあります。
バグっぽいところは、気がついているのですが、それは、ご容赦のほどを。

'----Xdoc2Txt_Viewer.vbs----

Dim ext
Dim objFs
Dim txtOut
Dim strArg
Dim strExt
Dim exts
Dim ret
Dim buf
strExt = "rtf,docx,xlsx,xlsm,pptx,doc,xls,ppt," & _
"sxw,sxc,sxi,sxd,odt,ods,odp,odg,jaw,jtw,jbw," & _
"juw,jfw,jvw,jtd,jtt,oas,oa2,oa3,bun,wj2" & _
"wj3,wk3,wk4,123,wri,pdf,mht,html,eml"
exts =Split(strExt,",")
Set Args =Wscript.Arguments
txtOut =""
Set objXDOC = CreateObject("xd2txcom.Xdoc2txt.1")
Set objFs= CreateObject("Scripting.FileSystemObject")
For Each strArg in Args
ext= objfs.GetExtensionName(strArg)
ret =Filter(exts,ext,True,1)
If UBound(ret)>-1 And Ubound(ret)< 2 Then
buf =objXDOC.ExtractText(strArg, False)
txtOut = txtOut & buf & vbCrLf
Else
txtOut =txtOut & vbCrLf & strArg
End If
Next
If txtOut <>"" Then
MsgBox txtOut
End If
'----------------

こんにちは。

>すみませんVB初心者のため、全体的なコーディングの流れを教えて頂けると助かります。

コーディングといっても、VB.Net では、TextBox に出てきたものを流し込むだけですよね。今、VB.Net と言われても、感覚を取り戻すまでには時間も掛かります。ですから、VBSで間に合わせさせていただきます。

》xd2tx216.zip に入っている
》xd2txcom.dll (xdoc2txt com dll版)サンプル VBScipt は参考にはなりませんか?

》 (1)xd2txcom.dllをregsvr32で登録してから実行してください。
》 regsvr32 xd2tx...続きを読む

Q拡張子の表示方法

お世話になります。
ファイルの拡張子の表示方法の問い合わせ。
通常のフォルダオプションからの方法では他のファイルは表示されたのですが、該当のファイルは
表示されません。
その他の方法はあるのでしょうか?
OS WIN7 64ビット Pro 他のデータが問い合わせ上、必要であれば表示します。連絡下さい。

よろしくお願いします。

Aベストアンサー

元々、拡張子がついていないファイルもあるので、そういうものは表示されません。

拡張子が表示されず、どのようなファイルか調べたいのなら「極窓」を使えばわかるものもあります。

http://www.55555.to/index.htm
こちからから極窓をダウンロードして調べてみてはいかがでしょう。
(VisualBasic6.0(SP6)ランタイムライブラリが必要です)

Q【VB2005】txtファイルからINIファイルみたいに読込む

googleや、ITプロのサイトなどで
VB2005のINIファイルもしくはXmlの読書きが理解できずに、
とりあえず、txtファイルから設定の読込みをしたいと考えてます。

↓Text.txt↓の内容
[Mode]
Mode=1
[SYSTEM]
Menu1=登録処理
Menu2=保存処理

・各、=(イコール)のあとの値を変数に代入したいと思ってます。
 状況と、したいことが伝わりにくいかも知れませんが
 ご口授お願いします。

Aベストアンサー

Win32APIのGetPrivateProfileStringを使えばできます。
#ファイルの識別子が.iniでも.txtでも関係なし...

Q拡張子の表示方法

現在フォルダにでてくるデータには名前だけで
拡張子がついてこないので、名前と拡張子がでるようにしたいのですが
どこで変更すればいいのでしょうか?

Aベストアンサー

「ツール」→「フォルダオプション」→「表示」→「登録されている拡張子は表示しない」のチェックを外してください。

QTXTファイルをMDBファイルに取込みたい

VB6を勉強しながら、実際の実務に役立つVB6のプログラムを作ろうとしていた者です。
実際に、他の外部委託のシステムと一緒に社内ユーザーに渡すものなのです。
しかし、この10月から人事異動で他の部署に異動となり、1ヶ月掛けてゆっくりやろうと思っていたのものの、それでは引継ぎ者に迷惑を掛けてしまうことになります。
すみませんが、どなたか教えて下さい。
タイトル行の無い2項目程のTXTファイル(固定長)をMDBファイルのテーブルに取込みたいのです。
宜しくお願いします。

Aベストアンサー

参考URLのAccessサンプル2番目あたりがいいかも

Accessでできているけど、VBに移植できます。

参考URL:http://www.geocities.co.jp/SiliconValley-Cupertino/8157/

Q拡張子の表示方法

ファイルの拡張子を常時表示させる方法を教えてください。

Windows Visataを使用しています。
現在は、ファイルを右クリック→プロパティ→全般タブのファイルの種類で確認しています。

Aベストアンサー

1.エクスプローラを開いて
2.キーボードの「Altキー」を押し
3.ツール>フォルダオプション>表示
4.「登録されている拡張子は表示しない」のチェックを外す
5.「OK」で閉じる

QエクセルVBA セルのデータをtxtファイルで出力したい?

エクセルVBAを使ってセルのデータをtxtファイルで出力したいと考えています。

仮にフォルダAがあり、その中にフォルダB、フォルダCがあります。
(フォルダBの中にはフォルダDがあります)

フォルダCの中には、エクセルブックがあるとします。

以下のような感じです。

フォルダA
    ├フォルダB
    │    └フォルダD(この中にtxtファイルを作りたい)
    │
    └フォルダC
         └エクセルブック

エクセルブック(Sheet1)
セルA1には「日記タイトル」
セルA2には「日記の内容」

があるとします。

エクセルVBAを使って、フォルダDの中に「日記タイトル.txt」のファイルを作りたいです。

日記タイトル.txtの中身は、セルA2の日記の内容です。

エクセルVBAを使いたいのですが、どのように書けばいいか教えてください。

よろしくお願いします。

Aベストアンサー

No.2のママチャリです。
nao0620さんの回答を理解できれば、もう答えは分かっていますよね。
念のため、プログラムコードを書いておきますが、内容を理解しないと、
応用ができませんよ。

Sub WriteDiary()
ChDir ThisWorkbook.Path
ChDir ".." '一階層上がる
ChDir CurDir & "\フォルダB\フォルダD"

Open CurDir & "\" & WorkSheets("Sheet1").Range("A1") & ".txt" For Output As #1
Print #1, WorkSheets("Sheet1").Range("A2")
Close
End Sub

Q拡張子CR2の表示方法を教えて下さい。

拡張子がCR2となっている画像データをフォトショップCSで開こうとしてもエラーが出ます。
どうしたらよいのでしょうか。

Aベストアンサー

RAWはカメラ個々で違う拡張子のようですから、パソコンで言うように共通性は全然無い物だそうです。
何でそうなのか知りませんが、当初の何かの目的があったのでしょうね?

通常は付属の物で開けます。で、必要に応じてTIFF,JPEG変換します。

CSのバージョン確認と、プラグインがあるのか?確認してください。各カメラ別に入れ込む必要があります。

キャノンのどのバージョンのビューアーかしりませんが、キャノンユーザーであることと、ビューアー次第ではDPPがダウンロードできます。

この手の質問ですがソフトのバージョンとかお使いのカメラとか関連ソフト全て記載された方が明確な回答来ますよ、、。

QVB2008 txtファイル保存

こんにちは、Vb2008を勉強しています。

デスクトップに保存している、TXTファイルに、
フォームで入力したデータを追加保存したいと思い、ネットで調べたり…で
入力しましたが、txtファイルを開いてみると文字化けしてしまします。

Dim writer As System.IO.FileStream = _
System.IO.File.OpenWrite("C:\Users\Desktop\顧客管理.txt")

'SystemWriterオブジェクトを作成し、テキストデータが書き込めるようにする
Dim sw As System.IO.StreamWriter = New System.IO.StreamWriter(writer)

'ファイルの末尾に移動する
sw.BaseStream.Seek(0, System.IO.SeekOrigin.End)

'データを書き込む
sw.WriteLine(TextBox1.Text & "," & TextBox2.Text & "," & TextBox3.Text)
'ファイルを更新する
sw.Flush()

'ファイルを閉じる
sw.Close()
writer.Close()


上記の方法で文字化けだったので、またまた、調べて入力しましたが
今度は、改行されず…単純な、データの追加のようになってしまっています。

私は、新しい行に追加できるようにしたいです。
下のコードは文字コードの指定をしたので、保存はできますが、
改行されません。

Dim FileName As String = "C:\Users\Desktop\確認.txt"
Dim Writer As IO.StreamWriter
Dim Encode As System.Text.Encoding
'文字コードにShiftJISを指定。
Encode = System.Text.Encoding.GetEncoding("Shift-JIS")

'既に存在するテキストに追加する場合は第2引数をTrueにする。
Writer = New IO.StreamWriter(FileName, True, Encode)
Writer.Write(TextBox1.Text & "," & TextBox2.Text)
Writer.Close()

どなたか、教えていただけませんでしょうか?

こんにちは、Vb2008を勉強しています。

デスクトップに保存している、TXTファイルに、
フォームで入力したデータを追加保存したいと思い、ネットで調べたり…で
入力しましたが、txtファイルを開いてみると文字化けしてしまします。

Dim writer As System.IO.FileStream = _
System.IO.File.OpenWrite("C:\Users\Desktop\顧客管理.txt")

'SystemWriterオブジェクトを作成し、テキストデータが書き込めるようにする
Dim sw As System.IO.StreamWriter = New System.IO.StreamWri...続きを読む

Aベストアンサー

StreamWriterのWriteLineメソッドを調べる。

参考URL:http://dobon.net/vb/dotnet/#file


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

人気Q&Aランキング

おすすめ情報