「みんな教えて! 選手権!!」開催のお知らせ

今、「ieを使わずに」という観点で勉強しています。
色々試して、上手く機能するようであれば、切り替えようかなと思っています。

大きく現行の説明ですが、
1.あるサイトから基になるデータを取り込み、
2.そこに個人的なデータを加味して目的物を作成します。
3.そしてそれを個人的なサーバ(プロバイダからのレンタル)にアップし、、
4.関係者で参照する。

この構想の引き金は(未だ大丈夫らしいのですが)ieがなくなる、
というものです。

現在、1.データの取り込みがなんとか出来たので、
2.目的物の作成まで完了しています。
ということで、これから3.サーバーにアップの開発になります。
サーバーにアップできれば、4.その後の参照は1.と同じなので出来るかなと。
(厳密には4.でアップするのは「html」ではなく、データです。)

前段が長くなりましたが、
3.に関して、ieを使わず解決できるexcelvbaでの手法を知りたいのです。
(現在のステップは最後に貼っておきます)

条件の一つに、excel2003しか使えない、いうのがつきます。
危ない等は重々承知です。
宜しくお願いします。


*************** 現在のステップです
<アップ側>
lngInet = InternetOpenS(vbNullString, INTERNET_OPEN_TYPE_PRECONFIG, _
vbNullString, vbNullString, 0&)
If lngInet <> 0 Then
'MsgBox "opennd"
lngFTP = InternetConnectS(lngInet, Server, _
INTERNET_DEFAULT_FTP_PORT, _
UserName, Password, _
INTERNET_SERVICE_FTP, INTERNET_FLAG_PASSIVE, 0&)
If lngFTP <> 0 Then
'MsgBox "conected"
FtpSetCurrentDirectoryS lngFTP, strDir
abytFrom = StrConv((strFrom & vbNullChar), vbFromUnicode)
abytTo = StrConv((strTo & vbNullChar), vbFromUnicode)
lngRet = FtpPutFileB(lngFTP, abytFrom(0), abytTo(0), _
FTP_TRANSFER_TYPE_ASCII, 0&)
If lngRet <> 0 Then
'MsgBox "ファイルのアップロードに成功しました!", vbOKOnly + vbInformation
End If
End If
InternetCloseHandle lngInet
End If

<参照側>
Set objIE = CreateObject("InternetExplorer.Application")
objIE.navigate "http://abc.jp" & trgtname & ".log"
Call IEWait(objIE)
'Range("E10").Value = objIE.document.body.innerHTML

質問者からの補足コメント

  • コレだと思います。宜しくお願いします。
    文字数がオーバーするとのことなので、分けさせていただきます。
    Option Explicit
    Declare Function GetAsyncKeyState Lib "user32" (ByVal nVirtKey As Long) As Long
    Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)

    No.5の回答に寄せられた補足コメントです。 補足日時:2024/11/21 19:47
  • Private Declare Function InternetOpenS _
    Lib "WinInet.DLL" Alias "InternetOpenA" _
    (ByVal lpszAgent As String, ByVal dwAccessType As Long, _
    ByVal lpszProxyName As String, ByVal lpszProxyBypass As String, _
    ByVal dwFlags As Long) As Long

      補足日時:2024/11/21 19:50
  • Private Declare Function InternetConnectS Lib _
    "WinInet.DLL" Alias "InternetConnectA" _
    (ByVal hInternetSession As Long, ByVal lpszServerName As String, _
    ByVal nServerPort As Integer, ByVal lpszUsername As String, _
    ByVal lpszPassword As String, ByVal dwService As Long, _
    ByVal dwFlags As Long, ByVal dwContext As Long) As Longg

      補足日時:2024/11/21 19:52
  • Public Declare Function FtpSetCurrentDirectoryS _
    Lib "WinInet.DLL" Alias "FtpSetCurrentDirectoryA" _
    (ByVal hFtpSession As Long, ByVal lpszDirectory As String) As Long

      補足日時:2024/11/21 19:54
  • Private Declare Function FtpPutFileB _
    Lib "WinInet.DLL" Alias "FtpPutFileA" _
    (ByVal hFtpSession As Long, ByRef lpszLocalFile As Byte, _
    ByRef lpszNewRemoteFile As Byte, ByVal dwFlags As Long, _
    ByVal dwContext As Long) As Long

      補足日時:2024/11/21 19:55
  • Public Declare Function FtpGetFileS _
    Lib "WinInet.DLL" Alias "FtpGetFileA" _
    (ByVal hFtpSession As Long, ByVal lpszRemoteFile As String, _
    ByVal lpszNewFile As String, ByVal fFailIfExists As Long, _
    ByVal dwFlagsAndAttributes As Long, ByVal dwFlags As Long, _
    ByVal dwContext As Long) As Long

      補足日時:2024/11/21 19:56
  • Private Declare Function InternetCloseHandle _
    Lib "WinInet.DLL" _
    (ByVal hInet As Long) As Long

      補足日時:2024/11/21 19:57
  • Private Const INTERNET_OPEN_TYPE_PRECONFIG = 0
    Private Const INTERNET_DEFAULT_FTP_PORT = 21
    Private Const INTERNET_SERVICE_FTP = 1&
    Private Const INTERNET_FLAG_PASSIVE = &H8000000
    Private Const FTP_TRANSFER_TYPE_ASCII = &H1
    Private Const FTP_TRANSFER_TYPE_BINARY = &H2
    Private Const FILE_ATTRIBUTE_NORMAL = &H80

      補足日時:2024/11/21 19:58
  • 以上、宜しくお願いします。

      補足日時:2024/11/21 19:59

A 回答 (5件)

こんにちは



>3.に関して、ieを使わず解決できるexcelvbaでの手法を知りたいのです

><アップ側>
にご提示のコードには、APIの参照宣言等がまるっきり抜け落ちているし、変数等の宣言(=設定)も無いように思われますが・・??
ですので、ハッキリとはしませんけれど、ご提示の範囲に関する限りではIEとは無関係です。
現状でも機能しているようですので、宣言対象のDLL等がちゃんと存在すれば動作するでしょう。
(省略している部分に、IE依存の内容がある場合は別です)

><参照側>
のコードはもろにIE依存ですけれど、こちらはご質問には関係ないものと解釈しました。
この回答への補足あり
    • good
    • 0
この回答へのお礼

早速ありがとうございました。
>APIの参照宣言等がまるっきり抜け落ちているし
わからないので、ここかなという部分を上げました。
別途、補足で挙げさせていただきます。
それを見ていただき、ieに依存していないのであれば、
言われるように現状機能しているのでこのままで良さそうですネ。
恐縮ですが、それを見て可否を頂けるとありがたいです。
参照側はなんとかなりそうと思っています。
(全く自信はありませんが)
宜しくお願いします。

お礼日時:2024/11/21 19:42

IE無しでのFTPアップロードなら、WinINet APIを使用してFTPファイルのアップロードが可能です。



Webページの取得も、MSXML2.XMLHTTPを使ってHTTPリクエストを送り、WebページのHTMLを取得。HTMLレスポンスを取得し、Excelセルに表示しましょう。
    • good
    • 0
この回答へのお礼

excel2003を前提にしています。

お礼日時:2024/11/21 19:33

Microsoftの情報によるとEdgeでのIEモード利用自体は2029年まで残るように見えますのであせらずじっくりやっていきまし

ょう
    • good
    • 0
この回答へのお礼

そうなんです。
そして、ieモードもなんとか未だ使えそうなのですが、
いい機会なので、やってみようかなと思っています。

お礼日時:2024/11/21 19:32

「参照側」のコードについて、


これはIEだから実施できた制御ですね。IE以外のブラウザでは似たことは実施できません。
サーバにアップしたログファイルをブラウザで参照する制御を既存の方法以外で全く新しく設計する必要があると思います
    • good
    • 0
この回答へのお礼

なかなか難しいですが、
勉強しながらやっています。

お礼日時:2024/11/21 19:31

「アップ側」のコードについて、FTPでファイルをアップロードしているんですね


ExcelVBAで似たことを実施するのであれば下記サイトをご参照ください

https://excel-vba.work/2021/11/22/vbaftp%E3%81%A …
    • good
    • 0
この回答へのお礼

早速ありがとうございました。
ある人から引き継いだexcelです。
今回勉強して使いこなそうとしてうぃます。

お礼日時:2024/11/21 19:29

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

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


おすすめ情報

このQ&Aを見た人がよく見るQ&A