- 締切済み
ピクチャーボックスやイメージに表示せずに画像を保存する方法を教えて下さい。
開発環境はVB6.0です。 説明べたなので箇条書きで記入しました。 (1)ボタンを押す (2)Dドライブの中にあるJPGファイル(複数)をZドライブにコピー(もしくは移動) コピーでも移動でもどちらでもかまいませんが、なんせ異なったドライブにJPGファイルを写す方法を探しています。 VB上に画像を表示して保存する方法はわかりましたが、 Call SavePicture(Image1, "z:\meibo\a\1.jpg") これでは一気に保存することが出来ないのでとても困っています。 どなたか教えて下さい。よろしくお願いします。
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- makohyu
- ベストアンサー率60% (57/94)
あちらの掲示板ではスルーされてしまったようですね? ■回答例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 ファイル コピー」でググると、いろいろ検索できますよ。
- makohyu
- ベストアンサー率60% (57/94)
FileCopyステートメントは、1つのファイルをコピーするものです。 あるフォルダのファイルを複数または全部コピーするには、ループの中でFileCopyステートメントを実行するようにしましょう。 ですから、フォルダパスには"z:\o\~"や"z:\meibo\a\~"のようにダブルクォテーションでくくって文字列を直接記述するか、String型の変数に入れて記述する必要があります。 紹介したVisual Basic中学校の講座をざっと履修しないと、無理そうですね? >コピー元ファイル → Zドライブ内のoファイル内のjpgファイルを読み取りたいので ⇒z:\o と記入しました。 >コピー先ファイル ⇒ Zドライブ内のmeiboファイルのaファイル内にコピーしたいので ⇒ z:\meibo\a と記入しました。 「o」や「meibo」はファイルでなく、フォルダですよね。 フォルダとは何なのか、ファイルとは何なのか、パスとは何なのか、いろいろ勉強することがありそうですね。 あせらずに、楽しんで勉強することが一番の近道ですよ。 がんばってください!
- imogasi
- ベストアンサー率27% (4737/17069)
プログラム作成に苦労して、難しく考えすぎになってませんか。 もちろん基本的にコピーといえども、ソフト(通常この場合はOS関連の機能の一部、ユテリティソフトなど)が読んで、所定のディスクのところへ書き出す、というプログラムが走ります。 またJpgファイルもファイル形式の詳細は私にはわかりませんので、画面表示プログラムを作れといわれるとできません。 しかし本質問の場合は、ファイルの中身がどうであれ、ファイル形式がどうであれ、コピーのファイルを作る場合は、内容に斟酌せずに、読んだ物を別のものにそのまま書くことでよいわけでしょう。この機能はコンピュター発達の初期から、OSソフト群には必ずこれだけの機能で備わっています。 例えばDosの時代からCopy他 コマンドはあります。VBでもcopyfile( VBscript)ガあります。 こういうものをプログラムの内部から、ファイル名をパラメータとして渡して、実行すればよいわけです。
お礼
返信ありがとうございます。 imogasiさんの回答を読んでいて私の知識不足がまともにできてた気がします。 1から勉強する必要があるなと思いながら期限が迫っているので自分に出来るのかとても不安が強くなりましたがしっかり勉強したいと思います。
- makohyu
- ベストアンサー率60% (57/94)
FileCopyステートメントでコピーできます。 FileCopy コピー元ファイルパス, コピー先ファイルパス Visual Basic 中学校というサイトをお勧めします。
お礼
返信ありがとうございます。 以下のように記入しました。 Private Sub Command3_Click() FileCopy z:\o, z:\meibo\a End Sub 以上のように記入すると コンパイルエラー: 修正補講:行番号 または 行ラベル または ステーメント または ステーメントの最後 というエラーが出てしまいしました。 コピー元ファイル → Zドライブ内のoファイル内のjpgファイルを読み取りたいので ⇒z:\o と記入しました。 コピー先ファイル ⇒ Zドライブ内のmeiboファイルのaファイル内にコピーしたいので ⇒ z:\meibo\a と記入しました。 記入の仕方が間違っているのでしょうか。
お礼
返信ありがとうございます。 お勧めして頂いた「Visual Basic 中学校」はとっても役にたちました! しかし、ループ等まだまだ勉強不足な所がありますので引き続き勉強をしていきたいと思います。 また質問をした時等よろしくお願いします。