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

VSを利用してVBでエクセル出力データを作成しています。
エクセル出力される文字を太字にしたいのですが、どのような処理?になりますか?

今は
S = 2
T = 3
Str = "A" + S.ToString() + ":AO" + T.ToString()
sheet.Range(Str).Merge()
sheet.Cells(Str).Value = "タイトル"
sheet.Range(Str).Style.Font.FontSize = 16
sheet.Range(Str).Style.Alignment.Horizontal = XLAlignmentHorizontalValues.Center
sheet.Range(Str).Style.Alignment.Vertical = XLAlignmentVerticalValues.Center

と入れていて、「タイトル」部分を太文字でエクセルに表示されるようにしたいです。

VB初心者(むしろパソコン初心者)なのでもし質問自体がおかしかったらすみません・・


それと追加で作成日を入れるところに
S = 1
T = 1
Str = "AF" + S.ToString() + ":AO" + T.ToString()
sheet.Range(Str).Merge()
sheet.Cells(Str).Value = Now.ToString("yyyy年MM月dd日")
sheet.Range(Str).Style.Font.FontSize = 10
sheet.Range(Str).Style.Alignment.Horizontal = XLAlignmentHorizontalValues.Center
sheet.Range(Str).Style.Alignment.Vertical = XLAlignmentVerticalValues.Center
としているのですが、なぜかエクセル上では2020/5/20という表示になってしまいます;
「2020年5月20日」という風に出てほしいのですが・・・;

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

  • 日付のところは、マクロの自動記録というので、

    Sub Macro1()
    '
    ' Macro1 Macro
    '

    '
    ActiveCell.FormulaR1C1 = "=TODAY()"
    Range("A1").Select
    Selection.NumberFormatLocal = "[$-F800]dddd, mmmm dd, yyyy"
    End Sub

    となったので、すがそのまま貼り付けてもエラーになってしまいます・・

    sheet.Cells(Str).Value = Now.ToString("yyyy年MM月dd日")
    ここを何かに変更するのかな?と思うのですがVBAをVBに変換?する?ことって出来るのでしょうか??

      補足日時:2020/05/22 13:56

A 回答 (7件)

VBレスキュー(花ちゃん)


http://hanatyan.sakura.ne.jp/
1.Excel の起動及び終了方法
2.Excelのプロセスが正常に終了しない理由
http://hanatyan.sakura.ne.jp/vb2005/vb2013excel0 …

は一読されてた方が宜しいかも。
どれ程VBAとの違い(手間)があるのかわかると思いますよ。(最新版のVBなら勝手にやってくれるのかは私は定かではないですが、過去の経験として)
    • good
    • 0

ちなみにこんな書き方も。



S = 2
T = 3
Str = String.Format("A{0}:AO{1}", S, T)

でもWordでExcelを操作する事が出来る位のスキルは必要かもですよ。
VBからだとそれ以上に手間が必要になります。(最新版は楽になったのかは使い切れていないので不明ですが、過去にやってた時はやり始めは大変でした。)
    • good
    • 0

>Now.ToString("yyyy年MM月dd日")



これが目的の表示なのでしょ?
取り敢えず検証用にこちらで勝手に作成したものですので部分的に参考になれば幸いです。
一応Excelの参照設定をした上での事ですけど。

Imports Excel = Microsoft.Office.Interop.Excel

Public Class Form1

Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
Dim xlapp As New Excel.Application
Dim xlwb As Excel.Workbook
Dim xlws As Excel.Worksheet
Dim xlrng As Excel.Range

xlapp.Visible = True

xlwb = xlapp.Workbooks.Add()
xlws = xlwb.Worksheets(1)
xlrng = xlws.Range("A1")

xlrng.Value = Date.Today
xlrng.NumberFormatLocal = "yyyy年MM月dd日"


End Sub

かなり手抜きですので何ですが、Rangeもキチンと宣言しないとVBAみたいに楽は出来ないかと。(解放する際に解放されずタスクマネージャーに残る危険も)

ところで

>Cells(Str)

って何?
ここはRange(Str)ではないかな?
    • good
    • 0

No3です



>NumberFormatLocalはIXLCellsのメンバーではありませんのエラーメッセージです。
確認できる環境が無いので、申し訳ありませんでした。

では、NumberFormat プロパティの方ではいかがでしょうか?
    • good
    • 0

No2です



>すがそのまま貼り付けてもエラーになってしまいます・・
VBで記述なさっているのですから、言語の構成くらいはご存知でしょう。
オブジェクトを正しく指定しなければ動作するはずはありません。
(若干異なるだけで、言語の仕組みは同じはずです)

セルの書式を設定するのですから、セルの文字太さを設定するのと同様です。
(No2に書式設定に関しての参考サイトも挙げておいたはずですが・・)

sheet.Cells(Str).Value = Now.ToString("yyyy年MM月dd日")
sheet.Cells(Str).NumberFormatLocal = "[$-F800]dddd, mmmm dd, yyyy"

とかではいかがでしょうか?
書式は、「yyyy"年"m"月"d"日"」的なものでもOKなはずです。
(ダブルクォ―テーションが面倒ですが)
    • good
    • 0
この回答へのお礼

このVBは前任者の方が作ったのもで、私はほんわかしかわかっていません(すみません・・)
S = 1
T = 1
Str = "AF" + S.ToString() + ":AO" + T.ToString()
sheet.Range(Str).Merge()
sheet.Cells(Str).Value = Now.ToString("yyyy年MM月dd日")
sheet.Cells(Str).NumberFormatLocal = "[$-F800]dddd, mmmm dd, yyyy"
sheet.Range(Str).Style.Font.FontSize = 10
sheet.Range(Str).Style.Alignment.Horizontal = XLAlignmentHorizontalValues.Center
sheet.Range(Str).Style.Alignment.Vertical = XLAlignmentVerticalValues.Center

にすると、ビルドエラーになってしまいます。
NumberFormatLocalはIXLCellsのメンバーではありませんのエラーメッセージです。

No2でいただいたリンク先の内容が理解できない場合は、エクセルについて勉強すればよいのでしょうか?;

お礼日時:2020/05/22 16:02

こんにちは



エクセルを媒体にしようとしているのですから、エクセルについて知らなくてはうまくいかないこともいろいろ出てくるでしょう。

以下ご参考までに。
・文字太さの設定。
https://docs.microsoft.com/ja-jp/office/vba/api/ …

・セル書式の設定
https://docs.microsoft.com/ja-jp/office/vba/api/ …
https://docs.microsoft.com/ja-jp/office/vba/api/ …
    • good
    • 0
この回答へのお礼

リンクを見ながらやってみて、
sheet.Range(Str).Style.Font.Bold = True
を入れたら太字になりました!ありがとうございました!

お礼日時:2020/05/21 15:48

どちらもExcel側でマクロの自動記録を取ってみるとヒントは出てきそうですけど?


とくに後者については『表示形式』を敢えて切り替えて指定してみれば、必要なプロパティとか見えてくるような。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
・・・ということは、今度はVBではなくVBAについて勉強しなければならないのですね!

マクロの自動記録?について調べてみます。ありがとうございます。

お礼日時:2020/05/21 14:21

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

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


おすすめ情報