いきなりですが例です。

例(1):
'SaveFileDialogクラスのインスタンスを作成
Dim sfd As New SaveFileDialog()
sfd.FileName = "新しいファイル.html"
sfd.InitialDirectory = "C:\"
sfd.Filter = _
"HTMLファイル(*.html;*.htm)|*.html;*.htm|すべてのファイル(*.*)|*.*"
sfd.FilterIndex = 2
'タイトルを設定する
sfd.Title = "保存先のファイルを選択してください"
sfd.RestoreDirectory = True
sfd.OverwritePrompt = True
sfd.CheckPathExists = True

'ダイアログを表示する
If sfd.ShowDialog() = DialogResult.OK Then
'Copy
System.IO.File.Copy("C:\test.txt", (sfd.Namefile), True)
End If


という具合に「名前を付けて保存」で指定先をコピーする様には
出来るんですが、これがフォルダの場合・・

例2:
'FolderBrowserDialogクラスのインスタンスを作成
Dim fbd As New FolderBrowserDialog

'上部に表示する説明テキストを指定する
fbd.Description = "フォルダを指定してください。"
'ルートフォルダを指定する
'デフォルトでDesktop
fbd.RootFolder = Environment.SpecialFolder.Desktop
'最初に選択するフォルダを指定する
'RootFolder以下にあるフォルダである必要がある
fbd.SelectedPath = "C:\Windows"
'ユーザーが新しいフォルダを作成できるようにする
'デフォルトでTrue
fbd.ShowNewFolderButton = True

'ダイアログを表示する
If fbd.ShowDialog(Me) = DialogResult.OK Then
'選択されたフォルダを表示する
System.IO.File.Copy("C:\test.txt", ???????, True)
End If


上記の??????が分りません。
指定したフォルダ内にあるファイルを操作したいのですが、
(fbd.SelectedPath),"test.txt"でも怒られます。

どの様にしてソースを書けば良いでしょうか?

※回答はソースコードを必ず書き込んでください。

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

A 回答 (1件)

fbd.SelectedPathはフォルダー名ですから ファイルのコピー先の指定には不十分です



選択されたのが C:Workであるなら その下にファイル名を補足しないといけません
そのファイル名は あなたが決めるのか、プログラムを使用するユーザーが決めるのかは われわれ回答者は判断できかねます

こちらで用意するのであれば
System.IO.File.Copy("C:\test.txt", fbd.SelectedPath & "\sample.html" , True)

ユーザーに指定させるのであれば
System.IO.File.Copy("C:\test.txt", fbd.SelectedPath & "\" & TextBox1.text , True)
などでしょう

> ※回答はソースコードを必ず書き込んでください。
に書くと反感を買うこともありますよ
    • good
    • 0
この回答へのお礼

回答有難うございます。
質問内容不足で申し訳ないです。

あと
> ※回答はソースコードを必ず書き込んでください。
承知しました。今後注意します。

有難うございました。

お礼日時:2009/05/18 16:16

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

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

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

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

Qmultiple definitionというエラー

現在Ubuntu LinuxのgccでC言語のプログラムをやっています。

https://sourceforge.jp/projects/cc1101driver/scm/svn/blobs/2452/trunk/20140411/code.h

このツリーのcode.hに ”const sig_code2_t PVC_TCP_SIG_CODE[100] = {” というコードを追加してmakeを行うと次のようなエラーが出て実行ファイルが出力されません。



(エラー内容)

---------------(中略)-----------------
gcc -o exe main.o event.o env.o audio.o task.o comm.o menu_show_status.o mount.o net.o misc.o -lpthread
event.o:(.rodata+0x0): multiple definition of `PVC_TCP_SIG_CODE'
main.o:(.rodata+0x0): first defined here
env.o:(.rodata+0x0): multiple definition of `PVC_TCP_SIG_CODE'
main.o:(.rodata+0x0): first defined here
audio.o:(.rodata+0x0): multiple definition of `PVC_TCP_SIG_CODE'
main.o:(.rodata+0x0): first defined here
task.o:(.rodata+0x0): multiple definition of `PVC_TCP_SIG_CODE'
main.o:(.rodata+0x0): first defined here
comm.o:(.rodata+0x0): multiple definition of `PVC_TCP_SIG_CODE'
main.o:(.rodata+0x0): first defined here
mount.o:(.rodata+0x0): multiple definition of `PVC_TCP_SIG_CODE'
main.o:(.rodata+0x0): first defined here
net.o:(.rodata+0x0): multiple definition of `PVC_TCP_SIG_CODE'
main.o:(.rodata+0x0): first defined here
misc.o:(.rodata+0x0): multiple definition of `PVC_TCP_SIG_CODE'
main.o:(.rodata+0x0): first defined here
collect2: error: ld returned 1 exit status
make: *** [exe] Error 1






この const sig_code2_t PVC_TCP_SIG_CODE[100] = {をコメントアウト正常にビルドできるのですが、




この問題を解決するにはどうすれば良いのかご教示頂きますようお願い致します。

現在Ubuntu LinuxのgccでC言語のプログラムをやっています。

https://sourceforge.jp/projects/cc1101driver/scm/svn/blobs/2452/trunk/20140411/code.h

このツリーのcode.hに ”const sig_code2_t PVC_TCP_SIG_CODE[100] = {” というコードを追加してmakeを行うと次のようなエラーが出て実行ファイルが出力されません。



(エラー内容)

---------------(中略)-----------------
gcc -o exe main.o event.o env.o audio.o task.o comm.o menu_show_status.o mount.o net.o misc.o -lpthread
event.o:(.rodat...続きを読む

Aベストアンサー

お約束の「ヘッダに実体を定義してはいけない」ってヤツです。

code.hに記述した内容はall_includes.hに適用されます。
all_includes.h内で#include "code.h"していますからね。

で、all_includes.hの内容はそれぞれ
audio.c、comm.c、env.c、event.c、main.c、misc.c、mount.c、net.c、task.cに適用されます。
つまり、code.hに記述した内容も
audio.c、comm.c、env.c、event.c、main.c、misc.c、mount.c、net.c、task.cに適用されます。
それぞれのオブジェクトファイルにPVC_TCP_SIG_CODE[100]が存在します。

リンクする段階でどのオブジェクトファイルのPVC_TCP_SIG_CODE[100]を使用したらいいのでしょうか?????
というエラーです。

extern宣言して、実体をどこかのソースファイルのみに記述する。
というのが一般的な対処方法です。
# static宣言にすればとりあえずリンクは通るかもしれませんが…無駄が出ますねぇ。
# 今回はconstなので、メモリに無駄が出るだけ…で済むかと思われますが。
http://d.hatena.ne.jp/saitodevel01/20110321/1300685958

お約束の「ヘッダに実体を定義してはいけない」ってヤツです。

code.hに記述した内容はall_includes.hに適用されます。
all_includes.h内で#include "code.h"していますからね。

で、all_includes.hの内容はそれぞれ
audio.c、comm.c、env.c、event.c、main.c、misc.c、mount.c、net.c、task.cに適用されます。
つまり、code.hに記述した内容も
audio.c、comm.c、env.c、event.c、main.c、misc.c、mount.c、net.c、task.cに適用されます。
それぞれのオブジェクトファイルにPVC_TCP_SIG_CODE[100]が存在します。...続きを読む

QRst.FindFirst "名称コード" & "=" & "'101'"

タイトルのコードでは問題ないのですが、 101 を文字変数にすると「抽出条件でデータ型が一致していません」のエラーになります。この場合シングルクオーテーションはどういう意味なのでしょうか。
どうすれば良いのでしょうか。

dim Vcode as string
Vcode = "101"
Rst.FindFirst "名称コード" & "=" & Vcode

Aベストアンサー

FindFirst や、フォームの Filter プロパティで設定する場合は、SQL文のWHERE句の
内容を設定する必要があります。

フィールド名がテキスト型の場合は、

SELECT * FROM テーブル名 WHERE フィールド名 = "xxx"

のようになります。
で、FindFirst メソッドなんかで使う場合は、

rst.FindFirst フィールド名 = "xxx"

としたいところですが、条件の部分は文字列にしないといけません。
で、

rst.FindFirst "フィールド名 = "xxx""

こうすると、

フィールド名 =

で、切れてしまいます。
そこで、

rst.FindFirst "フィールド名 = 'xxx'"

このようにすればOKです。
次のステップとして、xxx の部分を変数を使ってやりたい場合。
単純に変数名に置き換えると、

rst.FindFirst "フィールド名 = '変数名'"

ですが、変数を、"" の中に記述すると、文字列として扱われますので、"" の外に
出してやる必要があります。
その場合、文字列と変数をつなぐためには、& を使います。

rst.FindFirst "フィールド名 = '" & 変数名 & "'"

で、このようになります。

FindFirst や、フォームの Filter プロパティで設定する場合は、SQL文のWHERE句の
内容を設定する必要があります。

フィールド名がテキスト型の場合は、

SELECT * FROM テーブル名 WHERE フィールド名 = "xxx"

のようになります。
で、FindFirst メソッドなんかで使う場合は、

rst.FindFirst フィールド名 = "xxx"

としたいところですが、条件の部分は文字列にしないといけません。
で、

rst.FindFirst "フィールド名 = "xxx""

こうすると、

フィールド名 =

で、切れてしまいます...続きを読む

Qbear the definitions

bear the definitions
という場合、このbearはどういう訳となるのでしょうか?


Bold and capitalized terms not defined herein bear the definitions in the Competition Packet.
という文で使われていました。

「ここで定義していない太字と大文字表記は、Competition Packetに定義されている」という意味でしょうか?

Aベストアンサー

yes

QVB6.0exeから.NETのDLLを呼び出した場合の実行時エラー’429’について

お世話になります。

環境はWindowsXPです。

現在、VB6.0のexeから.NETのDLLを使用する・・・というのをしています。

以下の手順を踏み、実行してみたのですがどうも上手く行きません。。。
(1).NETのDLLを作成
(2)COMとして利用するために、.NET 2003コマンドプロンプトから「regasm」コマンドにてレジストリに登録
(3)tlbexpコマンドで、タイプライブラリを作成
(4)VB6のプロジェクトから(3)を参照設定する
(5)VB6から.NETクラスを生成し、呼び出す
(6)プロジェクトをコンパイルし、exeを生成

この手順にて実行すると「実行時エラー'429'ACtiveXコンポーネントはオブジェクトを作成できません」という
エラーメッセージが出てしまいます。

windows updateをしてみたり、VB6.0のランタイムをインストールしてみたりしたのですが、
どうもダメみたいで困っています。

解決方法などご存知の方がいらっしゃいましたら、
ご教授いただけると大変助かります。

よろしくお願いいたします。

お世話になります。

環境はWindowsXPです。

現在、VB6.0のexeから.NETのDLLを使用する・・・というのをしています。

以下の手順を踏み、実行してみたのですがどうも上手く行きません。。。
(1).NETのDLLを作成
(2)COMとして利用するために、.NET 2003コマンドプロンプトから「regasm」コマンドにてレジストリに登録
(3)tlbexpコマンドで、タイプライブラリを作成
(4)VB6のプロジェクトから(3)を参照設定する
(5)VB6から.NETクラスを生成し、呼び出す
(6)プロジェクトをコンパイルし、exeを生成

...続きを読む

Aベストアンサー

Exeで使用しているiniファイルやtlbファイルを最新のに置き換えて、もう一度regasmコマンドで登録してみてはいかがでしょう。

Qウィンドウズのアップデートで10月20日に、Definition Up

ウィンドウズのアップデートで10月20日に、Definition Update for wWindows Defender-KB015597(Definition 1.93.26.0)が2回インストールされましたが、そのあとにもう一つ「更新プログラムをインストールしています(50パーセント完了)」とありますが、今日で3日連続表示され、インストールが進みません。なにか解決方法はないでしょうか?PCは初心者クラスです。よろしくお願いします。

Aベストアンサー

>今日で3日連続表示され、インストールが進みません。
ちょっと状況がつかめません。
毎日の起動時に同じ内容が表示されることが3回続いた、ということでしょうか。それとも、72時間の間ずっと「(50パーセント完了)」の状態なのでしょうか。

前者なら
http://menushowdelay.blog13.fc2.com/blog-entry-523.html
とその中のリンクを。
後者なら、とりあえず再起動しましょう。

Q'2465'指定した式で参照している'直線Aii'フィールドが見つかり

'2465'指定した式で参照している'直線Aii'フィールドが見つかりません。

入力されたテキストDELTUKIをiiにセットして直線Aii~Ciiに反映させたいです。
DELTUKIには0~12までのどれかがセットされて、00の場合には未可視、それ以外は
該当月の直線Aii~Ciiを可視化させたいです。
ですが、上記エラーが発生します。
どなたかご指南頂きたくよろしくお願い致します。
※.メイン画面の画像添付参照願います。
※.vba vb6 winXP
SetLowerLine:
With objrep
!直線103.Visible = True
!直線104.Visible = True
!直線105.Visible = True
!直線106.Visible = True
!直線107.Visible = True
End With
'Reports(stdocname)!直線103.Visible = True
'Reports(stdocname)!直線104.Visible = True
'Reports(stdocname)!直線105.Visible = True
'Reports(stdocname)!直線106.Visible = True
'Reports(stdocname)!直線107.Visible = True

Format ("00")
ii = Forms!メイン画面![テキストDELTUKI]
If ii = "00" Then
Else
objrep.Controls("直線A" & "ii").Visible = True
objrep.Controls("直線B" & "ii").Visible = True
objrep.Controls("直線C" & "ii").Visible = True
End If

'2465'指定した式で参照している'直線Aii'フィールドが見つかりません。

入力されたテキストDELTUKIをiiにセットして直線Aii~Ciiに反映させたいです。
DELTUKIには0~12までのどれかがセットされて、00の場合には未可視、それ以外は
該当月の直線Aii~Ciiを可視化させたいです。
ですが、上記エラーが発生します。
どなたかご指南頂きたくよろしくお願い致します。
※.メイン画面の画像添付参照願います。
※.vba vb6 winXP
SetLowerLine:
With objrep
!直線103.Visible = True
!直線104....続きを読む

Aベストアンサー

すみません、先日のこちらのご質問での回答者です:
http://oshiete1.goo.ne.jp/qa5770608.html

前回の回答2への補足の件のうち、「(2)」と「(3)」については
結局私では対処法の見当をつけかねたままなのですが(汗)、
本件についてだけはどうにかなりそうなので、回答をつけさせて
戴きます。

・・・というか、前回「"」を外すことを指摘した際に気づいて
いればよかったのですが、これも見落としていました(汗)
以下の部分を、下記のように修正してください。

【現在】
Format ("00")
ii = Forms!メイン画面![テキストDELTUKI]

If ii = "00" Then
Else
  objrep.Controls("直線A" & "ii").Visible = True
  objrep.Controls("直線B" & "ii").Visible = True
  objrep.Controls("直線C" & "ii").Visible = True
End If

【修正】
'変数「ii」に対して、Format関数で桁表示を指定
ii = Format(Forms!メイン画面![テキストDELTUKI], "00")

If ii = "00" Then
Else
  '「ii」を変数として使用するため、「"」は外します
  objrep.Controls("直線A" & ii).Visible = True
  objrep.Controls("直線B" & ii).Visible = True
  objrep.Controls("直線C" & ii).Visible = True
End If


・・・以上です。

これで、「テキストDELTUKI」に1桁の数字(「1」や「2」など)を
指定した場合も、「直線A01」や「直線A02」に処理が行われる
ようになると思います。

すみません、先日のこちらのご質問での回答者です:
http://oshiete1.goo.ne.jp/qa5770608.html

前回の回答2への補足の件のうち、「(2)」と「(3)」については
結局私では対処法の見当をつけかねたままなのですが(汗)、
本件についてだけはどうにかなりそうなので、回答をつけさせて
戴きます。

・・・というか、前回「"」を外すことを指摘した際に気づいて
いればよかったのですが、これも見落としていました(汗)
以下の部分を、下記のように修正してください。

【現在】
Format ("00")
ii = For...続きを読む

QOn Error GoTo でエラーが発生する

Sub Macro1()

On Error GoTo ErrorTrap1
    '-エラーの発生するコード 1

ErrorTrap1:

On Error GoTo 0

   Do
   On Error GoTo ErrorTrap2
      '-エラーの発生するコード 2
   On Error GoTo 0
   Loop

ErrorTrap2:

End Sub

しかし、以下のようにSubで二つに分けるとエラーは出ません。

Sub Macro1()

On Error GoTo ErrorTrap1
    '-エラーの発生するコード 1

ErrorTrap1:

On Error GoTo 0

Call Macro2

End Sub
Sub Macro2()

    Do
     On Error GoTo ErrorTrap2
      '-エラーの発生するコード 2
    On Error GoTo 0
    Loop

  ErrorTrap2:

End Sub

「On Error GoTo 0」がうまく解除できていないのかと思い、いろいろ試してみました。
しかし、どういった理由かはわかりませんでした。
「On Error GoTo」は、Subでは、ひとつしか使えないのでしょうか。

Sub Macro1()

On Error GoTo ErrorTrap1
    '-エラーの発生するコード 1

ErrorTrap1:

On Error GoTo 0

   Do
   On Error GoTo ErrorTrap2
      '-エラーの発生するコード 2
   On Error GoTo 0
   Loop

ErrorTrap2:

End Sub

しかし、以下のようにSubで二つに分けるとエラーは出ません。

Sub Macro1()

On Error GoTo ErrorTrap1
    '-エラーの発生するコード 1

ErrorTrap1:

On Error GoTo 0

Call Macro2

End Sub
Sub Macro2()

    Do
     On Error G...続きを読む

Aベストアンサー

エラー処理の中でOn Error GoToを記述することはできません。


エラー処理の基本的な構造は、

Sub Macro1()

On Error GoTo ErrorTrap1
    '-エラーの発生するコード 1
On Error GoTo 0

Exit Sub

ErrorTrap1:
  'エラー処理
  Resume Next

End Sub


エラー処理が2つある場合は、

Sub Macro1()

On Error GoTo ErrorTrap1
    '-エラーの発生するコード 1
On Error GoTo 0

Do
  On Error GoTo ErrorTrap2
    '-エラーの発生するコード 2
  On Error GoTo 0
Loop

Exit Sub

ErrorTrap1:
  'エラー処理1
  Resume Next

ErrorTrap2:
  'エラー処理2
  Resume Next

End Sub


Resume Next でエラーが発生した行の次の行から再開します。
Resumeには他の構文もありますので、調べてみてください。

エラー処理の中でOn Error GoToを記述することはできません。


エラー処理の基本的な構造は、

Sub Macro1()

On Error GoTo ErrorTrap1
    '-エラーの発生するコード 1
On Error GoTo 0

Exit Sub

ErrorTrap1:
  'エラー処理
  Resume Next

End Sub


エラー処理が2つある場合は、

Sub Macro1()

On Error GoTo ErrorTrap1
    '-エラーの発生するコード 1
On Error GoTo 0

Do
  On Error GoTo ErrorTrap2
    '-エラーの発生するコード 2
  On Error GoTo 0
Loop

Exit Sub

...続きを読む

Q4桁の数字を A*1000+B*100+C*10+D 以外で表現したい。

A=1
B=2
C=3
D=4

のとき 
1234をA*1000+B*100+C*10+D以外で表現したいのですが
何かいい方法がないでしょうか?
4桁ならいいんですが
15、6桁を10行ぐらいコーディングしないといけないのでなえてます↓助けてください。

Aベストアンサー

No.4です。

VB2005でも問題なくできますよ。実際に確認済みです。

Dim A As Integer = 1
Dim B As Integer = 2
Dim C As Integer = 3
Dim D As Integer = 4
Dim E As integer

E = (A & B & C & D) * 1
MsgBox(E)

これで試してください。

Qステレオミキサーの「realtek high definition a

ステレオミキサーの「realtek high definition audio 6.0.1.5490」より新しいバージョンのものはありますか?更新したいので。

Aベストアンサー

こんばんは。

現状ですと、[R2.47]の"6.0.1.6083"が最新のようです。
RealtekのOHPからダウンロードできます。
http://www.realtek.com.tw/downloads/downloadsCheck.aspx?Langid=4&PNid=24&PFid=24&Level=4&Conn=3&DownTypeID=3&GetDown=false

QMultiLine=TrueのTextBoxでEnterキー

Visual Basic 6.0で、TextBoxでEnterが押されたら次のコントロールへ移動させているのですが、
MultiLine=Trueの場合、TextBox内で改行されてから次のコントロールへ移動してしまいます。
TextBox内で改行されたくはないのですが、何か回避方法はありますか?
(10文字分の幅のTextBoxに20文字入力するため、折り返しはされて欲しいのです。)

Aベストアンサー

KeyPressイベント内でKeyAscii=0とすれば入力をキャンセルできますよ。


人気Q&Aランキング

おすすめ情報