• ベストアンサー

アプリケーション:ファイル名について

Visual C++ 2008 ExpressEditionでアプリケーションを作成しています。 [開く]というボタンで読み込みたいファイル(csv形式)の内容を読み込むことはできるのですが、 dlg->FileNameで指定されるファイル名を表示しようとすると、D:~という保存場所の詳細を習得してしまいます。どうすれば開いたファイル名だけを表示できますか? (ToStringはほかの目的でオーバーライドしています。なので初期設定の動きはしないと思います。)

質問者が選んだベストアンサー

  • ベストアンサー
  • D-Matsu
  • ベストアンサー率45% (1080/2394)
回答No.1

まぁ一応なんとか推測はできますが、C++/CLIでやってるとか開くファイル名の取得に何を使っているかとか、「csvの内容云々」は質問とは関係ないよねとか、もう少し状況を端的に説明出来てる方が回答する側としては有難いですね。 で、OpenFileNameクラスを使っていると思いますのでSafeFileNameメンバーを調べてみましょう。

marimmo-
質問者

お礼

ありがとうございます。 始めたばかりで、用語の使い方がまだ分からずに迷惑をかけてしまい申し訳ありません。 SaveFileNameを試したところファイル名+拡張子で表示することができました。 これからもよろしくお願いします。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • C++による ファイルの読み込み

    今、Visual C++2008 Express Editionを使用して、ファイルダイアログを使用して用意した配列にファイル内容を記憶させる簡単なプログラムを作成しています。 プログラムの流れは以下のとおりです。 1.ボタンをクリックする。 2.ファイルダイアログを表示する。 3.選択されたファイル名の内容を用意した配列に記憶する。 1,2はできたのですが、選択されたファイル(主にCSVファイル)の内容を配列に記憶させる方法がわかりません。 どうしたらよいのでしょうか。教えてください。 以下にボタンを押したときの動作を掲載しますのでお願いいたします。 ========================= private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) { //ファイル内容を記憶させる配列 double x[1024], y[1024]; //ファイルを読み込むときのループインデックス                    int i=0;                   //ファイル名を格納する変数                    String^ fname;               ファイルを開くためのダイアログを用意 OpenFileDialog^ dlg = gcnew OpenFileDialog();                 //フィルターの内容を設定 dlg->Filter::set("CSVファイル(*.csv)|*.csv");              //ダイアログタイトルの設定 dlg->Title::set("開くファイルを選択してください。");              //ダイアログの表示 dlg->ShowDialog();             //ファイル名を取得して格納    fname=dlg->FileName;        /**********************************************           ここに上記の「fname」のファイルを読み込む処          理がくる              ********************************/ }

  • ファイルからアプリケーションの起動

    どなたか、教えて下さい。 PHPにて作成済みのアプリケーションファイル(csv等)のファイル名を画面に表示するのですが、 それをクリックした際にアプリケーションを起動し、その指定ファイルをオープンしたいと思います。 どのようにすれば出来るのでしょうか? ファイルはサーバー側に、アプリケーションソフトはローカル側に入っています。 宜しくお願い致します。

    • 締切済み
    • PHP
  • まとめてファイル名を変更したい

    あるフォルダに存在するファイル名に”RAWDATA"を含むテキストファイルを 任意のファイル名でCSVに変更したいのですが、 バッチファイルで set /p filename= rename d:\あるフォルダ\RAWDATA*.txt %filename%*.csv で簡単にできるかなと思ったのですが、 ”RAWDATA”の部分は入力した分しか変更されないようでした。 例えば”abc”と入力すると”abcDATA”となります。 入力したファイル名に置き換わるようにするには どのようにしたら良いのでしょうか? バッチ初心者ですがよろしくお願いします。

  • csvファイルダウンロード時のファイル名

    いつもお世話になっております。 CSVファイルダウンロード時のファイル名についての質問です。 (CSVダウンロード処理は下記の方法で行っています。) "Content-Disposition","inline;filename=test.csv" CSVファイルをサーバーからダウンロードする際、 ファイルを[開く]or[保存]のダイアログが表示され、 保存を選択し、保存したファイルを表示する場合は、 ファイル名とシート名とに差異はなく、 シート名については、そのままファイル名が指定されますが、 上記の場合のシート名は『test』になります。 しかし、[開く]を選択した場合、 シート名は、 .csv]test[1]などとなってしまいます。 原因としては、開くを押下した場合でも テンポラリーフォルダに一時的にファイルが保存されてしまうせいだと 考えます。 実際、ファイル名をtest[1].csvとしてファイルを開くと .csv]test[1]というシート名になってしまいました。 テンポラリーフォルダに保存する際 なぜ角カッコ[]つきのファイル名test[1].csvで保存されてしまうか ご存知の方がいらっしゃいましたら、 是非ご教示くださいますよう宜しくお願いいたします。

  • アプリケーションタイトルにファイル名のみ表示したい

    エクセルファイルを開いた時に、 アプリケーションタイトルに拡張子を含まない自身のファイル名を設定したいので Private Sub Workbook_Open() Application.Caption = Left(ActiveWorkbook.Name, InStrRev(ActiveWorkbook.Name, ".") - 1) End Sub としたのですが、 こうすると、タスクバーから見た時などは ファイル名 - ファイル名 .xlsm と表示されてしまいます。 - より右の「 ファイル名 .xlsm」は不要なのですが、 どうしてこうなってしまうのでしょうか? ファイル名のみ表示させたいです。 こうなるのは全画面表示の場合のみで最大化をやめるとファイル名のみ表示されます。 全画面表示でエクセルは開きたいです。

  • ファイル名の取得について

    よろしくお願いします、 環境はWindows 2000 SP4 Visual Studio VC8です openFileDialogクラスのFileNameメソッドで フルパスのファイル名を取得できますが、 ファイル名だけ取得したい場合はどのメソッドまたはクラスを使用したら出来るでしょうか?

  • excel マクロ ファイル名の取得

    excelのSheet上にボタンをつけクリックすると範囲内をコピーして、名前をつけCSV形式で保存させる方法で名前の取得が分からず困っています。教えてください。 名前はSheetのR1セルとA1セルと現在の年をつけたいのですが・・・ 'ファイル名を取得 Set OldWkbook = ActiveWorkbook AkName = OldWkbook.Sheets(StName1).Range("R1").Value Ak1Name = OldWkbook.Sheets(StName1).Range("A1").Value Filename = Ak1Name & AkName & Format(Now, "yyyy") & ".CSV" Open "C:\仕事\Filename.csv" For Output As #1 For i = 10 To 44 a = Application.Transpose(Range(Cells(i, "A"), Cells(i, "AF")).Value) res = Join(Application.Transpose(a), ",") Print #1, res Next i Close #1

  • ファイル名を動的に生成したい

    ファイル名を日付とその日の中の通し番号にしたいと思っています。 例えば2009/07/17日だったらファイル名を 20090717+その日の中の通し番号とする。 日付をファイル名にするところまではできたのですが「その日の中の 通し番号とする」部分がわかりませんので教えていただきたいのですが。 import java.text.SimpleDateFormat; import java.util.Date; public class CreateFileName { public static void main(String args[]){ Date date1 = new Date(); SimpleDateFormat sdf1 = new SimpleDateFormat("yyyyMMdd"); //ファイル名は日付とその日の中の通し番号 String fileName = sdf1.format(date1).toString()+".pdf"; System.out.println(fileName); } }

  • ファイル名が決まっていないファイルのデータを取り出しひとつのファイルにまとめる

    初めまして。 マクロ超初心者です。まだまだ勉強中でして自分で作るのは困難です。しかし、来月には必要なので… よろしくお願いします! エクセル2000で以下のマクロを作成したいです。 1.フォルダ内のCSVファイルを開き、中のデータをひとつにまとめる。 (フォルダ名とファイル名、ファイル数はその時によって変わってきます。ファイル数はだいたい10個くらいです。ひとつのデータは20列50行くらいで列の項目を基準にまとめたいです。) 2.列を1列目に挿入し、2列目と3列目のデータを1列目に統合する。 3.1列目のデータを使用し、重複を調べる。重複がある場合はどちらかひとつを削除する。(できれば4列目のデータを比較し数値が少ないほうを削除したいです。) ファイルを開くところまでは検索して探し当てたのですが、ファイル名が決まっていないことが難しく詰まってしまいます。 Sub OpenAllBooks() Dim filename As String Dim openedbook As Workbook Dim isbookopen As Boolean filename = Dir(ThisWorkbook.Path & "\*.csv") Do While filename <> "" isbookopen = False For Each openedbook In Workbooks If openedbook.Name = filename Then isbookopen = True Exit For End If Next If isbookopen = False Then Workbooks.Open (ThisWorkbook.Path & "\" & filename) End If filename = Dir() Loop End Sub 詳しい方よろしくお願いします!

  • エクセル:Application.ScreenUpdatingについて

    マクロでCSVファイルを開き、CSVファイル上で一部の操作したいのですが、 画面には開いたCSVファイルを表示させたくないです。  Application.ScreenUpdating = False  csvFile.Activate  Application.ScreenUpdating = True ※csvFileは、開いたCSVファイルにセットした名称 上記のように、CSVファイルをアクティブにしている部分をApplication.ScreenUpdatingで挟んでいるのですが、 CSVファイルが表面に出てきてしまいます。  MsgBox "まえ"  csvFile.Activate  MsgBox "うしろ" と記述すると、 「まえ」のメッセージボックスの『OK』をクリックするとCSVファイルが表面に表示され、 その上に「うしろ」のメッセージボックスが表示されるので、 CSVファイルを表面に出しているのは csvFile.Activate のコードで間違いないと思います。 表示させたくないファイルをわざわざアクティブにしているのは、 自分の知識ではアクティブにしないとそのファイル上での操作ができないためです。 シートの切り替えなどは Application.ScreenUpdating = False で止めることができるのですが、別ファイルの場合は止められないのでしょうか。