質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
COM

COM(Component Object Model)はMicrosoftによるコンポーネントテクノロジーであり、 ソフトウェアの再利用を目的とした技術を指します。

VB

VB(ビジュアルベーシック)はマイクロソフトによってつくられたオブジェクト指向プログラミング言語のひとつで、同社のQuickBASICが拡張されたものです。VB6の進化版といわれています。

.NET Framework

.NET Framework は、Microsoft Windowsのオペレーティングシステムのために開発されたソフトウェア開発環境/実行環境です。多くのプログラミング言語をサポートしています。

Q&A

解決済

2回答

1855閲覧

Excel com 操作 日付

ranran

総合スコア85

COM

COM(Component Object Model)はMicrosoftによるコンポーネントテクノロジーであり、 ソフトウェアの再利用を目的とした技術を指します。

VB

VB(ビジュアルベーシック)はマイクロソフトによってつくられたオブジェクト指向プログラミング言語のひとつで、同社のQuickBASICが拡張されたものです。VB6の進化版といわれています。

.NET Framework

.NET Framework は、Microsoft Windowsのオペレーティングシステムのために開発されたソフトウェア開発環境/実行環境です。多くのプログラミング言語をサポートしています。

0グッド

0クリップ

投稿2015/02/25 03:28

お世話になります。

Excelより日付を取得したいのですがうまくできません。
どなたかご教授お願いいたします。

例:
Excelデータ [28:00]

コード上 [4:00]

System.DateTime.FromOADate(d).ToString("HH:mm")
を用いて取得しているのですが[28:00]と取得できません。

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

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

セルの右上(A1)に28:00と入力していると仮定して、以下のような感じですか?

MsgBox (Format(Cells(1, 1), "hh:mm"))

投稿2015/02/25 04:14

Guu

総合スコア142

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ranran

2015/02/25 04:44

説明が不足していました。 [h]:mm (24時以降も25,26と続く) の日付データをそのままプログラム上で使用する方法です。 文字データでしたら問題なくできると思うのですが、日付をどうにか取り込む手段はないでしょうか。
Guu

2015/02/25 05:12

ちょっと意味が良く判らないので、 日付といっているのは時間情報の事だけですか? Date型データーとして加減算ができるようにしたいということでしょうか? それとも文字通り日付(*月*日)という情報も含めててしょうか? 28時の場合、1日と4時間のように。
ranran

2015/02/25 05:26

時刻の扱いに不慣れなため、わかりにくくなってしまい申し訳ありません。 1, Excel内に入力されている、【"28:00"([h]:mm)】のセルを、 comを介し取得します。 2, 取得値は【1.16666666666667】となっています。 3, System.DateTime.FromOADate(1.16666666666667).ToString("HH:mm") を用い文字にします。 →【04:00】になります。 これをどうにか【28:00】としてvb側で扱えるでしょうか? > 28時の場合、1日と4時間のように。 このように取得できるのものでしょうか? 何度も申し訳ないですが、よろしくお願いしいます。
Guu

2015/02/25 05:53

なるほど、何故comを介して変数に入れるのかは判りませんが、何か理由があるのでしょう。 で、VB側というかシステム側では時間はある時点からの経過時間としてナノ秒単位で持っています。なので表現している部分がhh:mmでも実際は年月日の情報まで持っていることになります。 28時というのは1日と4時と内部的には同じ扱いで表現部分の違いになります。 ですのでVB側ではそのまま通常のDate型として扱い、外に表示する部分だけ28時や29時と変換して表現することが正しいのかと思います。
ranran

2015/02/25 08:29

内部的には年月日の情報を保持いるとは驚きです。 0:00~23:59 と 24:00~ は日付が異なるので、日付を基準に25:00~を表現することができました! > なるほど、何故comを介して変数に入れるのかは判りませんが、何か理由があるのでしょう。 取り込むと言ったらcomしか思い浮かばないのですが、 もっと簡単にEXCELのデータを取り込む手段はあるのでしょうか?
guest

0

[28:00]と取得したいのであれば、FromOADateメソッドを使わずに、素の文字列で取得したほうがいいと思います。
その後でプログラム上で時間計算をするのが適切かと思います。

DateTime全体に言えることかもしれませんが、FromOADateメソッドを使ってしまうと
28時 => 24時 + 4時間 = 4時
というふうに変換されてしまいます。

投稿2015/02/25 03:49

manzyun

総合スコア2244

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ranran

2015/02/25 04:50

FromOADateメソッドしか取得の手段を知らないですが、 他にも何かありますでしょうか。。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問