HOME 検索 索引 もくじ 関数目次 前ページへ 次ページへ
タイトル欄のアドレスは、エクセルファンクラブの該当する頁へのリンク先です。
詳しい事は、こちらのお願いをご覧になってください。
61
自作のツールバーをバックアップするには?
62 現在開いている全てのExcelファイル名を取得するには
63
指定のフォルダ下の全てのフォルダ名を取得するには?
64 (株)・(有)を削除して会社名を表示するには
65
他のファイルを参照しているファイルを、そのファイル内で参照させるには【リンク元の変更】
66
フォルダ選択ダイアログボックスから、フォルダ名を取得するには?
67
指定の塗りつぶしのセルだけ、入力できなくするには
68
選択範囲の罫線、セルの値を180度回転させるには?
69
選択中のシートだけをメールに添付して、複数のアドレスに一気に送付するには?
70
IMEツールバー(言語バー)が表示できなくなりました
71 配列変数について
72
アシスタントを表示するには?
73
ひとつ上のフルパスを取得するには?
74 セルを点滅させるには?
75 改ページごとに、A列の一番始めのセルに書き込むには?
76 VBAで指定の場所にフォルダを作成するには?
77 Outlook Expressのメール内容を、Excelに取り込むには?
78
ファイル内の全てのシートのハイパーリンク先アドレスを、一気に変更するには?
79
改ページを正しく認識させるには?
80
フォント等、任意に設定したコメントを挿入するには?
61 | 自作のツールバーをバックアップするには? http://cgi.fuji.ne.jp/~fj2094/cgi-bin1/wwwlng.cgi?print+200109/01090122.txt 「ツールバーのバックアップをするには?」 【編集ラウンジ】 |
Excel97、Excel2000、Excel2002 共通 1. 【ツール】【ユーザー設定】【ツールバー】で、【添付】のボタンをクリックします。 2. 出てきた画面の左の窓からバックアップを取りたいツールバーを右の窓にコピーします。 3. その状態で、ファイルを保存しておき、復旧の際そのファイルを開けば、 登録されていたツールバーが復旧します。 |
|
62 | 現在開いている全てのExcelファイル名を取得するには |
Sub test2() Dim M As Object, N() As String, i As Integer, j As Integer, NN As String i = 0 NN = "" For Each M In Workbooks If M.Name <> "PERSONAL.XLS" Then i = i + 1 ReDim N(i) N(i) = Left(M.Name, Len(M.Name) - 4) NN = NN & Chr(10) & N(i) & "、" End If Next MsgBox "現在開いているExcelのファイルは、" & Chr(10) & NN & Chr(10) & Chr(10) & "です" End Sub このコードの使い方は、マクロの使い方(1)標準モジュールにあります。 |
|
63 | 指定のフォルダ下の全てのフォルダ名を取得するには? http://www.keep-on.com/~excelyou/2000lng4/200005/00050154.txt 「フォルダ下の全てのフォルダ名を取得するには?」 【VBAラウンジ】 |
Sub
test() Dim atai As String atai = Dir("C:\My Documents\", vbDirectory) '初回検索 Do Until atai = Empty '該当ファイルがなくなるまで処理 If atai <> "." And (atai <> "..") Then MsgBox atai '現在のフォルダと親フォルダは除く atai = Dir '引き続き検索 Loop End Sub このコードの使い方は、マクロの使い方(1)標準モジュールにあります。 |
|
64 | (株)・(有)を削除して会社名を表示するには |
選択したセルの先頭に付いた、(株)(有)(財)、株式会社、有限会社、財団法人を削除します。 これらが付いていない会社は、そのまま表示します。 Sub test() Dim c As Range '選択対象がセルでなければ、マクロを中止 If Not TypeName(Selection) = "Range" Then Exit Sub For Each c In Selection '選択したセル全てを処理 Select Case Left(c, 3) Case "(株)": c = Mid(c, 4, Len(c)) Case "(有)": c = Mid(c, 4, Len(c)) Case "(財)": c = Mid(c, 4, Len(c)) Case "(株)": c = Mid(c, 4, Len(c)) Case "(有)": c = Mid(c, 4, Len(c)) Case "(財)": c = Mid(c, 4, Len(c)) End Select Select Case Left(c, 1) Case "": c = Mid(c, 2, Len(c)) Case "": c = Mid(c, 2, Len(c)) End Select Select Case Left(c, 4) Case "株式会社": c = Mid(c, 5, Len(c)) Case "有限会社": c = Mid(c, 5, Len(c)) Case "財団法人": c = Mid(c, 5, Len(c)) End Select Next End Sub このコードの使い方は、マクロの使い方(1)標準モジュールにあります。 |
|
A列の会社名から、(株)(株)(有)(有) を削除して、B列に表示します。 これらが付いていない会社は、そのまま表示します。 Sub 株イき社名() Dim i As Long '2行目から最終行まで繰り返す For i = 2 To Cells(Application.Rows.Count, 1).End(xlUp).Row If Left(Cells(i, 1), 3) = "(株)" Or Left(Cells(i, 1), 3) = "(有)" Then Cells(i, 2) = Mid(Cells(i, 1), 4, Len(Cells(i, 1))) ElseIf Right(Cells(i, 1), 3) = "(株)" Or Right(Cells(i, 1), 3) = "(有)" Then Cells(i, 2) = Mid(Cells(i, 1), 1, Len(Cells(i, 1)) - 3) ElseIf Left(Cells(i, 1), 1) = "" Or Left(Cells(i, 1), 1) = "" Then Cells(i, 2) = Mid(Cells(i, 1), 2, Len(Cells(i, 1))) ElseIf Right(Cells(i, 1), 1) = "" Or Right(Cells(i, 1), 1) = "" Then Cells(i, 2) = Mid(Cells(i, 1), 1, Len(Cells(i, 1)) - 1) Else Cells(i, 2) = Cells(i, 1) End If Next End Sub このコードの使い方は、マクロの使い方(1)標準モジュールにあります。 |
|
選択したセルの先頭に付いた、(株)(株)(有)(有)(財)(財)を削除して、 先頭の文字がアルファベットの場合、フリガナをカタカナに変更します。 このマクロを実行すると、「ABC」「エービーシー」の混在した会社名も普通に並べ替えができます。 Sub test() Dim c As Range, N As String '選択対象がセルでなければ、マクロを中止 If Not TypeName(Selection) = "Range" Then Exit Sub For Each c In Selection '選択したセル全てを処理 Select Case Left(c, 3) Case "(株)": c = Mid(c, 4, Len(c)) Case "(有)": c = Mid(c, 4, Len(c)) Case "(財)": c = Mid(c, 4, Len(c)) Case "(株)": c = Mid(c, 4, Len(c)) Case "(有)": c = Mid(c, 4, Len(c)) Case "(財)": c = Mid(c, 4, Len(c)) End Select Select Case Left(c, 1) Case "": c = Mid(c, 2, Len(c)) Case "": c = Mid(c, 2, Len(c)) End Select Select Case Left(c, 4) Case "株式会社": c = Mid(c, 5, Len(c)) Case "有限会社": c = Mid(c, 5, Len(c)) Case "財団法人": c = Mid(c, 5, Len(c)) End Select N = "" Select Case Left(c, 1) Case "A", "A", "a", "a": N = "エー" Case "B", "B", "b", "b": N = "ビー" Case "C", "C", "c", "c": N = "シー" Case "D", "D", "d", "d": N = "ディー" Case "E", "E", "e", "e": N = "シー" Case "F", "F", "f", "f": N = "シー" Case "G", "G", "g", "g": N = "シー" Case "H", "H", "h", "h": N = "シー" Case "I", "I", "i", "i": N = "アイ" Case "J", "J", "j", "j": N = "ジェイ" Case "K", "K", "k", "k": N = "ケイ" Case "L", "L", "l", "l": N = "エル" Case "M", "M", "m", "m": N = "エム" Case "N", "N", "n", "n": N = "エヌ" Case "O", "O", "o", "o": N = "オー" Case "P", "P", "p", "p": N = "ピー" Case "Q", "Q", "q", "q": N = "キュウ" Case "R", "R", "r", "r": N = "アール" Case "S", "S", "s", "s": N = "エス" Case "T", "T", "t", "t": N = "ティー" Case "U", "U", "u", "u": N = "ユー" Case "V", "V", "v", "v": N = "ブイ" Case "W", "W", "w", "w": N = "ダブリュー" Case "X", "X", "x", "x": N = "エックス" Case "Y", "Y", "y", "y": N = "ワイ" Case "Z", "Z", "z", "z": N = "ゼット" End Select If N <> "" Then c.Characters.PhoneticCharacters = N Next End Sub |
|
65 | 他のファイルを参照しているファイルを、そのファイル内で参照させるには【リンク元の変更】 |
=Sheet1!C3 のように他のシートを参照しているシートを、他のファイルにコピーすると、コピー先は ='[Book1.xls]Sheet1'!C3 のように、コピー元のファイルを参照してしまいます。 これを、コピー先のファイルに変更します。 1.【編集】【リンクの設定】で、現在参照しているシートを選択し、【リンク元の変更】 |
|
Sub
リンクの変更1() 'リンク設定のあるセルを選択して実行 '参照元ファイルは開いていてもいなくてもOK Dim M As String, i As Integer M = "" '選択したセルの数式から、参照元のファイル名を取得 For i = 3 To Len(ActiveCell.Formula) If Mid(ActiveCell.Formula, i, 1) = "]" Then Exit For ElseIf Mid(ActiveCell.Formula, i, 1) <> "[" Then M = M & Mid(ActiveCell.Formula, i, 1) End If Next 'リンクの設定を、コピー元から現在のファイルに変更 ActiveWorkbook.ChangeLink Name:=M, NewName:= _ ThisWorkbook.Name, Type:=xlExcelLinks End Sub このコードの使い方は、マクロの使い方(1)標準モジュールにあります。 |
|
Sub
リンクの変更2() '参照元のファイルを開いてから実行します Dim M As Object 'エラーが出てもそのまま続行 On Error Resume Next '現在開いている全てのファイルをひとつずつMの変数に格納して実行 For Each M In Workbooks 'リンクの設定を、Mから現在のファイルに変更 'コピー元ファイルがMでなければ、エラーが出てそのまま素通り ActiveWorkbook.ChangeLink Name:=M.Name, NewName:= _ ThisWorkbook.Name, Type:=xlExcelLinks Next End Sub このコードの使い方は、マクロの使い方(1)標準モジュールにあります。 |
|
66 | フォルダ選択ダイアログボックスから、フォルダ名を取得するには? http://www.ae.wakwak.com/~efc21/cgi-bin/wwwlng.cgi?print+200006/00060322.txt 「フォルダパスを取得する組み込みダイアログボックスはありますか?」 【VBAラウンジ】 |
Type
BROWSEINFO hWndOwner As Long pidlRoot As Long pszDisplayName As String lpszTitle As String ulFlags As Long lpfn As Long lParam As String iImage As Long End Type Declare Function SHBrowseForFolder Lib "shell32" (lpbi As BROWSEINFO) As Long Declare Function SHGetPathFromIDList Lib "shell32" (ByVal pidl As Long, ByVal pszPath As String) As Long Public Const CSIDL_DESKTOP = &H0 'デスクトップ Public Const BIF_BROWSEINCLUDEFILES = &H4000 Public Const BIF_RETURNONLYFSDIRS = &H1 'フォルダのみ選択可能 Public Function GetFolder(strComent As String, strPath As String) As Boolean Dim bif As BROWSEINFO Dim pidl As Long On Error GoTo ErrGetFolder With bif .pidlRoot = CSIDL_DESKTOP .ulFlags = BIF_RETURNONLYFSDIRS .lpszTitle = strComent End With pidl = SHBrowseForFolder(bif) If pidl <> 0 Then strPath = String$(256, vbNullChar) SHGetPathFromIDList pidl, strPath strPath = Left(strPath, InStr(strPath, vbNullChar) - 1) GetFolder = True Else GetFolder = False End If Exit Function ErrGetFolder: GetFolder = False End Function Sub フォルダ選択() Dim Path As String If GetFolder("選択してね!", Path) = True Then MsgBox Path Else MsgBox "失敗しました。" End If End Sub このコードの使い方は、マクロの使い方(1)標準モジュールにあります。 |
|
67 | 指定の塗りつぶしのセルだけ、入力できなくするには http://www.ae.wakwak.com/~efc21/cgi-bin/wwwlng.cgi?print+200112/01120049.txt 「特定の色のついているセルに入力できないようにするには?」 【VBAラウンジ】 |
Sub test()
Dim c As Range '保護解除 ActiveSheet.Unprotect With Range("E1", Cells.SpecialCells(xlCellTypeLastCell)) 'E列以降最終セルまでのロックをはずす .Locked = False For Each c In .Cells Select Case c.Interior.ColorIndex '赤、青、ベージュの塗りつぶしの場合、ロックをかける Case 3, 5, 40: c.Locked = True End Select Next c End With 'シートを保護する ActiveSheet.Protect End Sub このコードの使い方は、マクロの使い方(1)標準モジュールにあります。 |
|
E列以降の、赤、青、ベージュの塗りつぶしのあるセルにだけロックをかけてシートを保護します Sub miko_test() Dim i As Long, j As Long '既に保護されている場合、一旦解除 If ActiveSheet.Protect Then ActiveSheet.Unprotect '全てのセルのロックをはずす Cells.Locked = False '5列目から最終列まで繰り返す For j = 5 To Cells.SpecialCells(xlCellTypeLastCell).Column '1行目から最終行まで繰り返す For i = 1 To Cells.SpecialCells(xlCellTypeLastCell).Row '赤、青、ベージュの塗りつぶしの場合、ロックをかける If Cells(i, j).Interior.ColorIndex = 3 Then Cells(i, j).Locked = True If Cells(i, j).Interior.ColorIndex = 5 Then Cells(i, j).Locked = True If Cells(i, j).Interior.ColorIndex = 40 Then Cells(i, j).Locked = True Next i Next j 'シートを保護する ActiveSheet.Protect Contents:=True End Sub このコードの使い方は、マクロの使い方(1)標準モジュールにあります。 |
|
68 | 選択範囲の罫線、セルの値を180度回転させるには? http://cgi.fuji.ne.jp/~fj2094/cgi-bin1/wwwlng.cgi?print+200112/01120036.txt 「ワークシートを180°回転するには?」【編集ラウンジ】 |
Excel2002 エクセル2002の場合は、選択したセル範囲を【カメラ】、または【図のリンク貼り付け】をすると、 緑色のハンドルが出て自由に回転できます。 カメラ、図のリンク擦り付けについてはこちらをどうぞ。 http://www.hm2.aitai.ne.jp/~naka95/Excel_Note/07-01_copy.htm#07-01-13 |
|
Excel97、Excel2000共通 セルの中で、文字を180度回転します。半角英数小文字には対応していません。 1. 【書式】【セル】【配置】【方向】を、+90度 にします。 2. 【フォント名】の頭に@マークを入れ、「@MS Pゴシック」 のようにします。 3. 二文字以上ある場合、文字の間に Alt+Enter を入れます。 |
|
選択した範囲内の罫線、セルの値を180度回転させた場所に移動させます。 セルの塗りつぶし、文字色、フォントも回転しますが、文字の向きはそのままです。 Excel97、Excel2000、エクセル2002確認済 Sub test() Dim SourceRange As Range Dim r As Range Dim TotalRow As Long Dim TotalColumn As Long Application.ScreenUpdating = False Set SourceRange = ActiveWindow.RangeSelection With SourceRange TotalRow = .Row * 2 + .Rows.Count - 1 TotalColumn = .Column * 2 + .Columns.Count - 1 End With ActiveSheet.Copy After:=ActiveSheet With ActiveSheet For Each r In SourceRange With .Cells(TotalRow - r.Row, TotalColumn - r.Column) .Value = r.Value .Interior.ColorIndex = r.Interior.ColorIndex '塗りつぶし .Font.ColorIndex = r.Font.ColorIndex '文字色 .Font.Name = r.Font.Name 'フォント With .Borders(xlEdgeLeft) .LineStyle = r.Borders(xlEdgeRight).LineStyle .Weight = r.Borders(xlEdgeRight).Weight .ColorIndex = r.Borders(xlEdgeRight).ColorIndex End With With .Borders(xlEdgeRight) .LineStyle = r.Borders(xlEdgeLeft).LineStyle .Weight = r.Borders(xlEdgeLeft).Weight .ColorIndex = r.Borders(xlEdgeLeft).ColorIndex End With With .Borders(xlEdgeTop) .LineStyle = r.Borders(xlEdgeBottom).LineStyle .Weight = r.Borders(xlEdgeBottom).Weight .ColorIndex = r.Borders(xlEdgeBottom).ColorIndex End With With .Borders(xlEdgeBottom) .LineStyle = r.Borders(xlEdgeTop).LineStyle .Weight = r.Borders(xlEdgeTop).Weight .ColorIndex = r.Borders(xlEdgeTop).ColorIndex End With With .Borders(xlDiagonalUp) If r.Borders(xlDiagonalUp).LineStyle = xlNone Then .LineStyle = xlNone Else .LineStyle = r.Borders(xlDiagonalUp).LineStyle .Weight = r.Borders(xlDiagonalUp).Weight .ColorIndex = r.Borders(xlDiagonalUp).ColorIndex End If End With With .Borders(xlDiagonalDown) If r.Borders(xlDiagonalDown).LineStyle = xlNone Then .LineStyle = xlNone Else .LineStyle = r.Borders(xlDiagonalDown).LineStyle .Weight = r.Borders(xlDiagonalDown).Weight .ColorIndex = r.Borders(xlDiagonalDown).ColorIndex End If End With End With Next For Each r In SourceRange.Rows(1).Cells .Columns(TotalColumn - r.Column).ColumnWidth = r.ColumnWidth Next For Each r In SourceRange.Columns(1).Cells .Rows(TotalRow - r.Row).RowHeight = r.RowHeight Next End With Application.ScreenUpdating = True End Sub このコードの使い方は、マクロの使い方(1)標準モジュールにあります。 |
|
69 | 選択中のシートだけをメールに添付して、複数のアドレスに一気に送付するには? http://cgi.fuji.ne.jp/~fj2094/cgi-bin1/wwwlng.cgi?print+200204/02040095.txt 「ブックを開いたままで1枚のシートだけメールで送るには。」 【編集ラウンジ】 |
選択中のシートを、「宛先マスタ」シートのC列に入力されている全てのアドレスにメール添付して送ります。 Sub test1() Dim vntADDRESS As Variant Dim strNAME As String With ThisWorkbook With .Worksheets("宛先マスタ") vntADDRESS = .Range("C2:C" & .Cells(Rows.Count, "C").End(xlUp).Row) End With strNAME = Left(.Name, Len(.Name) - 4) _ & "_" & Format(ActiveSheet.Range("A2").Value, "yyyymm") On Error Resume Next Kill .Path & "\" & strNAME & ".xls" On Error GoTo 0 .Save End With ActiveSheet.Copy With ActiveWorkbook .SaveAs Filename:=ThisWorkbook.Path & "\" & strNAME On Error Resume Next .SendMail Recipients:=vntADDRESS, Subject:=strNAME On Error GoTo 0 .Close SaveChanges:=False End With Kill ThisWorkbook.Path & "\" & strNAME & ".xls" End Sub このコードの使い方は、マクロの使い方(1)標準モジュールにあります。 |
|
70 | IMEツールバー(言語バー)が表示できなくなりました http://cgi.fuji.ne.jp/~fj2094/office2000/wwwlng.cgi?print+200203/02030054.txt 「IMEのバーを表示するには?」 【Excell以外ラウンジ】 http://cgi.fuji.ne.jp/~fj2094/office2000/wwwlng.cgi?print+200103/01030045.txt 「IME2000が表示するには?」 【Excell以外ラウンジ】 http://cgi.fuji.ne.jp/~fj2094/office2000/wwwlng.cgi?print+200204/02040119.txt 「IMEツールバーを表示するには・・・・WinXP編」 【Excell以外ラウンジ】 |
【コントロールパネル】【キーボード】【言語】【変更】【基本設定】【言語バー】で、 【言語バーをディスクトップ上に表示】にチェックしてOKをクリック、画面上に出たバーの左側で右クリック 【最小化】を選択しメッセージが出たらOKをクリックにて完了。 ※ バージョンによって、操作法が違います。 |
|
Windows XP
IME 2002 http://homepage2.nifty.com/winfaq/wxp/trouble.html#1325 |
|
71 | 配列変数について |
Dim a(3) as .... | a(0) a(1) a(2) a(3) の4つの変数が使えます |
Option Base 1 Dim a(3) as .... |
Option Base 1 を宣言すると、最小値が変更されます。 a(1) a(2) a(3) の3つの変数が使えます |
Dim a(2 To 4).... | a(2) a(3) a(4) の3つの変数が使えます |
Dim a() .... ReDim a(2) |
コードの途中で、使える変数の数を変えることも出来ます。 Sub TEST() Dim MyArr() As String Dim i As Integer For i = 97 To 106 ReDim Preserve MyArr(97 To i) MyArr(i) = Chr(i) Next MsgBox "要素のインデックスの最小値は " & LBound(MyArr) & vbCrLf & _ "要素のインデックスの最大値は " & UBound(MyArr) For i = LBound(MyArr) To UBound(MyArr) MsgBox i & " 番のインデックスの要素の値は " & MyArr(i) Next End Sub Sub test2() |
72 | アシスタントを表示するには? |
Sub
test() 'Assistant.On = True 'アシスタントが無効になっている場合、有効にする Assistant.Visible = True 'アシスタントを表示する 'Assistant.Visible = False 'アシスタントを非表示にする End Sub このコードの使い方は、マクロの使い方(1)標準モジュールにあります。 |
|
73 | ひとつ上のフルパスを取得するには? http://www.ae.wakwak.com/cgi-bin/sbox/~efc21/wwwlng.cgi?print+200205/02050510.txt 「対象ファイルのひとつ上のパスを取得するには?」 【VBAラウンジ】 |
Sub
test() Dim MyPath As String, S_Path As String MyPath = ThisWorkbook.Path S_Path = Left(MyPath, InStrRev(MyPath, "\", -1, 1) - 1) MsgBox "このブックのパスは" & MyPath & "です。" & Chr(10) & _ "ひとつ上のパスは" & S_Path & "です。" End Sub このコードの使い方は、マクロの使い方(1)標準モジュールにあります。 |
|
74 | セルを点滅させるには? http://www.ae.wakwak.com/~efc21/cgi-bin/wwwlng.cgi?print+200102/01020111.txt 「セルを点滅させることできますか?」 【VBAラウンジ】 |
Sub
枠点滅() With ActiveSheet Dim counter As Integer, setTime .Protect For counter = 1 To 10 If .EnableSelection = xlNoSelection Then .EnableSelection = xlNoRestrictions Else .EnableSelection = xlNoSelection End If setTime = Timer Do DoEvents Loop Until Timer >= setTime + 0.4 Next .Unprotect End With End Sub このコードの使い方は、マクロの使い方(1)標準モジュールにあります。 |
|
Sub 文字点滅() Dim selR As Range Dim selId() As Integer Dim selNum As Integer Dim i As Integer, colorId(1) As Integer Dim counter As Integer, setTime, flash Set selR = Selection '点滅させるセル範囲 selNum = selR.Count colorId(0) = 3 '点滅色 colorId(1) = 2 ' 〃 ReDim selId(1 To selR.Count) For i = 1 To selR.Count selId(i) = selR(i).Font.ColorIndex Next i For counter = 1 To 5 For Each flash In colorId selR.Font.ColorIndex = flash setTime = Timer Do DoEvents Loop Until Timer >= setTime + 0.3 Next flash Next counter For i = 1 To selR.Count selR(i).Font.ColorIndex = selId(i) Next i End Sub このコードの使い方は、マクロの使い方(1)標準モジュールにあります。 |
|
シートをアクティブにすると、E5セルをアクティブにして枠が10回点滅します。 Private Sub Worksheet_Activate() Dim counter As Integer, setTime With ActiveSheet .Cells(10, 5).Select .Protect For counter = 1 To 10 If .EnableSelection = xlNoSelection Then .EnableSelection = xlNoRestrictions Else .EnableSelection = xlNoSelection End If setTime = Timer Do DoEvents Loop Until Timer >= setTime + 0.4 Next .Unprotect End With End Sub このコードの使い方は、マクロの使い方(2)該当するシートのモジュールにあります。 |
|
75 | 改ページごとに、A列の一番始めのセルに書き込むには? http://cgi.fuji.ne.jp/~fj2094/cgi-bin1/wwwlng.cgi?print+200206/02060032.txt 「改ページ時に大項目を再表示(印刷)させるには?」 【編集ラウンジ】 |
改ページごとに、A列の最初の行に「見出し」と書き込みます Sub test() Dim hp As Object For Each hp In ActiveSheet.HPageBreaks Cells(hp.Location.Row, 1) = "見出し" Next End Sub このコードの使い方は、マクロの使い方(1)標準モジュールにあります。 |
|
改ページごとに、A列の最初の行に「
* ページ目」と書き込みます Sub miko_test() Dim i As Long For i = 1 To ActiveSheet.HPageBreaks.Count Cells(ActiveSheet.HPageBreaks(i).Location.Row, 1) = i & "ページ目" Next End Sub このコードの使い方は、マクロの使い方(1)標準モジュールにあります。 |
|
改ページごとに、ページ数とA列の一番始めのセルの値を、新規シートに書き込みます。 Sub miko_test() Dim WS1 As Worksheet, WS2 As Worksheet Dim i As Long, j As Integer On Error Resume Next 'エラーが出てもそのまま続行 Sheets.Add Before:=Sheets(1) 'シートの追加 Set WS1 = Worksheets("sheet1") '元シート Set WS2 = Worksheets(1) '新規に追加したシート WS2.Select j = 1 With WS1 For i = 1 To (.HPageBreaks.Count + 1) * (.VPageBreaks.Count + 1) Cells(Cells(Application.Rows.Count, 1).End(xlUp).Row + 1, 1) = i Cells(Cells(Application.Rows.Count, 1).End(xlUp).Row, 2) = .Cells(j, 1) j = .HPageBreaks(i).Location.Row Next End With End Sub このコードの使い方は、マクロの使い方(1)標準モジュールにあります。 |
|
76 | VBAで指定の場所にフォルダを作成するには? http://www.ae.wakwak.com/~efc21/cgi-bin/wwwlng.cgi?print+200206/02060238.txt 「フォルダを作成するには?」 【VBAラウンジ】 |
Sub
test() MkDir "C:\AAA" End Sub このコードの使い方は、マクロの使い方(1)標準モジュールにあります。 |
|
77 | Outlook Expressのメール内容を、Excelに取り込むには? http://www.ae.wakwak.com/~efc21/cgi-bin/wwwlng.cgi?print+200206/02060215.txt 「Outlook Expressの特定のフォルダ内のメールを取り込むには?」 【VBAラウンジ】 |
【準備】 1. 以下のサイトから、BASP21 DLL をダウンロードして http://www.hi-ho.ne.jp/babaq/basp21.html 任意の場所に保存し、インストールします。インストールは、BASP21.exe を実行するだけです。 2. Outlook Express を起動し、書き出したいメールを選択して(Shift、Ctrl を押しながら複数選択できます) 任意のフォルダにドラッグします。 ドラッグしたメールは、フォルダ内に.emlファイルとしてコピーされます。 Private Declare Function ReadMail Lib
"bsmtp" _ |
|
78 | ファイル内の全てのシートのハイパーリンク先アドレスを、一気に変更するには? http://cgi.fuji.ne.jp/~fj2094/cgi-bin1/wwwlng.cgi?print+200206/02060146.txt 「ハイパ−リンク先のパスの置換」 【編集ラウンジ】 |
Sub
miko_test() Dim H As Hyperlink, aa As String, R As String, S As Worksheet aa = Application.InputBox(Prompt:="新しいハイパーリンク先のアドレスを入力してください。", Default:=aa, Type:=2) For Each S In Worksheets With S For Each H In .Hyperlinks R = H.Range.Address H.Delete .Hyperlinks.Add Anchor:=.Range(R), Address:=aa, TextToDisplay:=aa Next End With Next End Sub このコードの使い方は、マクロの使い方(1)標準モジュールにあります。 |
|
79 | 改ページを正しく認識させるには? http://www.ae.wakwak.com/~efc21/cgi-bin/wwwlng.cgi?print+200106/01060055.txt 「印刷のページ数をカウントするには」 【VBAラウンジ】 |
一旦、改ページプレビューにすると、正しく認識できます。 Sub test() Dim i As Integer Application.ScreenUpdating = False '画面の動きを固定 '正しく改ページ位置を取得する為、一旦改ページプレビューにする ActiveWindow.View = xlPageBreakPreview '縦方向最終改ページ数取得 MsgBox "改ページの回数は " & ActiveSheet.HPageBreaks.Count & " 回です" For i = 1 To ActiveSheet.HPageBreaks.Count MsgBox i & " 回目の改ページで、次ページの最初の行は " & _ ActiveSheet.HPageBreaks(i).Location.Row & " 行目になります" Next With ActiveSheet.UsedRange MsgBox "シート自体の最終行は " & .Row + .Rows.Count - 1 & " 行目になります" End With ActiveWindow.View = xlNormalView '改ページプレビューを戻す Application.ScreenUpdating = True '画面の固定解除 End Sub この使い方は、マクロの使い方(1)標準モジュールにあります。 |
|
80 | フォント等、任意に設定したコメントを挿入するには? http://www.ae.wakwak.com/~efc21/cgi-bin/wwwlng.cgi?print+200105/01050337.txt 「セルのコメントについて質問」 【VBAラウンジ】 |
Sub
CommentFont() Dim aa(2) As Variant, x As Variant aa(1) = Application.InputBox(Prompt:="作成者名を入力してください。", Type:=2) aa(2) = Application.InputBox(Prompt:="コメント内容を入力してください。", Type:=2) 'キャンセル処理 If (VarType(aa(1)) = vbBoolean) And (VarType(aa(2)) = vbBoolean) Then Exit Sub '既にコメントが挿入されている場合 If Not IsError(x) Then If MsgBox("既にコメントが挿入されています。既存のコメントをクリアしていいですか?", _ vbOKCancel + vbQuestion) = vbOK Then Selection.ClearComments Else Exit Sub End If End If With Selection .AddComment 'コメント挿入 .Comment.Visible = False '非表示 'コメントの内容 If (VarType(aa(1)) = vbBoolean) Or aa(1) = "" Then '作成者を入れない場合 .Comment.Text Text:=aa(2) ElseIf (VarType(aa(2)) = vbBoolean) Or aa(2) = "" Then '本文を入れない場合 .Comment.Text Text:="記入者 " & aa(1) Else '両方を入れる場合 .Comment.Text Text:="記入者 " & aa(1) & Chr(10) & aa(2) 'フォント設定 With .Comment.Shape.TextFrame.Characters(Start:=1, Length:=Len(aa(1)) + 4).Font .Italic = True '斜体 .Size = 11 '文字サイズ11ポイント .ColorIndex = 3 '赤色 .Bold = True '太字 End With End If With .Comment.Shape .Line.ForeColor.SchemeColor = 10 '枠線色 .Line.Weight = 4 '枠線太さ .Fill.ForeColor.SchemeColor = 42 '背景色 End With End With End Sub この使い方は、マクロの使い方(1)標準モジュールにあります。 |