VBA/HTML連携でエクセルデータをCSV形式で保存し、WEB上に表示する方法

このQ&Aのポイント
  • VBAを使用してエクセルデータの必要な部分をCSV形式で保存する方法を完了しました。しかし、サーバーフォルダ内のCSVデータを読み込んでWEB上に表示する方法がわかりません。
  • エクセルデータをCSV形式で保存するVBAの作業は終わりましたが、サーバーフォルダ内のCSVデータをWEB上に表示する方法についてわからないことがあります。
  • VBAを使ってエクセルデータをCSV形式で保存する方法はできましたが、サーバーフォルダ内のCSVデータをWEB上で表示する方法がわかりません。
回答を見る
  • ベストアンサー

VBA/HTML連携について困っております

業務の中で、下記のようなスキームのツール作成を取り組んでいます。 エクセルデータの必要な部分を切り出してCSV形式で保存するというVBAまでは 完了したのですが、そこからフォルダ内の全CSVファイルを読み込み(吸い上げ)WEB上に表示するといったことが、どうしてもわかりません(※2番、3番)。 もし詳しい方がいましたら、ご教示お願い致します。 よろしくお願いいたします。 漠然とした質問内容で申し訳ございません。 【作成したい内容】 1.エクセルデータをCSV形式で指定のサーバーフォルダに保存 ←完了 2.サーバーフォルダ内のCSVデータを読み込みWEB上に表示 3.WEBからCSVデータをダウンロード

質問者が選んだベストアンサー

  • ベストアンサー
  • dell_OK
  • ベストアンサー率13% (740/5645)
回答No.3

回答No.1です。 WEB上に表示、とのことでしたが、単純にWEBブラウザで表示できるようにするとの解釈でHTMLファイルを作ればすむと思って回答したのですが、それでよかったでしょうか。 それとも、組織内だけで見えるWEBサーバーを立ち上げておいて閲覧してもらう、あるいは組織外からも見えるWEBサーバーで世界中からも閲覧してもらうようにするのでしょうか。WEBサーバーがあるのでしたらそれようのプログラム言語を使って表示するようなこともできます。 WEBサーバーになると話しが大きくなるのでそこまでではないと思って、サーバーの共有フォルダからHTMLファイルを開いてもらえばWEBブラウザ表示はできると思っていました。 でもそれだとCSVファイルも共有フォルダからコピーしてもらえばすむ話しかなと思ったりしています。 CSVデータはフォルダ内の全CSVファイルを読み込むとのことですが、WEBに表示するのと同じようにひとつのCSVファイルに保存することはできますか。あるいはひとつのエクセルシートにまとめることができますか。 回答No.2さまのような方法でひとつのCSVファイルに保存していただけれると思います。 ひとつにまとまっていれば、HTMLファイルの作成は簡単に作成することができそうです。 先の回答ではHTMLタグをテキスト出力してHTMLファイルを作る提案をしましたが、それよりも、ひとつになったCSVファイルかエクセルファイルを開いて、名前を付けて保存でWebページ(*.htm,*.html)を選ぶとHTMLファイルとして保存できます。 VBAで書くとこんな感じです。 ---- ActiveWorkbook.SaveAs Filename:="保存先フォルダ名\保存ファイル名.htm", FileFormat:=xlHtml ---- ちなみに、CSVの保存も、ひとつのエクセルシートにまとめられていれば、こんな感じでできます。 ---- ActiveWorkbook.SaveAs Filename:="保存先フォルダ名\保存ファイル名.csv", FileFormat:=xlCSV ---- できあがった、HTMLファイルをWEBブラウザで開いていただければ、それなりに見えるものになっているかと思います。 ダウンロード用のリンクについては以下のような手順です。 保存ファイル名.filesというフォルダも作成されているので、その中のsheet001.htmをテキストエディタで開く。 もしかしたらsheet001.htmの名前ではないかも知れませんが、見覚えのあるシート名か何かだと思います。 開いたら<body link="~" vlink="~">こんな行があるので探す。 その下に<a href="../保存ファイル名.csv">ダウンロード</a>を追加する。 とは言ったものの、一回きりの手作業ならこれでいいのですが、ある程度の自動化を考えられているのでしたら、この作業もVBAで作るとか、全然違う方法でやっていくか検討する必要があるのかも知れません。

その他の回答 (2)

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.2

質問には、3つの課題が挙げられている、と解した。 (1)エクセルデータの必要な部分を切り出してCSV形式で保存する    質問者で完成済み,とか。 >必要な部分を切り出して、はどういう風にしたのですか、個人的興味で。 操作者に、セル範囲を選ばせた? (2)そこからフォルダ内の全CSVファイルを読み込み(吸い上げ) 「そこから」とはフォルダ名は決まっていて、そのフォルダ名はプログラムの なかで指定し、その指定フォルダ名の中のファイルを対象とする、でよいのか。 (3)WEB上に表示するといったことが、どうしてもわかりません(※2番、3番 >※2番、3番とはどのことを言っている?質問文は、箇条書きにしてないじゃない? (3)は面倒。 == (2)について、参考になれば、と挙げてみる。ややこしければ後免。スルーされたい。 下記は、数千の多数のエクセルファイルがあり、を念頭に組んだもの。 CSVファイル向けに修正してください。 下記は、個人的に、昨日たまたま、やってみた例があるので下記に挙げる。 参考になればよいが。 FSO利用法の例です。For Each Next利用法です。他にDir関数を使う方法が別にあり。 下記はエクセルファイルのシート名を書き出すコードです。 本件では、拡張子を、CSVにして、関連の場所を修正すれば、参考になるかも。 コメント行は、理解後は、不要分は削除してください。 ===== Sub test01() 'シート名リストVBA.xlsm  <====小生が昨日別課題で作ったVBAコード例の名 n = 1 shnm = "" '-------- Set objFSO = CreateObject("Scripting.FileSystemObject") '--- Const ForReading = 1, ForWriting = 2, ForAppending = 8 Set tso = objFSO.OpenTextFile("シート名1.csv", ForWriting, True) 'アウトプットファイル。CSVファイルです。 '---- objStartFolder = "C:\Users\XXX\Documents" '最後\不要 Set objFolder = objFSO.GetFolder(objStartFolder) '---フォルダー内のファイル1つ1つを見に行って For Each objfile In objFolder.Files ' MsgBox objfile strExt = objFSO.GetExtensionName(objfile) '拡張子を調べる 'MsgBox strExt If strExt = "xlsx" Or strExt = "xlsm" Then '拡張子がxlsx、xlsmのファイルに付いて '<===CSVに変える 'MsgBox "Excell " & strExt 'If n > 5 Then GoTo p1 ' MsgBox objfile.Name 'Wscript.Echo objFile.Name '--- 'ファイルを開く ' filepath = objfile ' MsgBox filepath ' CreateObject("Shell.Application").ShellExecute filepath ' MsgBox "AA" '---ファイルを開く Set bk = Workbooks.Open(Filename:=objfile, ReadOnly:=True) <===CSVファイルの中身を見るなら、そのテキストファイルのOpenに変える Application.ScreenUpdating = False ActiveWindow.Visible = False '---ファイル名書き出し shnm = "" shnm = shnm & objfile.Name & "," '---シート名の探索 ’For Each sh In Worksheets '---シート名データを追加、書き出し ’ shnm = shnm & sh.Name & "," ’Next '----- 'shnm = shnm & vbCrLf tso.WriteLine (shnm)    ==テキストファイル名の書き出しだけになっている '----開いていたブックを保存せずに閉じる 省時間のため。 ’Workbooks(bk.Name).Close SaveChanges:=False <===テキストファイルを開いた場合は、Closeに変える End If p1: n = n + 1 ’ If n = 20 Then Exit For ’途中で止められるように。テスト時用。 Next '---- tso.Close MsgBox "処理終了" End Sub

  • dell_OK
  • ベストアンサー率13% (740/5645)
回答No.1

2のWEBに表示と言うのは、サーバーフォルダ内にHTMLファイルを作成しておき、クライアントからはそのHTMLファイルをブラウザで見る、と言うことでしょうか。 それでしたら、保存したCSVはダウンロード用ファイルにするとして、CSVの保存と同時かその処理の後で表示用のHTMLファイルも作成されたらいいと思います。 <table>タグで表示用のHTMLファイルを作り、加えて、その前か後にダウンロード用の<a>タグでリンクをつければできそうです。 3はそのリンクをクリックすればダウンロードできるようになります。

関連するQ&A

  • エクセル:VBAで自動的にCSV形式で保存について

    複数のシートからなるエクセルブックから、決まった一つのシートを CSV形式で保存するマクロを作成しております。 その際、CSV化するシートは他のシートの値を参照し、数値が""、 もしくは"0"の場合は、表示しないとする数式が1000行まであります。 これは、CSVで保存した際に、無用なデータを含めないようにと 考えたものですが、下記VBAを作りCSV化し保存したファイルは、確かに 数値がある行のみ表示しているものの、データ量が重くなってしまいます。 Application.DisplayAlerts = False Application.Dialogs(xlDialogSaveAs).Show arg1:=MyFile, arg2:=6 この作成されたCSVをあらためて、「名前を付けて保存」でCSVで保存し、 「~には、CSV(カンマ区切り)と互換性のない機能が含まれている可能性 があります。この形式で保存しますか?・・・」の所で、「はい」を選択 すると、データ量が大変少ない量で保存できます。 おそらく、マクロで作成したCSVは、その「互換性のない機能」が含まれて いるのであろうと思いますが、必要としているのは値のデータのみです。 この「互換性のない機能」を省いてCSVで保存する方法をどなたか教えて いただけないでしょうか? 分かりにくい文章で申し訳ありませんが宜しくお願い致します。

  • 初めまして。お世話になります。

    初めまして。お世話になります。 エクセル2007でCSVデータを作成しているのですが、 1:2:3と入力すると自動的に1:02:03となってしまいます。 セルの書式設定を文字列に変更すると、一時的には1:2:3と表示されますが、 CSV形式で保存すると、やはり1:02:03に変更されてしまいます。 (恐らく時間表示として修正されているのだと思います) 1:2:3という表示形式を保ったままCSVデータを作成する方法を教えて頂けませんでしょうか。 宜しくお願いいたします。

  • HTML⇒エクセルにするには

    表現の仕方や質問内容に不備があったらすみません。 HTML形式で保存されているデータの変更が出来ませんでした。もう一度エクセルスタイルに戻してデータの変更をしたいと思いますが、どのようにしたらよろしいでしょうか? WIN2000で作成・保存したデータをWIN98でみています。 よろしくお願いいたします。

  • CSVが保存ダイアログでHTMLになる

    フォームの内容をCSVファイルに蓄積保存しています。 閲覧者はFTP情報をもっていないので、このCSVに対して単純にリンクを張ったHTMLを作成し、そこから右クリックでダウンロードをしていただいてます。 ところが、ローカル環境によると思うのですが、人によって挙動が違うのです。 1.リンクを左クリックすると一つなぎのテキストとしてブラウザで表示されるが、右クリックで保存するとCSVで保存できる 2.リンクを左クリックするだけでCSVでダウンロードされエクセルで開く 3.1に近いが、右クリックで保存しようとすると、CSVではなくHTMファイルとして保存しようとする 1や2は、落とせばエクセルでみれるので現状はそのままでいいと思っています。 しかし、3に関しては、利用者が「拡張子」という物を理解していただけないので、「*.htm」を「*.csv」に変更したら見れると言っても納得しくもらえません。 いろいろ調べてみて、フォルダオプションとかに行きつきましたが、1や2の挙動の人と3の挙動の人に違いは見られませんでした。 とりあえず、保存ダイアログで「*.csv」の拡張子のままで保存したいのですが、何を確認して、何を修正すればいいのか行き詰っています。 どなたか、些細な事でもいいですので教えてください。 なお、3の状況になる人の環境は  WindowsXP(SP3)  Internet Explorer8 です。 オフィスは入っていますので、フォルダオプションでCSVを確認すると、エクセルに関連付けられていました。 よろしくおねがいします。

  • csvをVBAを使ってエクセル形式で保存したい

    タイトルのとおりなのですが、csvをVBAを使ってエクセル形式で保存したいのですが、その際ひとつ条件がありまして作成するエクセルファイルをcsvと同じ名前にしたいと思っています。  csvのファイル名は都度変わってしまうため私の現在の知識ではVBAを作成することができません。  教えて下さい。よろしくお願いします。

  • Open OffceカルクとMSエクセルの互換性がよくわからなくて困っています。

    カルクで作成したデータをOpenドキュメント形式で保存した場合は、Exclで開くと文字化けしました。 そこで、 カルクで作成したデータを保存する際、csv(テキスト)形式で保存するとExcelでも読まれるようです。(保存の際、注意のメッセージが出ますが) ・カルクで作成したデータの保存のときcsvテキスト形式にしてもExcel で読まれないケースというのはありますか? ・カルクで作成したデータに挿入した画像jpgなどが含まれる場合は、 そのデータ自体の拡張子は何形式で保存したらいいですか また現在は通常 Excelで作成したデータ → カルクで読まれる カルクで作成したデータ → 保存の仕方次第で Excelで読まれる と解釈していますが、いかがでしょうか。 よろしくお願いします。

  • excelでCSV形式

    Excelで作成した表にCSV形式で保存したファイルを読み込んでExcelの表を完成させたいです。 CSV形式のファイルが3万件ぐらいのデータなので、コピーして貼り付けることが難しい状態です。 よろしくお願いします。

  • エクセルからアクセスへデータを移行

    お世話になります。 よく見かけるアンケート作成アプリなんですが、通常はWeb上で作成して保存しますよね。それを、「エクセルのシートで作成してサーバーに送り、サーバーで動いているアクセスデータに保存するようにしたい」とのことなんですが、(しかも、IDでログインしてIDごとに作成、編集) どう考えても、Web上でエクセルをアップロード→データを読み込む→HTML表示→表示したものをアクセスに保存 の処理しかないですよね? 他に何か方法があるようでしたら、アドバイスお願いします。

  • excelの表を比較的簡単にHTMLに反映させる

    社内の簡易な掲示板のようなものを、HTMLで作成しています。 別に、座席表のようなものをエクセルで作成しています。定期的にこれが変更になります。 理想的には、Htmlとエクセルをローカルにおいて、掲示板のhtmlからエクセルを読みに行き、それをhtml上で表として表示させるのがよいです。 ただ、それはできないようなので、何か多少ステップを踏んでもできる方法はないかなと考えています。 例:エクセル表から、Google spreadsheetに表として貼り付け、そこへ読みに行く(これが簡単かな) エクセルから、CSV出力して同フォルダに保存して置き、何らかの形でCSVを読みに行く方法があれば、それを実行する。

  • CSV形式にすると出てくる空白を消したいです。

    エクセル形式で、表を作ってCSV形式で保存するのですが、 CSV形式で保存したデータをメモ帳(テキスト形式)で開くと、 エクセル・CSV形式の時には表示されていなかった空白(半角スペース)が出来てしまっています。。。 業務上必要なデータで、項目には半角英数13ケタの数字しか入力してはいけないのですが、 その空白が出来てしまってしまうので、エラー扱いにされてしまいます。 どのようにすればテキスト形式で表示したときにこの空白が生れないように出来るのでしょうか? 宜しくお願い致します。

専門家に質問してみよう