プロが教えるわが家の防犯対策術!

エクセルのファイルを自動でFTPサーバー内にアップロードって出来るのでしょうか?

VBA初心者です。
PCが起動している間開きっぱなしのエクセルファイルを
例えば1時間おきにサーバーの特定のフォルダにUPする事は可能なのでしょうか?

FFFTPというソフトを使用しております。
OSはWindows 2000 EXCELは2003です。

漠然な質問になってしまい申し訳ございません。
どなたかご教授下さい。

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

A 回答 (1件)

こんばんは



VBAプロシージャを定時実行するには、
Application.OnTime ActionTime
を使います。以下のサンプルは"Autosave"というプロシージャを5分ごと(毎時 5分,10分,15分,20分,…)に実行します。

Private Sub Workbook_Open()
Dim lngI As Byte
 Dim lngJ As Byte
 Dim ActionTime As String
 
 For lngI = 0 To 23
  For lngJ = 0 To 59 Step 5
  ActionTime = Format(lngI, "0#") & ":" & Format(lngJ, "0#")
  Application.OnTime ActionTime, "Autosave", TimeValue(ActionTime) + TimeValue("00:04:00")
  Next lngJ
 Next lngI
 
End Sub


VBAからFTPを操作するにはBASP21を用いれば出来るようです。
http://www.hi-ho.ne.jp/babaq/
…このソフトをEXCEL VBAからのメール送信に使ったことはあるのですが、
 FTP機能は使ったことがないので、これ以上詳しい説明は出来ません。
    • good
    • 0
この回答へのお礼

お礼が遅れてしまって申し訳ございませんでした。

色々やって問題点が分かったら質問しようと思ったのですが
全く分からず、問題点だらけなのでもう少し勉強してやってみたいと思います。

ありがとうございました。

お礼日時:2010/11/05 16:51

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

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

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

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

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

Qexcelから直接FTPフォルダを開きファイル選択したい

FTP上の二つのファイルを結合して、データを作るエクセルを作ろうとしています。

誰でも触れるようにしろと上司に言われているので、
1.FTPソフトの自動実行(ダウンロードするファイルは手動選択)
2.CSVファイルを取込んだあと、結合の自動化
まではできるようにしました。

ただFTPソフト(FFFTP)でファイルを選択せず、直接ExcelからFTPのファイルを読みにいけるようにしたいと思ってます。
(ファイル名は毎回変わります。)
またFTPはユーザ名とパスワード入力が必須になってます。

ExcelからFTP上のフォルダにアクセスし、ファイルを選択して読みにいけるようにする方法はあるでしょうか?
Excelのバージョンは2000です。

Aベストアンサー

丁度同じようなことを調べたことがありますが、解決したので参考URLを捨ててしまいました。(すみません)
『VBA FTP』で検索すると、かなりの数がヒットしますので見つかると思います。
基本的に送受信可能です。

参考までにとっかかりになりそうなURLを・・・
<VBAのみで送受信>
  http://mitsu.fam.cx/~mitsu/blog/2006/11/vbaftp.html
  http://www.happy2-island.com/access/gogo03/capter90100.shtml
<BASP21を利用する方法>
  http://officetanaka.net/excel/vba/tips/tips47.htm

QFTPでエクセルをPUTするとファイルが破損する

このサイトを参考にvbaでFTPでファイル転送を実装しようとしています。
http://www.happy2-island.com/access/gogo03/capter90302.shtml


FtpPutFile Lib "wininet.dll"


上記のFTPプットの部分で問題がありそうです。

ローカルからLAN経由で接続されたFTPサーバーを使い
ファイルサーバーへエクセルファイルをアップロードしたいのですが
ファイルが破損して開けなくなってしまいます。

バイナリ転送、アスキー転送と転送モードを変えて試しても
NGでした。

xmlファイルなどテキストであれば問題なくアップロードできました。


エクセルファイルはFTP転送できないのでしょうか?
なにかよい方法があれば教えてください。

宜しくお願い致します。

Aベストアンサー

バイナリ転送で出来るはずです。
Option Explicit は記述してますか?

QSub ***( ) と Private Sub ***( ) の違い

初歩的な質問で申し訳ありませんが・・・

自分でコードを書いていても、イベントが発生したりした時の処理で、コードのウィンドウで上のドロップダウンリストで選択できる時の処理などは自動的に[Private Sub Command1_Click( )]などと出てくるのでそのまま使っています。自分で別途プロシージャーを作成する時は[Sub ****( )]としています。
ですがその違いを理解しないまま、自分で作成する時は[Private Sub]ではなくて[Sub]を使っています。

Sub ***( ) と Private Sub ***( ) の違いは何なんでしょうか?
どなたか説明頂けませんか?
よろしくお願いします。

Aベストアンサー

「Sub」の部分にカーソルを置いて[F1]を押せばヘルプが起動します。
「指定項目」のところに「Public」と「Private」の説明がありますよ。
省略して「Sub hogehoge()」とした場合は「Public」とみなされます。

Publicは「すべてのモジュールから呼び出せるプロシージャ」ということになります。
Privateとすると「同じモジュールの中からしか呼び出せないプロシージャ」となります。

もしExcelをお持ちでしたらExcelのVBEで標準モジュールを追加し、「Sub Test1()」と「Private Sub Test2()」を作成してみてください。
そしてExcelの[ツール]-[マクロ]-[マクロ(Alt+F8)]でマクロ実行のダイアログを表示させてみるとわかります。
ここには実行できるプロシージャの一覧が表示されますが、Test1は表示されているけれどTest2は表示されません。
Test1はPublicで、Test2はPrivateだからです。

QAccessでのレコード存在チェック

下記のような仕様のAccessで機能追加したく
どうしてもうまくいかないので方法を教えてください。

フォーム:申込書(データソースは申込テーブル)

テーブル:申込テーブル
----------
申込番号
申込氏名
申込日
----------

フォームの申込書からはフリーテキストで
ユーザが申込書番号を入力しますが、
すでに申込テーブルに存在している場合は
エラーメッセージを表示させたいと思っています。

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

Aベストアンサー

フォームの申込番号のプロパティを開き更新前処理のイベントに下記をコピーしてください。
(フォームの申込番号のコントロール名が申込番号で良ければそのまま違う場合は変更してください。)

Dim Rs As ADODB.Recordset
Dim strSQL As String

Set Rs = New ADODB.Recordset
strSQL = ""
strSQL = strSQL & " Select * From 申込テーブル "
strSQL = strSQL & " Where 申込番号 = 申込番号"

Rs.Open strSQL, CurrentProject.Connection

If Not Rs.EOF Then
MsgBox "重複しています", vbCritical, "登録エラー"
Cancel = True '更新をキャンセル
Me!申込番号.Undo '入力を元に戻します

End If
Rs.Close: Set Rs = Nothing

これで出来るはずです。

フォームの申込番号のプロパティを開き更新前処理のイベントに下記をコピーしてください。
(フォームの申込番号のコントロール名が申込番号で良ければそのまま違う場合は変更してください。)

Dim Rs As ADODB.Recordset
Dim strSQL As String

Set Rs = New ADODB.Recordset
strSQL = ""
strSQL = strSQL & " Select * From 申込テーブル "
strSQL = strSQL & " Where 申込番号 = 申込番号"

Rs.Open strSQL, CurrentProject.Connection

If Not Rs.EOF Then
MsgBox "重複しています", vbCriti...続きを読む

QVBAでFTPファイル転送がうまくいかない

利用環境
 access:2003
 os:xp

このサイトを参考にvbaでFTPでファイル転送を実装しようとしています。
http://www.happy2-island.com/access/gogo03/capter90302.shtml


困っているのは、、エラーがでないのですが、ファイルが転送されないということです。
接続先やUserID,パスワードを間違えた場合は、ちゃんとエラーが表示されますので
接続まではできているのではないかと思いますが、最後のFTPファイル転送がうまくいきません。。

インターネットサービスのオープンとFTPサーバへの接続はうまくいっているようですが
fcFTPPutFileの結果が何度やってもFALSEになります。

どのあたりを探れば問題がわかりますでしょうか?
ご教示いただけますと助かります。



'■外部サーバーへファイルをアップロード

Dim lngRC As Long

'インターネットサービスをオープンします
lngRC = fcInternetOpen

'オープンに成功したらFTPサーバとの接続を行います
If lngRC = 0 Then


'FTPサーバへ接続します
lngRC = fcFTPConnect()



'接続に成功したら、FTPサーバからファイルをアップロードします
If lngRC = 0 Then

Debug.Print Err.LastDllError


'●↓この結果がFALSEになってしまい、ファイル転送ができません。。。
Call fcFTPPutFile(送り元ファイルパス&ファイル名_
, 送り先ファイルパス&ファイル名 _
, FTP_TRANSFER_TYPE_ASCII)


Else
MsgBox エラー内容
End If

Else
MsgBox エラー内容
End If



●↓この結果がFALSEになってしまい、ファイル転送ができません。。。
Public Function fcFTPPutFile(dLc As String, dRmt As String, dMd As Long) As Boolean

'dLc /ローカルファイル
'dRmt/リモートファイル
'dMd /転送モード

'FTPサーバへファイルをアップロード
fcFTPPutFile = FtpPutFile(Pub_lngFtpHnd _
, dLc _
, dRmt _
, dMd _
, 0)

End Function

利用環境
 access:2003
 os:xp

このサイトを参考にvbaでFTPでファイル転送を実装しようとしています。
http://www.happy2-island.com/access/gogo03/capter90302.shtml


困っているのは、、エラーがでないのですが、ファイルが転送されないということです。
接続先やUserID,パスワードを間違えた場合は、ちゃんとエラーが表示されますので
接続まではできているのではないかと思いますが、最後のFTPファイル転送がうまくいきません。。

インターネットサービスのオープンとFTPサーバへの接続はうまくいってい...続きを読む

Aベストアンサー

内容はまだ見てませんが・・・・。

当然のことながら、
FTPソフトでファイル転送ができることが前提。

原因を絞り込む。
「FTP」がおかしいのか、
「VBP」がおかしいのか、
判別しなければ進まない。

ファイル転送ですから、ファイルの権限とかは確認。


人気Q&Aランキング