アプリ版:「スタンプのみでお礼する」機能のリリースについて

開発環境はVB6.0です。

説明べたなので箇条書きで記入しました。

(1)ボタンを押す
(2)Dドライブの中にあるJPGファイル(複数)をZドライブにコピー(もしくは移動)

コピーでも移動でもどちらでもかまいませんが、なんせ異なったドライブにJPGファイルを写す方法を探しています。

VB上に画像を表示して保存する方法はわかりましたが、
  Call SavePicture(Image1, "z:\meibo\a\1.jpg")
これでは一気に保存することが出来ないのでとても困っています。

どなたか教えて下さい。よろしくお願いします。

A 回答 (4件)

あちらの掲示板ではスルーされてしまったようですね?



■回答例1
Private Sub Command1_Click()

On Error GoTo ErrorProc

Const strFileType = "*" '"jpg"

Dim strBaseDir As String
Dim strSrcDir As String
Dim strDestDir As String
Dim strGetDir As String

strBaseDir = App.Path ' "C:\"
strSrcDir = strBaseDir & "\o"
strDestDir = strBaseDir & "\meibo\a"

strGetDir = Dir(strSrcDir & "\*." & strFileType)
Do Until strGetDir = ""
FileCopy strSrcDir & "\" & strGetDir, strDestDir & "\" & strGetDir
strGetDir = Dir()
Loop

ExitProc:

Exit Sub

ErrorProc:

MsgBox Err.Description
Resume ExitProc

End Sub

■回答例2

Private Sub Command2_Click()

On Error GoTo ErrorProc

Const strFileType = "*" '"jpg"

Dim strBaseDir As String
Dim strSrcDir As String
Dim strDestDir1 As String
Dim strDestDir2 As String
Dim strGetDir As String
Dim copySrcPath As String
Dim copyDestPath As String

strBaseDir = App.Path ' "C:\"
strSrcDir = "\o"
strDestDir1 = "\meibo"
strDestDir2 = "\a"

' 1.\o フォルダが存在するかを調査して、なければエラー。
strGetDir = Dir(strBaseDir & strSrcDir, vbDirectory)
If strGetDir = "" Then
MsgBox "コピー元フォルダ:" & strBaseDir & strSrcDir & " が存在しません。"
GoTo ExitProc
End If

' 2.\meibo フォルダが存在するかを調査して、なければ作成する。
strGetDir = Dir(strBaseDir & strDestDir1, vbDirectory)
If strGetDir = "" Then
MkDir strBaseDir & strDestDir1
End If

' 3.\meibo\a フォルダが存在するかを調査して、なければ作成する。
strGetDir = Dir(strBaseDir & strDestDir1 & strDestDir2, vbDirectory)
If strGetDir = "" Then
MkDir strBaseDir & strDestDir1 & strDestDir2
End If

' 4.コピー
strGetDir = Dir(strBaseDir & strSrcDir & "\*." & strFileType)
Do Until strGetDir = ""
copySrcPath = strBaseDir & strSrcDir & "\" & strGetDir
copyDestPath = strBaseDir & strDestDir1 & strDestDir2 & "\" & strGetDir
FileCopy copySrcPath, copyDestPath
strGetDir = Dir()
Loop

ExitProc:

Exit Sub

ErrorProc:

MsgBox Err.Description
Resume ExitProc

End Sub

■そのほか、API SHFileOperation を使った方法

■ファイル名、フォルダ名、パスについて

Dim Source As String
Dim Target As String

Source = "z:\o" 'これは、フォルダパスです。
Target = "z:\meibo\a" 'これは、フォルダパスです。

Shell "Command.com /c " & Source & " " & Target

Source、Targetには、"z:\o\IMGP0270.JPG"などと、ファイルパスを入れる必要があります。

一方、IMGP0270.JPG や IMGP0270 は、ファイル名です。

違いが分かります?

Source = "z:\o" ではなく、
Source = "z:\o\*" になります。

「*」をつけると、"z:\o" にあるすべてのファイルという意味になります。

回答例1、回答例2を分析してみてください。

コピーという同じことをするのに、目的や使用方法によって大分違いますね。

「Visual Basic ファイル コピー」でググると、いろいろ検索できますよ。
    • good
    • 0

FileCopyステートメントは、1つのファイルをコピーするものです。



あるフォルダのファイルを複数または全部コピーするには、ループの中でFileCopyステートメントを実行するようにしましょう。

ですから、フォルダパスには"z:\o\~"や"z:\meibo\a\~"のようにダブルクォテーションでくくって文字列を直接記述するか、String型の変数に入れて記述する必要があります。

紹介したVisual Basic中学校の講座をざっと履修しないと、無理そうですね?

>コピー元ファイル → Zドライブ内のoファイル内のjpgファイルを読み取りたいので ⇒z:\o と記入しました。
>コピー先ファイル ⇒ Zドライブ内のmeiboファイルのaファイル内にコピーしたいので ⇒ z:\meibo\a と記入しました。

「o」や「meibo」はファイルでなく、フォルダですよね。
フォルダとは何なのか、ファイルとは何なのか、パスとは何なのか、いろいろ勉強することがありそうですね。
あせらずに、楽しんで勉強することが一番の近道ですよ。
がんばってください!
    • good
    • 0
この回答へのお礼

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

お勧めして頂いた「Visual Basic 中学校」はとっても役にたちました!

しかし、ループ等まだまだ勉強不足な所がありますので引き続き勉強をしていきたいと思います。

また質問をした時等よろしくお願いします。

お礼日時:2007/07/19 10:29

プログラム作成に苦労して、難しく考えすぎになってませんか。


もちろん基本的にコピーといえども、ソフト(通常この場合はOS関連の機能の一部、ユテリティソフトなど)が読んで、所定のディスクのところへ書き出す、というプログラムが走ります。
またJpgファイルもファイル形式の詳細は私にはわかりませんので、画面表示プログラムを作れといわれるとできません。
しかし本質問の場合は、ファイルの中身がどうであれ、ファイル形式がどうであれ、コピーのファイルを作る場合は、内容に斟酌せずに、読んだ物を別のものにそのまま書くことでよいわけでしょう。この機能はコンピュター発達の初期から、OSソフト群には必ずこれだけの機能で備わっています。
例えばDosの時代からCopy他 コマンドはあります。VBでもcopyfile(
VBscript)ガあります。
こういうものをプログラムの内部から、ファイル名をパラメータとして渡して、実行すればよいわけです。
    • good
    • 0
この回答へのお礼

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

imogasiさんの回答を読んでいて私の知識不足がまともにできてた気がします。

1から勉強する必要があるなと思いながら期限が迫っているので自分に出来るのかとても不安が強くなりましたがしっかり勉強したいと思います。

お礼日時:2007/07/16 19:36

FileCopyステートメントでコピーできます。



FileCopy コピー元ファイルパス, コピー先ファイルパス

Visual Basic 中学校というサイトをお勧めします。

参考URL:http://homepage1.nifty.com/rucio/main/main.htm
    • good
    • 0
この回答へのお礼

返信ありがとうございます。
以下のように記入しました。

Private Sub Command3_Click()

FileCopy z:\o, z:\meibo\a

End Sub

以上のように記入すると
コンパイルエラー:
修正補講:行番号 または 行ラベル または ステーメント または ステーメントの最後

というエラーが出てしまいしました。

コピー元ファイル → Zドライブ内のoファイル内のjpgファイルを読み取りたいので ⇒z:\o と記入しました。
コピー先ファイル ⇒ Zドライブ内のmeiboファイルのaファイル内にコピーしたいので ⇒ z:\meibo\a と記入しました。

記入の仕方が間違っているのでしょうか。

お礼日時:2007/07/16 18:32

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