//必須
using System.IO;
//exeファイルをネットワークからMyDocument内へコピーする
string copyFrom = @“\\server\\work\\file.exe";
string copyTO = “c:\\file.exe";
File.Copy(copyFrom, copyTO);
//ファイル削除
File.Delete(copyTO);
//ディレクトリ削除
Directory.Delete(dirMyDoc);
//ファイル存在チェック
String FNAME = “xvax.ini";
if (File.Exists(FNAME) != true) {
	MessageBox.Show(“File not Found “, “File not Found");
	return;
}
//ファイル読み込み
String line;
StreamReader sr = new StreamReader(FNAME);
//1行だけ読み込む
line = sr.ReadLine();
//ファイル書き込み
using (StreamWriter sw = File.CreateText(“書き込み対象ファイル+パス")) {
	sw.WriteLine(“test,test");
	//File Close
	sw.Close();
}
					投稿者「xvax」のアーカイブ
メッセージボックス
//ノーマル
MessageBox.Show(“メッセージ", “タイトル(省略可)");
//Yes,No判定
if (MessageBox.Show(“よろしいですか?", “判定", MessageBoxButtons.YesNo) != DialogResult.No) {
	textBox1.Text = “Yes";
else
	textBox1.Text = “No!";
}
					環境情報取得
//MyDocument内のパス取得
string dirMyDoc = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + “\\xvax";
//パス上にディレクトリ存在しない場合
if ( Directory.Exists(dirMyDoc) == false ) {
	//ディレクトリ作成
	Directory.CreateDirectory( Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + “\\xvax" );
}
//NT LOGIN Name
using System.Runtime.InteropServices;
[DllImport("Advapi32.dll", EntryPoint = "GetUserName", ExactSpelling = false, SetLastError = true)]
static extern bool GetUserName([MarshalAs(UnmanagedType.LPArray)] byte[] lpBuffer, [MarshalAs(UnmanagedType.LPArray)] Int32[] nSize);
byte[] str = new byte[256];
Int32[] len = new Int32[1];
len[0] = 256;
GetUserName(str, len);
//ex
lblLogName.Text = System.Text.Encoding.ASCII.GetString(str);
					指定セル内の指定文字列を赤色に変更
Sub SEARCH_WORD() Dim chkVAL As String, FX As Integer chkVAL = InputBox(“Keyword(該当文字列を赤色にします)", “SEARCH") If chkVAL = “" Then Exit Sub For Each c In Selection FX = InStr(1, c.Value, chkVAL) If FX > 0 Then c.Characters(Start:=FX, Length:=Len(chkVAL)).Font.ColorIndex = 3 Next End Sub
隠しシートの表示
通常はメニューの「書式」-「シート」-「再表示」で非表示シートを表示可能。
しかし、マクロで「VeryHidden」をセットされると「再表示」でも見ることができない。
例)Sheets(“aaa”).Visible = xlVeryHidden
VeryHiddenのシートが存在するかを確認する方法:
1)VBAエディター上のイミディエイトボックスを表示
2)存在するシート数を確認する
 ?sheets.Count
 4
3)表示されているシート数が4未満の場合は、VeryHiddenがあり得る
4)下記のコマンドで強制表示させる(イミディエイトボックス内)
 for i=1 to 4:Sheets(i).Visible=true:next
ピボット並び替え&上位フィルター
Sub run() '引数:並べ替えのフィールド名、対象のシート名、Pivot実データの開始Y番号,TOP幾つまでを表示するか pivot_SORT_TOP “TITLE", “Sheet4", 5, 10 End Sub 'X軸は日付など、並び替え可能な項目であること Sub pivot_SORT_TOP(CMname As String, pivot_sheet As String, Y As Long, TOP As Integer) Dim X As Long, CH As String Sheets(pivot_sheet).Select On Error Resume Next '縦の項目を一度、全部表示にする For i = 1 To ActiveSheet.PivotTables(1).PivotFields(CMname).PivotItems.Count ActiveSheet.PivotTables(1).PivotFields(CMname).PivotItems(i).Visible = True Next 'Pivotの末列の座標を探す X = 2 Do While Cells(Y – 1, X) <> “": X = X + 1: Loop X = X – 1 '横列の昇順並び替え Cells(Y – 1, 2).Select Selection.Sort Order1:=xlAscending, Type:=xlSortLabels, OrderCustom:=1, _ Orientation:=xlLeftToRight, SortMethod:=xlPinYin '並び替えたい列を選択 Cells(Y, X).Select 'Range(Chr(64 + X) & Y).Select 'X,Y座標をR1C1形式に変換 CH = “R" & Y & “C" & X '末列を降順でSORT Selection.Sort Key1:=CH, Order1:=xlDescending, Type:=xlSortValues, _ OrderCustom:=1, Orientation:=xlTopToBottom, SortMethod:=xlPinYin '表示項目がTOP指定より多い場合は、フィルター処理 If ActiveSheet.PivotTables(1).PivotFields(CMname).PivotItems.Count > TOP Then On Error Resume Next 'TOP以降は非表示する For i = TOP + 1 To ActiveSheet.PivotTables(1).PivotFields(CMname).PivotItems.Count ActiveSheet.PivotTables(1).PivotFields(CMname).PivotItems(i).Visible = False Next End If On Error GoTo 0 End Sub
グラフのバーをグループ単位で色分け
'グラフのバーをグループ単位で色分け '大前提:実行前に対象のグラフが選択されていること Sub Set_Color_Bar() Dim i As Integer, N As Integer 'バーの数分だけループ(この例では13個) For i = 1 To ActiveChart.SeriesCollection.Count N = Val(Right(ActiveChart.SeriesCollection(i).Name, 2)) '何番目のバーを処理しているか If i < 5 Then '最初の4本までは青系のバーにする Bar_attr i, 33 ElseIf i < 9 Then '最初の5~8本は黄系のバーにする Bar_attr i, 6 Else '最初の9本目以降は紫系のバーにする Bar_attr i, 7 End If Next 'おまけ 'ActiveChart.SeriesCollection(i).Name 'これには「WK01」などの凡例の名称が入る End Sub '指定バーの色を変更 Sub Bar_attr(bar As Integer, c As Integer) '何番目のバーか、色番号 On Error GoTo pass '対象のバーを選択 ActiveChart.SeriesCollection(bar).Select 'グラデーションセット Selection.Fill.OneColorGradient Style:=msoGradientVertical, Variant:=4, Degree:=0.231372549019608 Selection.Fill.Visible = True '色をセット Selection.Fill.ForeColor.SchemeColor = c pass: On Error GoTo 0 End Sub
フィールドをWクリックしたらズームさせる
'フィールドをWクリックしたらズームさせる Private Sub ZOOM_FIELD_DblClick(Cancel As Integer) DoCmd.RunCommand acCmdZoomBox End Sub
Outlookを呼び出してMail作成
'Outlookを呼び出してMail作成 Sub OUTLOOK() Dim objOutlook As OUTLOOK.Application Dim objOutlookMsg As OUTLOOK.MailItem Dim objOutlookRecip As OUTLOOK.Recipient Dim objOutlookAttach As OUTLOOK.Attachment Set objOutlook = CreateObject(“Outlook.Application") Set objOutlookMsg = objOutlook.CreateItem(olMailItem) 'メイン With objOutlookMsg .Subject = “title" .Body = “本文" '宛先準備 Set objOutlookRecip = .Recipients.Add(“xxx@bbb.com") objOutlookRecip.Type = olTo Set objOutlookRecip = .Recipients.Add(“zzz@bbb.com") objOutlookRecip.Type = olCC '完成Mailを表示 .Display 'いきなり送付させる場合は下記を使用 '.SEND End With Set objOutlookMsg = Nothing Set objOutlook = Nothing MsgBox “送付完了!" End Sub
フォームフィルター&ソート&リフレッシュ&行保管
Private Sub Form_Load() '表示にフィルターをかける Me.Filter = “xxx=" & ZZZ Me.FilterOn = True 'SORT指定 Me.OrderBy = “ORDER_NUMBER ASC" Me.OrderByOn = True End Sub '編集中の行を保管する Sub SAVE_CURRENT_RECORD() DoCmd.RunCommand acCmdSaveRecord End Sub '画面をリフレッシュ Private Sub BTN_refresh_Click() Me.Requery End Sub